コード例 #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);
        }
コード例 #2
0
        /// <summary>
        /// Возвращает енум == IdState of Ticket
        /// </summary>
        /// <param name="Talon"></param>
        /// <param name="officeID"></param>
        /// <param name="talonID"></param>
        /// <param name="service"></param>
        /// <returns></returns>
        public static GetTicketInformationErrors CheckUsersTalonNumber(out EnquequeResponse Talon, int officeID, int talonID)
        {
            Talon = MainAnswerHelper.mfcservice.GetTicketInformation(officeID, talonID);
            //Talon = new EnquequeResponse { ID = talonID, stateTicket = new StateTicket { idState = 5, description = "обслуживаетмся в окне 281" },services = new MFC.Bot.WebService.Contracts.Service[] { new MFC.Bot.WebService.Contracts.Service { name = "Услуга"} } };
            if (Talon == null)
            {
                return(GetTicketInformationErrors.UnknownError);
            }
            if (string.IsNullOrWhiteSpace(Talon?.stateTicket?.description))
            {
                return(GetTicketInformationErrors.NoExist);
            }

            if (Talon?.stateTicket?.idState != null && Talon?.stateTicket.idState == 4)
            {
                return(GetTicketInformationErrors.Ended);
            }
            if (Talon?.stateTicket?.idState != null && Talon?.stateTicket?.idState == 5)
            {
                return(GetTicketInformationErrors.Waiting);
            }
            if (Talon?.stateTicket?.idState != null && Talon?.stateTicket?.idState == 2)
            {
                return(GetTicketInformationErrors.InProces);
            }
            if (Talon?.stateTicket?.idState != null && Talon?.stateTicket?.idState == 1)
            {
                return(GetTicketInformationErrors.Absence);
            }
            return(GetTicketInformationErrors.Default);
        }
コード例 #3
0
        /// <summary>
        /// Возвращает текст, соответствующий статусу талона с запрошенным номером
        /// </summary>
        /// <param name="botUser"></param>
        /// <param name="office"></param>
        /// <param name="TalonID"></param>
        /// <param name="service"></param>
        /// <param name="textHelper"></param>
        /// <returns></returns>
        public static string GetAnalysedAnswer(DBHelpers.Models.MFCModels.BotUser botUser, DBHelpers.Models.MFCModels.Office office, int TalonID, BotTextHelper textHelper, List <WindowsOffice> windows)
        {
            var talon = new EnquequeResponse();

            switch (CheckUsersTalonNumber(out talon, botUser.OfficeID, TalonID))
            {
            case GetTicketInformationErrors.UnknownError:
                return(textHelper.GetMessage("%ginfuncknow%",
                                             new string[] { "%officename%", "%adress%" },
                                             new string[] { office.DisplayName, office.DisplayAddress }));

            case GetTicketInformationErrors.NoExist:
                return(textHelper.GetMessage("%ginfnoexist%",
                                             new string[] { "%officename%", "%adress%" },
                                             new string[] { office.DisplayName, office.DisplayAddress }));

            case GetTicketInformationErrors.Ended:
                return(textHelper.GetMessage("%ginfended%",
                                             new string[] { "%officename%", "%adress%" },
                                             new string[] { office.DisplayName, office.DisplayAddress }));

            case GetTicketInformationErrors.Absence:
                return(textHelper.GetMessage("%ginfabsebce%",
                                             new string[] { "%officename%", "%adress%" },
                                             new string[] { office.DisplayName, office.DisplayAddress }));

            case GetTicketInformationErrors.Waiting:
                var s = AnaliseTalon(talon, textHelper.GetMessage("%getinfo%") + "\\r\\n\\r\\n" + textHelper.GetMessage("%queue%"), BotTextHelper.DecodeToUtf8(talon.services[0].name), office);
                //сохраняем информацию по талону => делаем его выбранным пользователем
                botUser.TalonID   = TalonID;
                botUser.ServiceID = talon.services[0].id;
                botUser.NowIs     = MFCBotWhatIsHappeningNow.QueueWaiting;
                s += "\\r\\n\\r\\n" + textHelper.GetMessage("%statustext%");
                Logging.Logger.Debug(s);
                return(s);

            case GetTicketInformationErrors.InProces:
                string usefulInf = BotTextHelper.DecodeToUtf8(talon.stateTicket.description);
                //получаем последнее число из строки
                string windowStringID = Regex.Match(usefulInf, @"\d+(?!\D*\d)").Value;
                int    windowID       = int.Parse(windowStringID);
                usefulInf = usefulInf.Replace(windowStringID, windows.FirstOrDefault(x => x.WindowID == windowID).Number.ToString());

                s  = $"\U00002705 {usefulInf}\\r\\n\\r\\n";
                s += AnaliseTalon(talon, textHelper.GetMessage("%getinfo%"), BotTextHelper.DecodeToUtf8(talon.services[0].name), office) + "\\r\\n\\r\\n";
                s += textHelper.GetMessage("%helptext%");
                //Обслуживается => забываем о пользователе. Сессия окончена
                botUser.OfficeID  = 0;
                botUser.TalonID   = 0;
                botUser.ServiceID = 0;
                botUser.NowIs     = MFCBotWhatIsHappeningNow.SettingOffice;
                Logging.Logger.Debug(s);
                return(s);

            default:
                //начальное сообщение
                return(textHelper.GetMessage("%gtinfstart%",
                                             new string[] { "%officename%", "%adress%", "%business%" },
                                             new string[] { office.DisplayName, office.DisplayAddress, MainAnswerHelper.GetBusynessOffice(office.OfficeID) }));
            }
        }