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 == "Insurance" || message == "Accident")
                {
                    if (message == "Insurance")
                    {
                        await client.SendTextMessageAsync(chatid, "Error data");

                        return;
                    }
                    else if (message == "Accident")
                    {
                        await provider.sosTableServide.Create(new SosDTO
                        {
                            ChatId = chatid,
                            Type   = 1
                        });

                        await client.SendTextMessageAsync(chatid, "your geolocation", 0, false, false, 0, KeyboardHandler.Markup_Back_From_First_Action());

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

                        return;
                    }
                    else
                    {
                        await client.SendTextMessageAsync(chatid, "Wrong option");
                    }
                }

                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 = $"Pilot {user.ChatId} has problem \n" +
                                              $"Tel. {user.Phone} \n " +
                                              $"Description";

                            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, "The problem reported.");

                            return;
                        }
                    }
                }
            }
        }
        public async ValueTask <SosDTO> FindById(long chatid)
        {
            SosDTO sos = await sosTableRepository.Get().FirstOrDefaultAsync(i => i.ChatId == chatid);

            return(sos);
        }
 public async Task Create(SosDTO sos)
 {
     await sosTableRepository.Create(sos);
 }
 public async Task Update(SosDTO sos)
 {
     await sosTableRepository.Update(sos);
 }
Esempio n. 5
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;
                    }
                }
            }
        }