コード例 #1
0
        private async void NextButton_Click(object sender, RoutedEventArgs e)
        {
            if ((ValidUsername == true) && (ValidEmail == true) && (ValidPhone == true) && (ValidPassword == true) && (ValidMasterPassword == true))
            {
                string salt = CryptoClass.GetRandomNumber();
                //Отправка Email
                string EmailCode = CryptoClass.GetRandomNumber();
                DatabaseLogicClass.SQLiteExecute("INSERT INTO codes(code_source,code) VALUES ('" + CryptoClass.MD5Hash(EmalTextBox.Text + salt) + "','" + CryptoClass.MD5Hash(EmailCode) + "')");

                await EmailSenderClass.SendEmailAsync("Ваш код для подтверждения e-mail: " + EmailCode, EmalTextBox.Text);

                //MessageBox.Show("Email code: " + EmailCode);

                //Отпрвка SMS
                string SMSCode = CryptoClass.GetRandomNumber();
                DatabaseLogicClass.SQLiteExecute("INSERT INTO codes(code_source,code) VALUES ('" + CryptoClass.MD5Hash(PhoneTextBox.Text + salt) + "','" + CryptoClass.MD5Hash(SMSCode) + "')");
                SMSSenderClass ConfirmSMS_obj = new SMSSenderClass();
                string[]       numbers        = new string[] { PhoneTextBox.Text };
                var            request        = new Request {
                    numbers = numbers, text = SMSCode, channel = "DIRECT"
                };

                ConfirmSMS_obj.sms_send(request);
                //MessageBox.Show("Тук тук халявная SMS: "+SMSCode);

                ConfirmAllWindow ConfirmWindow_obj = new ConfirmAllWindow(EmalTextBox.Text, PhoneTextBox.Text, CryptoClass.MD5Hash(PasswordBox.Password), salt, UsernameTextBox.Text);
                ConfirmWindow_obj.Show();
                Close();
            }
        }
コード例 #2
0
        private async void PhoneConfirmButton_Click(object sender, RoutedEventArgs e)
        {
            if ((OldPhoneValidation == true) && (NewPhoneValidation = true))
            {
                string salt    = CryptoClass.GetRandomNumber();
                string SMSCode = CryptoClass.GetRandomNumber();
                DatabaseLogicClass.SQLiteExecute("INSERT INTO codes(code_source,code) VALUES ('" + CryptoClass.MD5Hash(NewPhoneTextBox.Text + salt) + "','" + CryptoClass.MD5Hash(SMSCode) + "')");
                SMSSenderClass ConfirmSMS_obj = new SMSSenderClass();
                string[]       numbers        = new string[] { NewPhoneTextBox.Text };
                var            request        = new Request {
                    numbers = numbers, text = SMSCode, channel = "DIRECT"
                };
                ConfirmSMS_obj.sms_send(request);

                DEMKAInputBox SMSdemka_obj = new DEMKAInputBox("Ввведите код, отправленный на новый номер телефона:");
                string        InputCode    = SMSdemka_obj.ShowDialog();

                if (InputCode == SMSCode)
                {
                    await DatabaseLogicClass.MySQLExecuteAsync("UPDATE Users SET Phone = '" + CryptoClass.MD5Hash(NewPhoneTextBox.Text) + "' WHERE Phone='" + CryptoClass.MD5Hash(OldPhoneTextBox.Text) + "' ");

                    MessageBox.Show("Успешно обновили номер телефона с " + OldPhoneTextBox.Text + " на " + NewPhoneTextBox.Text);
                }
                else
                {
                    MessageBox.Show("Код подтвержения '" + InputCode + "' не является действительным");
                }
                Close();
            }
        }
コード例 #3
0
        public string[,] GetSMSInfoAPI()
        {
            var StatusDictionary = new Dictionary <string, string>
            {
                { "0", "в очереди" },
                { "1", "доставлено" },
                { "2", "не доставлено" },
                { "3", "передано" },
                { "4", "ожидание статуса сообщения" },
                { "6", "сообщение отклонено" },
                { "8", "на модерации" }
            };

            SMSSenderClass SMSHistory_obj = new SMSSenderClass();
            dynamic        HistoryJSON    = JObject.Parse(SMSHistory_obj.sms_list(new Request {
                page = 1
            }));

            string[,] array = new string[10, 5];
            for (int i = 0; i < 10; i++)
            {
                JObject ThisSMS = HistoryJSON.data[i.ToString()];
                array[i, 0] = (i + 1).ToString();
                array[i, 1] = ThisSMS["number"].ToString();
                array[i, 2] = StatusDictionary[ThisSMS["status"].ToString()];
                array[i, 3] = ThisSMS["cost"].ToString() + " руб.";
                string[] thisarr = ThisSMS["text"].ToString().Replace("\n", " ").Split(' ');
                array[i, 4] = (thisarr[0] == "Расписание") ? thisarr[0] + " " + thisarr[1] : ThisSMS["text"].ToString().Replace("\n", " ");
            }

            return(array);
        }
