Example #1
0
        public async Task SosHandler(MessageEventArgs messageObject)
        {
            long   chatid  = messageObject.Message.Chat.Id;
            string message = messageObject.Message.Text;

            int currStep = await provider.userService.GetCurrentActionStep(chatid);

            SosDTO sos = await provider.sosTableServide.FindById(chatid);

            if (currStep == 0)
            {
                await provider.userService.ChangeAction(chatid, "SOS", ++currStep);

                return;
            }
            if (currStep == 1)
            {
                if (message == "Страховой случай" || message == "Аварийный случай")
                {
                    if (message == "Страховой случай")
                    {
                        await client.SendTextMessageAsync(chatid, "Не указано откуда брать данные и куда их слать");

                        return;
                    }
                    else if (message == "Аварийный случай")
                    {
                        await provider.sosTableServide.Create(new SosDTO
                        {
                            ChatId = chatid,
                            Type   = 1
                        });

                        await client.SendTextMessageAsync(chatid, "Сбросьте вашу геолокацию", 0, false, false, 0, KeyBoardHandler.Markup_Back_From_First_Action());

                        await provider.userService.ChangeAction(chatid, "SOS", ++currStep);

                        return;
                    }
                }
                else
                {
                    await client.SendTextMessageAsync(chatid, "Вы выбрали несуществующий вариант");
                }
            }
            if (currStep == 2)
            {
                if (sos.Type == 1)
                {
                    if (messageObject.Message.Location != null)
                    {
                        sos.lautitude  = messageObject.Message.Location.Latitude;
                        sos.longtitude = messageObject.Message.Location.Longitude;
                        await provider.sosTableServide.Update(sos);

                        List <long> lstId = await provider.userService.GetUsersIdByRegion(chatid);

                        UserDTO user = await provider.userService.FindById(chatid);

                        string _message = $"У пилота {user.ChatId} проблемы \n" +
                                          $"свяжитесь с ним по телефону {user.Phone} \n " +
                                          $"Могу добавить еще описание проблемы";

                        foreach (var i in lstId)
                        {
                            await client.SendTextMessageAsync(i, _message);

                            await client.SendLocationAsync(chatid, sos.lautitude, sos.longtitude);
                        }
                        await provider.userService.ChangeAction(chatid, "NULL", 0);

                        await client.SendTextMessageAsync(chatid, "Мы разослали письмо о помощи нашем партнерам");

                        return;
                    }
                }
            }
        }
Example #2
0
        public async Task Response(MessageEventArgs messageObject)
        {
            if (provider == null)
            {
                await client.SendTextMessageAsync(messageObject.Message.Chat.Id, "оч странно");
            }
            long chatid   = messageObject.Message.Chat.Id;
            int  currStep = await provider.userService.GetCurrentActionStep(chatid);

            string messageText = messageObject.Message.Text;
            int    countUser;
            string message;

            if (currStep == 1)
            {
                await client.SendTextMessageAsync(chatid, "Выберите один из вариантов", 0, false, false, 0, KeyBoardHandler.ShowPartners());

                await provider.userService.ChangeAction(chatid, "Партнеры рядом", ++currStep);

                return;
            }
            if (currStep == 2)
            {
                if (messageText == "Просмотр пилотов")
                {
                    await provider.userService.ChangeAction(chatid, "Партнеры рядом", ++currStep);

                    await client.SendTextMessageAsync(chatid, "Выберите один из вариантов", 0, false, false, 0, KeyBoardHandler.ShowPatnersPilot());

                    return;
                }
                else
                {
                    await client.SendTextMessageAsync(chatid, "Вы ввели некорректную команду");
                }
            }
            if (currStep == 3)
            {
                if (messageText == "Из геолокации" || messageText == "Выбрать по региону")
                {
                    countUser = await provider.showUserService.CountUsersAsync();

                    if (messageText == "Из геолокации")
                    {
                        if (countUser > 1)
                        {
                            ProposalDTO proposal = await provider.proposalService.FindById(chatid);

                            UserDTO user = await provider.showUserService.GetFirstUserForCommand(chatid, proposal.Region);

                            message = $"Пилот:{user.FIO} \n" +
                                      $"Телефон:{user.Phone}";
                            await provider.showUserService.ChangeMessageId(chatid, messageObject.Message.MessageId);

                            await client.SendTextMessageAsync(chatid, "Вы можете просмотреть пользователей", 0, false, false, 0, KeyBoardHandler.Markup_Back_From_First_Action());

                            await client.SendTextMessageAsync(chatid, message, 0, false, false, 0, KeyBoardHandler.CallBackShowForUser());

                            return;
                        }
                        else if (countUser == 1)
                        {
                            await client.SendTextMessageAsync(chatid, "К сожалению,вы зарегестрированы один", 0, false, false, 0, KeyBoardHandler.Markup_Back_From_First_Action());

                            return;
                        }
                    }
                    if (messageText == "Выбрать по региону")
                    {
                        if (countUser > 1)
                        {
                            GenerateButtons     buttons  = new GenerateButtons(client, provider);
                            ReplyKeyboardMarkup keyboard = await buttons.GenerateKeyBoards();

                            await client.SendTextMessageAsync(chatid, "Выберите интересующий вас регион", 0, false, false, 0, keyboard);

                            await provider.userService.ChangeAction(chatid, "Партнеры рядом", ++currStep);

                            return;
                        }
                        else if (countUser == 1)
                        {
                            await client.SendTextMessageAsync(chatid, "Вы один зарегестрированный пилот", 0, false, false, 0, KeyBoardHandler.Markup_Back_From_First_Action());

                            return;
                        }
                    }
                }
                else
                {
                    await client.SendTextMessageAsync(chatid, "Вы выбрали несуществующий вариант");

                    await client.SendTextMessageAsync(chatid, "Попробуйте еще раз");
                }
            }
            if (currStep == 4)
            {
                List <string> regions = await provider.regionService.GetAllRegions();

                if (regions.Contains(messageText))
                {
                    UserDTO user = await provider.showUserService.GetFirstUserForCommand(chatid, messageText);

                    await provider.showUserService.ChangeMessageId(chatid, messageObject.Message.MessageId);

                    message = $"Пилот:{user.FIO} \n" +
                              $"Телефон:{user.Phone}";
                    await client.SendTextMessageAsync(chatid, "Вы можете просмотреть пользователей", 0, false, false, 0, KeyBoardHandler.Markup_Back_From_First_Action());

                    await client.SendTextMessageAsync(chatid, message, 0, false, false, 0, KeyBoardHandler.CallBackShowForUser());

                    return;
                }
                else
                {
                    await client.SendTextMessageAsync(chatid, "Вы выбрали несуществующий регион");
                }
            }
        }