Files
Parasha/SvetoforVKBot/Models/Commands/Registration/GetPincodeCommand.cs
2021-10-20 06:09:18 +03:00

108 lines
4.4 KiB
C#
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
using System;
using System.Collections.Generic;
using System.Data.SqlClient;
using System.Net.Http;
using System.Security.Cryptography;
using System.Text;
using SvetoforVKBot.Models.Updates;
using VkNet;
using VkNet.Enums.SafetyEnums;
using VkNet.Model.Keyboard;
using VkNet.Model.RequestParams;
using System.Linq;
using SvetoforVKBot.Services;
using SvetoforVKBot.Models.Commands.LK;
namespace SvetoforVKBot.Models.Commands.Registration
{
public class GetPincodeCommand
{
public void Execute(RootObject update, VkApi client, SvetoforVKBot.Data.SvetoforVKBotEntities db)
{
var chatId = update.@object.message.from_id;
MessagesSendParams @params = new MessagesSendParams();
var keyboardBuilder = new KeyboardBuilder().Clear();
try
{
if (update.@object.message.text.Length > 0 && update.@object.message.text.Length <= 50)
{
var ids = new long[] { chatId };
string pincode = update.@object.message.text.Trim();
var user = db.Users.Single(usr => usr.chatId == chatId);
string hashCheck = PasswordService.CreateMD5(pincode + chatId.ToString());
if (user.password.Equals(hashCheck))
{
user.isAuthorized = 1;
user.tag = "Подписчик - Регистрация - Пол";
db.SaveChanges();
if (user.reg == 1)
{
ShowLKCommand showLK = new ShowLKCommand();
showLK.Execute(update, client, db);
}
else
{
keyboardBuilder
.AddButton("М", "selectGender-1", KeyboardButtonColor.Primary)
.AddButton("Ж", "selectGender-2", KeyboardButtonColor.Primary)
.AddLine()
.AddButton("Отменить", "startPL", KeyboardButtonColor.Default);
@params.Keyboard = keyboardBuilder.Build();
@params.UserId = chatId;
@params.Message = //1 шаг из 4.
"✅ Авторизация прошла успешно.\n" +
"Выберите на клавиатуре внизу или напишите пол в формате \"М\" или \"Ж\"";
@params.RandomId = GetRandomId();
client.Messages.SendAsync(@params);
}
}
else
{
keyboardBuilder
.AddButton("Отменить", "startPL", KeyboardButtonColor.Default);
@params.Keyboard = keyboardBuilder.Build();
@params.Message = "Вы ввели неверный код подтверждения. Попробуйте ещё раз.";
@params.UserId = chatId;
@params.RandomId = GetRandomId();
client.Messages.SendAsync(@params);
}
}
else
{
@params.Message = "Данные введены некорректно 😕 Напишите, пожалуйста, текст длиной до 50 символов.";
@params.UserId = chatId;
@params.RandomId = GetRandomId();
client.Messages.SendAsync(@params);
}
}
catch (Exception ee)
{
@params.Message = "‼Ошибка в GetFIOCommand: " + ee.Message;
@params.Attachments = null;
@params.Keyboard = null;
@params.UserId = 59111081;
@params.RandomId = GetRandomId();
client.Messages.SendAsync(@params);
}
}
private static readonly RandomNumberGenerator Rng = RandomNumberGenerator.Create();
public int GetRandomId()
{
var intBytes = new byte[4];
Rng.GetBytes(intBytes);
return BitConverter.ToInt32(intBytes, 0);
}
}
}