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; } } } }
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, "Вы выбрали несуществующий регион"); } } }