コード例 #4
0
 private void GetSMSBalance()
 {
     try
     {
         SMSSenderClass sms_obj     = new SMSSenderClass();
         dynamic        BalanceJSON = JObject.Parse(sms_obj.balance());
         BalanceLabel.Content = "Текущий баланс: " + BalanceJSON.data.balance + "₽";
     }
     catch (Newtonsoft.Json.JsonReaderException)
     {
         return;
     }
 }
コード例 #5
0
        private async void BotOnMessageReceived(object sender, MessageEventArgs messageEventArgs)
        {
            var message = messageEventArgs.Message;

            if (message == null || message.Type != MessageType.Text)
            {
                return;
            }

            bool AdminResult = await AdminCheckerAsync(message.Chat.Id.ToString());

            if (AdminResult == false)
            {
                return;
            }

            switch (message.Text.Split(' ').First())
            {
            case "/sms":
                try
                {
                    SMS_number  = (message.Text.Split(' '))[1];
                    SMS_message = (message.Text.Split('"'))[1];

                    ReplyKeyboardMarkup ReplyKeyboard = new[]
                    {
                        new[] { "Да", "Нет" },
                    };

                    await Bot.SendTextMessageAsync(
                        message.Chat.Id,
                        "Вы действительно хотите отправить сообщение \"" + SMS_message + "\" на номер " + SMS_number + "?",
                        replyMarkup : ReplyKeyboard);
                }
                catch
                {
                    await Bot.SendTextMessageAsync(
                        message.Chat.Id,
                        "Синтаксис использования команды:\n/sms номер_телефона \"Сообщение\"");
                }
                break;

            case "/balance":

                SMSSenderClass sms_obj     = new SMSSenderClass();
                dynamic        BalanceJSON = JObject.Parse(sms_obj.balance());
                string         out_str     = "Текущий баланс: " + BalanceJSON.data.balance + "₽";

                await Bot.SendTextMessageAsync(
                    message.Chat.Id,
                    out_str);

                break;

            //Доделать
            case "/history":

                var FormatDictionary = new Dictionary <string, string>
                {
                    { "1", "1️⃣" },
                    { "2", "2️⃣" },
                    { "3", "3️⃣" },
                    { "4", "4️⃣" },
                    { "5", "5️⃣" }
                };

                string         OutString      = "Последние 5 отправленных сообщений:\n";
                SMSSenderClass SMSHistory_obj = new SMSSenderClass();
                dynamic        HistoryJSON    = JObject.Parse(SMSHistory_obj.sms_list(new Request {
                    page = 1
                }));

                for (int i = 0; i < 5; i++)
                {
                    JObject ThisSMS = HistoryJSON.data[i.ToString()];
                    OutString += FormatDictionary[(i + 1).ToString()] + " +" + ThisSMS["number"] + " \"" + ThisSMS["text"] + "\"\n\n";
                }

                await Bot.SendTextMessageAsync(
                    message.Chat.Id,
                    OutString);

                break;

            case "Да":

                if ((Convert.ToString(SMS_message) != null) || (Convert.ToString(SMS_number) != null))
                {
                    SMSSenderClass TelegramSMS_obj = new SMSSenderClass();
                    string[]       numbers         = new string[] { SMS_number };
                    TelegramSMS_obj.sms_send(new Request {
                        numbers = numbers, text = SMS_message, channel = "DIRECT"
                    });
                    dynamic TelegramBalanceJSON = JObject.Parse(TelegramSMS_obj.balance());


                    await Bot.SendTextMessageAsync(
                        message.Chat.Id,
                        "Сообщение успешно отправлено, остаток на балансе " + TelegramBalanceJSON.data.balance + "₽",
                        replyMarkup : new ReplyKeyboardRemove());
                }
                else
                {
                    await Bot.SendTextMessageAsync(
                        message.Chat.Id,
                        "Что-то пошло не так при отправке сообщения 😔\nПовторно воспользуйтесь командой /sms",
                        replyMarkup : new ReplyKeyboardRemove());
                }

                SMS_message = null;
                SMS_User    = SMS_message;

                break;

            case "/user":
                try
                {
                    SMS_User = (message.Text.Split(' '))[1];
                    if (IntChecker(SMS_User) == true)
                    {
                        ReplyKeyboardMarkup UserReplyKeyboard = new[]
                        {
                            new[] { "Добавление", "Удаление" },
                        };

                        await Bot.SendTextMessageAsync(
                            message.Chat.Id,
                            "Доступные действия с пользователем " + SMS_User + ":",
                            replyMarkup : UserReplyKeyboard);
                    }
                    else
                    {
                        await Bot.SendTextMessageAsync(
                            message.Chat.Id,
                            "Некорректный ввод пользователя, попробуйте заново", replyMarkup : new ReplyKeyboardRemove());
                    }
                }
                catch
                {
                    await Bot.SendTextMessageAsync(
                        message.Chat.Id,
                        "Синтаксис использования команды:\n/user id_пользователя", replyMarkup : new ReplyKeyboardRemove());
                }

                break;

            case "Добавление":
                if (await DatabaseLogicClass.MySQLExecuteAsync("INSERT INTO TGAdmins(AdminTG) VALUES('" + SMS_User + "')") == true)
                {
                    await Bot.SendTextMessageAsync(
                        message.Chat.Id,
                        "Добавление пользователя " + SMS_User + " успешно", replyMarkup : new ReplyKeyboardRemove());
                }

                SMS_User = null;
                break;

            case "Удаление":
                if (await DatabaseLogicClass.MySQLExecuteAsync("DELETE FROM TGAdmins WHERE AdminTG = '" + SMS_User + "'") == true)
                {
                    await Bot.SendTextMessageAsync(
                        message.Chat.Id,
                        "Удаление пользователя " + SMS_User + " успешно", replyMarkup : new ReplyKeyboardRemove());
                }
                SMS_User = null;
                break;



            default:
                const string usage = @"
Доступные команды:
<b>/sms</b> - отправка сообщения
<b>/balance</b> - текущий баланс
<b>/history</b> - последние отправленные сообщения
<b>/user</b> - управление пользователями";

                await Bot.SendTextMessageAsync(
                    message.Chat.Id,
                    usage,
                    parseMode : ParseMode.Html,
                    replyMarkup : new ReplyKeyboardRemove());

                break;
            }
        }
