示例#1
0
        public MFCBotModel Update(string key, MFCBotContext dbContext)
        {
            Remove(key);
            var dataOfBot = new MFCBotModel(dbContext);

            Set(key, dataOfBot);
            return(dataOfBot);
        }
示例#2
0
        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);
        }
示例#3
0
        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);
        }
示例#4
0
 public SearchHelper(MFCBotModel _mfcDataOfBot)
 {
     mfcDataOfBot = _mfcDataOfBot;
 }