Exemple #1
0
        /// <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);
        }
Exemple #2
0
        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);
            }
        }
Exemple #3
0
        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);
            }
        }