コード例 #6
0
        private async void FinalSendButton_Click(object sender, RoutedEventArgs e)
        {
            //Отправка произовольного текста произвольному получателю
            if ((TextSecondRadioButton.IsChecked == true) && (NumbersSecondRadioButton.IsChecked == true))
            {
                if ((NumbersToSend.Text != "") && (TextToSend.Text != ""))
                {
                    if (MessageBox.Show("Вы действительно хотите отправить сообщение '" + TextToSend.Text + "' на номер " + NumbersToSend.Text + "?", "Отправка сообщения", MessageBoxButton.YesNo) == MessageBoxResult.Yes)
                    {
                        SMSSenderClass sms_obj = new SMSSenderClass();
                        string[]       numbers = new string[] { NumbersToSend.Text };
                        var            request = new Request {
                            numbers = numbers, text = TextToSend.Text, channel = "DIRECT"
                        };
                        if (sms_obj.sms_send(request) != "false")
                        {
                            MessageBox.Show("Успешная отправка сообщения");
                        }
                    }
                }
                else
                {
                    MessageBox.Show("Сообщение и/или номер отправления не могут быть пустыми");
                }
            }

            //Отправка произвольного текста всем получателям из БД
            else if ((TextSecondRadioButton.IsChecked == true) && (NumbersFirstRadioButton.IsChecked == true))
            {
                if (TextToSend.Text != "")
                {
                    SMSSenderClass sms_obj      = new SMSSenderClass();
                    string         bufnumberstr = await DatabaseLogicClass.MySQLGetAsync("SELECT phone FROM Phones");

                    string[] numbers = bufnumberstr.Split(',');
                    Array.Resize(ref numbers, numbers.Length - 1);
                    var request = new Request {
                        numbers = numbers, text = TextToSend.Text, channel = "DIRECT"
                    };
                    if (sms_obj.sms_send(request) != "false")
                    {
                        MessageBox.Show("Успешная отправка сообщения всем получателям из БД!");
                    }
                }
                else
                {
                    MessageBox.Show("Сообщение для отправки не может быть пустым");
                }
            }

            //Отправка текста из БД произвольному получателю
            else if ((TextFirstRadioButton.IsChecked == true) && (NumbersSecondRadioButton.IsChecked == true) && (GroupsComboBox.SelectedIndex != -1))
            {
                if (NumbersToSend.Text != "")
                {
                    if (SaveDatabaseCheckBox.IsChecked == true)
                    {
                        string thisgroup = GroupsComboBox.SelectedValue.ToString();
                        await DatabaseLogicClass.MySQLExecuteAsync("INSERT INTO Phones(phone,groups) VALUES (\"" + NumbersToSend.Text + "\",\"" + thisgroup + "\");");

                        MessageBox.Show("Успешное добавление нового пользователя с " + thisgroup + " и номером телефона " + NumbersToSend.Text + "!");
                    }

                    if (SendSMSCheckBox.IsChecked == true)
                    {
                        ParseJSONLogicClass thisjson_obj = new ParseJSONLogicClass();
                        thisjson_obj.GetTimetableJSON();
                        string selectedgroup   = GroupsComboBox.SelectedValue.ToString();
                        string thisgroupresult = thisjson_obj.GetTimetableByGroup(selectedgroup);

                        SMSSenderClass sms_obj = new SMSSenderClass();
                        if (thisgroupresult == "false")
                        {
                            if (MessageBox.Show("Нет изменений в расписании для группы " + selectedgroup + "\nХотите отправить оповещение об этом?", "Нет изменений", MessageBoxButton.YesNo) == MessageBoxResult.Yes)
                            {
                                string[] numbers = new string[] { NumbersToSend.Text };
                                var      request = new Request {
                                    numbers = numbers, text = "Нет изменений в расписании группы " + selectedgroup, channel = "DIRECT"
                                };
                                if (sms_obj.sms_send(request) != "false")
                                {
                                    MessageBox.Show("Успешная отправка сообщения");
                                }
                            }
                        }
                        else
                        {
                            string[] numbers = new string[] { NumbersToSend.Text };
                            var      request = new Request {
                                numbers = numbers, text = thisgroupresult, channel = "DIRECT"
                            };
                            if (sms_obj.sms_send(request) != "false")
                            {
                                MessageBox.Show("Успешная отправка сообщения");
                            }
                        }
                    }
                }
                else
                {
                    MessageBox.Show("Номер отправления не может быть пустым");
                }
            }

            //Отправка сообщения из БД получателям из БД
            else if ((TextFirstRadioButton.IsChecked == true) && (NumbersFirstRadioButton.IsChecked == true))
            {
                ParseJSONLogicClass mainjson_obj = new ParseJSONLogicClass();
                mainjson_obj.GetTimetableJSON();

                string phonesbufresult = await DatabaseLogicClass.MySQLGetAsync("SELECT phone FROM Phones");

                string groupsbufresult = await DatabaseLogicClass.MySQLGetAsync("SELECT groups FROM Phones");

                string[] phonesarr = phonesbufresult.Split(',');
                Array.Resize(ref phonesarr, phonesarr.Length - 1);

                string[] groupsarr = groupsbufresult.Split(',');
                Array.Resize(ref groupsarr, groupsarr.Length - 1);

                int globalcounter = 0;
                for (int i = 0; i < phonesarr.Length; i++)
                {
                    string thisgroupresult = mainjson_obj.GetTimetableByGroup(groupsarr[i]);
                    if (thisgroupresult != "false")
                    {
                        SMSSenderClass sms_obj = new SMSSenderClass();

                        string[] numbers = new string[] { phonesarr[i] };
                        var      request = new Request {
                            numbers = numbers, text = thisgroupresult, channel = "DIRECT"
                        };
                        if (sms_obj.sms_send(request) != "false")
                        {
                            globalcounter++;
                        }
                    }
                }
                MessageBox.Show("Отправлено " + globalcounter.ToString() + " сообщений из " + phonesarr.Length.ToString());
            }

            GetSMSBalance();
            TextToSend.Text    = "";
            NumbersToSend.Text = "";
        }