public MFCBotModel Update(string key, MFCBotContext dbContext) { Remove(key); var dataOfBot = new MFCBotModel(dbContext); Set(key, dataOfBot); return(dataOfBot); }
public MainAnswerHelper(DBHelpers.Models.MFCModels.BotUser _botUser, MFCBotContext _context, BotUserRequest _thisRequest, List <VKApiRequestModel> _requests) { context = _context; botUser = _botUser; thisRequest = _thisRequest; requests = _requests; string key = "MFCDATAOFBOT"; var datafromCache = cacheHelper.Get(key); if (datafromCache == null) { mfcDataOfBot = cacheHelper.Update(key, context); } else { mfcDataOfBot = (MFCBotModel)datafromCache; } if (botUser.NowIs != MFCBotWhatIsHappeningNow.SettingOffice) { var usersOffice = mfcDataOfBot.Offices.FirstOrDefault(x => x.AisMFCID == botUser.OfficeID); if (usersOffice.Name == "Ярмарка") { usersOffice.OfficeID = 326; } //получаем все секции, которые относятся к выбранному филиалу mfcDataOfBot.Sections = mfcDataOfBot.AllSections. Where(x => mfcDataOfBot.SectionOffices. Where(z => z.OfficeID == usersOffice.OfficeID). Select(y => y.SectionID).Contains(x.SectionID)).DistinctBy(x => x.Name).ToList(); //сохраняем из них только листья mfcDataOfBot.RetainLeafs(); } sendHelper = new ApiRouter(SocialNetworkType.VK, null, botUser, requests); textHelper = new BotTextHelper(botUser.Locale, SocialNetworkType.VK, mfcDataOfBot.Texts); }
public async Task <int> AnaliseCommands(string query) { switch (query) { case "milk": switch (botUser.NowIs) { case MFCBotWhatIsHappeningNow.GetingTicketInformation: var office = mfcDataOfBot.Offices.FirstOrDefault(x => x.AisMFCID == botUser.OfficeID); botUser.NowIs = MFCBotWhatIsHappeningNow.SettingService; botUser.TalonID = 0; botUser.ServiceID = 0; await SelectSendSetTenPopularServices(office.DisplayName, office.AisMFCID, office.DisplayAddress); return(1); default: return(0); } case "привет": case "здарова": case "привяу": case "здравствуй": case "здравствуйте": case "добрый день": case "добрый вечер": case "доброе утро": case "hi": case "hello": case "hey": await sendHelper.SendText(textHelper.GetMessage("%hello%")); goto case "help"; case "спасибо": case "благодарю": case "thanks": await sendHelper.SendText(textHelper.GetMessage("%thanks%")); return(1); case "прости": case "простите": case "сорян": case "извините": case "sorry": await sendHelper.SendText(textHelper.GetMessage("%sorry%")); return(1); case "пока": case "до свидания": case "досвидули": case "goodbye": case "bye": case "bye bye": await sendHelper.SendText(textHelper.GetMessage("%bye%")); return(1); case "вопрос": //добавлена команда "вопрос" await sendHelper.SendText(textHelper.GetMessage("%question%")); cacheHelper.Set($"QUESTION{botUser.BotUserVKID}", 1, 35); return(1); case "отмена": case "start": botUser.OfficeID = 0; botUser.TalonID = 0; botUser.ServiceID = 0; botUser.NowIs = MFCBotWhatIsHappeningNow.SettingOffice; botUser.ModifiedDate = DateTime.Now; cacheHelper.Clear(botUser.BotUserVKID); await sendHelper.SendText(textHelper.GetMessage("%setofficehelp%")); return(1); case "помощь": case "help": cacheHelper.Clear(botUser.BotUserVKID); switch (botUser.NowIs) { case MFCBotWhatIsHappeningNow.SettingOffice: await sendHelper.SendText(textHelper.GetMessage("%setofficerealhelp%")); return(1); case MFCBotWhatIsHappeningNow.SettingService: SetTenPopularServices(false); await sendHelper.SendText(textHelper.GetMessage("%setservicehelp%")); return(1); case MFCBotWhatIsHappeningNow.SettingOpportunity: await sendHelper.SendText(textHelper.GetMessage("%slctophelp%")); return(1); case MFCBotWhatIsHappeningNow.GetingTicketInformation: await sendHelper.SendText(textHelper.GetMessage("%gtinfhelp%")); return(1); default: return(0); } case "назад": case "back": switch (botUser.NowIs) { case MFCBotWhatIsHappeningNow.SettingOffice: cacheHelper.Clear(botUser.BotUserVKID); await sendHelper.SendText(textHelper.GetMessage("%setofficehelp%")); return(1); case MFCBotWhatIsHappeningNow.SettingService: var data = cacheHelper.Get($"SETSERVICES{botUser.BotUserVKID}"); if (data == null || data.ToString().Last() == '¡') //если кэш пуст, либо в кэше хранятся данные, которые относятся к 10ки популярных услуг { cacheHelper.Clear(botUser.BotUserVKID); if (context.AISMFCServiceStatus.FirstOrDefault(x => x.ServiceName == "enqueue").Status == "ok") { botUser.NowIs = MFCBotWhatIsHappeningNow.SettingOpportunity; var office = mfcDataOfBot.Offices.FirstOrDefault(x => x.AisMFCID == botUser.OfficeID); await sendHelper.SendText(textHelper.GetMessage("%slctopstart%", new string[] { "%officename%", "%adress%", "%business%" }, new string[] { office.DisplayName, office.DisplayAddress, GetBusynessOffice(office.AisMFCID) })); } else { goto case MFCBotWhatIsHappeningNow.SettingOpportunity; } } else { //возвращаем к началу этапа SettingService var office = mfcDataOfBot.Offices.FirstOrDefault(x => x.AisMFCID == botUser.OfficeID); await SelectSendSetTenPopularServices(office.DisplayName, office.AisMFCID, office.DisplayAddress); } return(1); case MFCBotWhatIsHappeningNow.SettingOpportunity: cacheHelper.Clear(botUser.BotUserVKID); botUser.NowIs = MFCBotWhatIsHappeningNow.SettingOffice; botUser.OfficeID = 0; botUser.ServiceID = 0; botUser.TalonID = 0; await sendHelper.SendText(textHelper.GetMessage("%setofficehelp%")); return(1); case MFCBotWhatIsHappeningNow.GetingTicketInformation: cacheHelper.Clear(botUser.BotUserVKID); var usersOffice = mfcDataOfBot.Offices.FirstOrDefault(x => x.AisMFCID == botUser.OfficeID); if ((usersOffice.AisMFCID != 21 && usersOffice.AisMFCID != 49 || usersOffice.DisplayName == "Ярмарка") && 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[] { usersOffice.DisplayName, usersOffice.DisplayAddress, GetBusynessOffice(usersOffice.AisMFCID) })); } else { botUser.NowIs = MFCBotWhatIsHappeningNow.SettingOffice; botUser.OfficeID = 0; botUser.ServiceID = 0; botUser.TalonID = 0; await sendHelper.SendText(textHelper.GetMessage("%setofficehelp%")); } return(1); default: return(0); } case "update": mfcDataOfBot = cacheHelper.Update("MFCDATAOFBOT", context); if (mfcDataOfBot != null) { await sendHelper.SendText(textHelper.GetMessage("%updatecachesuccess%")); } else { await sendHelper.SendText(textHelper.GetMessage("%updatecachefail%")); } return(1); case "getinfo": case "статус": switch (botUser.NowIs) { case MFCBotWhatIsHappeningNow.QueueWaiting: Logging.Logger.Debug("qwaiting status"); var office = mfcDataOfBot.Offices.FirstOrDefault(x => x.AisMFCID == botUser.OfficeID); var message = Analiser.GetAnalysedAnswer(botUser, office, (int)botUser.TalonID, textHelper, mfcDataOfBot.WindowsOffices); await sendHelper.SendText(message); return(1); default: return(0); } case "finish": botUser.NowIs = MFCBotWhatIsHappeningNow.SettingOffice; botUser.ModifiedDate = DateTime.Now; botUser.TalonID = 0; botUser.ServiceID = 0; botUser.OfficeID = 0; cacheHelper.Clear(botUser.BotUserVKID); await sendHelper.SendText(textHelper.GetMessage("%finish%", "%window%", "номер окна")); return(1); } return(0); }
public SearchHelper(MFCBotModel _mfcDataOfBot) { mfcDataOfBot = _mfcDataOfBot; }