/// <summary> /// Анализирует полезные данные для генерации талона. Генерирует талон - строку, которая будет отправлена пользователю /// </summary> /// <param name="cacheHelper"></param> /// <param name="talon"></param> /// <param name="message"></param> /// <param name="serviceName"></param> /// <param name="office"></param> /// <returns></returns> public static string AnaliseTalon(EnquequeResponse talon, string message, string serviceName = null, DBHelpers.Models.MFCModels.Office office = null) { if (office != null) { message = message.Replace("%office%", office.DisplayName); } message = message.Replace("%number%", BotTextHelper.GetVKSmileNumber(talon.ID)); if (serviceName != null) { message = message.Replace("%servicename%", serviceName); } //Дата в талоне if (talon.TimeOfReceipt == null || talon.TimeOfReceipt.Year == 0001) { message = message.Replace("%time%", DateTime.Now.ToString("HH:mm dd.MM.yyyy")); } else { message = message.Replace("%time%", talon.TimeOfReceipt.ToString("HH:mm dd.MM.yyyy")); } //перед вами в очереди message = message.Replace("%queuecount%", talon.QueueSize?.toWindows.ToString()); //офис в котором юзер if (office != null) { message = message.Replace("%adress%", office.DisplayAddress); } return(message); }
public async Task <int> AnaliseSearchOfficeResult(List <FuzzySearchResult> result) { string p = ""; switch (result.Count) { case 0: if (botUser.IsNewUser) { await sendHelper.SendText(textHelper.GetMessage("%setofficehelp%")); } else { await sendHelper.SendText(textHelper.GetMessage("%srchofficefail%")); } return(1); case 1: cacheHelper.Remove($"SETOFFICES{botUser.BotUserVKID}"); // изменям информацию по пользователю botUser.OfficeID = result[0].ID; var office = mfcDataOfBot.Offices.FirstOrDefault(x => x.AisMFCID == result[0].ID); if (office.IsOpen == true || result[0].Name == "Ярмарка") // если офис открыт или он ярмарка { //(если офис не центральный и не индустриальный или он ярмарка) и при этом запись в очередь работает if ((result[0].ID != 21 && result[0].ID != 49 || result[0].Name == "Ярмарка") && context.AISMFCServiceStatus.FirstOrDefault(x => x.ServiceName == "enqueue").Status == "ok") { //то даем возможность записать botUser.NowIs = MFCBotWhatIsHappeningNow.SettingOpportunity; await sendHelper.SendText(textHelper.GetMessage("%slctopstart%", new string[] { "%officename%", "%adress%", "%business%" }, new string[] { office.DisplayName, office.DisplayAddress, GetBusynessOffice(office.AisMFCID) })); } else { //иначе отправляем проверять статус //если сервисы проверки статуса талона работают if (context.AISMFCServiceStatus.FirstOrDefault(x => x.ServiceName == "getTicketInformation").Status == "ok" && context.AISMFCServiceStatus.FirstOrDefault(x => x.ServiceName == "getQueueInformation").Status == "ok") { botUser.NowIs = MFCBotWhatIsHappeningNow.GetingTicketInformation; await sendHelper.SendText(textHelper.GetMessage("%gtinfstart%", new string[] { "%officename%", "%adress%", "%business%" }, new string[] { office.DisplayName, office.DisplayAddress, GetBusynessOffice(office.AisMFCID) })); } else { botUser.NowIs = MFCBotWhatIsHappeningNow.SettingOffice; await sendHelper.SendText(textHelper.GetMessage("%getQueueError%")); //Произошла серьезная неполадка \U0001F631 \r\n\U00002705 Пожалуйста повторите запрос позже } } } else { //если офис зарыт await sendHelper.SendText(textHelper.GetMessage("%officeclosed%", new string[] { "%officename%", "%adress%" }, new string[] { office.DisplayName, office.DisplayAddress })); } return(1); default: for (int i = 0; i < result.Count; i++) { office = mfcDataOfBot.Offices.FirstOrDefault(x => x.AisMFCID == result[i].ID); //офис закрыт или открыт if (office.IsOpen == true) { p += BotTextHelper.GetVKSmileNumber(i + 1) + office.DisplayName + $" \U00002600 Открыт\\r\\n\U0001F449 {office.DisplayAddress}" + "\\r\\n" + GetBusynessOffice(office.AisMFCID) + "\\r\\n\\r\\n"; } else { p += BotTextHelper.GetVKSmileNumber(i + 1) + office.DisplayName + $" \U0001F4A4 Закрыт\\r\\n\U0001F449 {office.DisplayAddress}" + "\\r\\n\\r\\n"; } } await sendHelper.SendText(textHelper.GetMessage("%srchofficemanyres%", "%offices%", p)); string Offices = ""; foreach (var item in result) { Offices += item.ID + ";"; } cacheHelper.Set($"SETOFFICES{botUser.BotUserVKID}", Offices, 35); return(1); } }
public async Task <int> AnaliseSearchServiceResult(List <FuzzySearchResult> result) { string message = ""; switch (result.Count) { case 0: await sendHelper.SendText(textHelper.GetMessage("%srchservicefail%")); return(1); case 1: cacheHelper.Remove($"SETSERVICES{botUser.BotUserVKID}"); message = textHelper.GetMessage("%srchserviceoneres%", "%findedservicename%", result[0].Name); var res = mfcservice.GetQueue(result[0].ID, botUser.OfficeID); if (res == null) { await sendHelper.SendText(textHelper.GetMessage("%getQueueError%")); } else { cacheHelper.Set($"SETSERVICE{botUser.BotUserVKID}", result[0].ID, 35); message = message.Replace("%queuecount%", res.Waiting.ToString()); message = message.Replace("%windowcount%", res.Working.ToString()); await sendHelper.SendText(message); } return(1); default: message = textHelper.GetMessage("%srchservicemanyres%"); var partsOfmessage = message.Split(';'); var p = partsOfmessage.First(); for (int i = 0; i < result.Count; i++) { p += BotTextHelper.GetVKSmileNumber(i + 1) + result[i].Name + "\\r\\n\\r\\n"; if (i >= 10 && i % 10 == 0 || i == result.Count - 1) { if (i != result.Count - 1) { await sendHelper.SendText(p); p = ""; } else { await sendHelper.SendText(p + partsOfmessage.Last()); } } } if (requests.Count > 20) { requests.Clear(); await sendHelper.SendText(textHelper.GetMessage("%toomuch%")); return(1); } string Services = ""; foreach (var item in result) { Services += item.ID + ";"; } cacheHelper.Set($"SETSERVICES{botUser.BotUserVKID}", Services, 35); return(1); } }