コード例 #1
0
        private async Task <IActionResult> AddHelpDeskAnswer()
        {
            try
            {
                HelpNumber = Convert.ToInt32(OriginalMessage.Substring(AddCommentForceReply.Length));

                HelpDesk = HelpDeskFunction.HelpDeskFindByNumber(HelpNumber);

                if (HelpDesk != null)
                {
                    HelpDesk   = HelpDeskFunction.AddAnswerComment(HelpDesk.Id, FollowerId, ReplyToMessageText);
                    BotMessage = new AdminHelpDeskMessage(HelpDesk, FollowerId);
                    await SendMessage(BotMessage.BuildMsg());

                    //Уведомляем всех сотрудников
                    BotMessage = new HelpDeskActionNotifiMessage(HelpDesk, HelpDesk.HelpDeskAnswer.LastOrDefault());
                    await SendMessageAllBotEmployeess(BotMessage.BuildMsg());
                }

                return(OkResult);
            }

            catch
            {
                return(OkResult);
            }
        }
コード例 #2
0
        private async Task <IActionResult> CloseHelpDesk()
        {
            var WhoItWorkNow = HelpDeskFunction.WhoItWorkNow(HelpDeskId);

            if (WhoItWorkNow.Follower.Id == FollowerId)
            {
                HelpDesk   = HelpDeskFunction.HelpDeskClosed(HelpDeskId, FollowerId);
                BotMessage = new AdminHelpDeskMessage(HelpDesk);
                await EditMessage(BotMessage.BuildMsg());

                //уведомляем всех сотрудников
                BotMessage = new HelpDeskActionNotifiMessage(HelpDesk, HelpDesk.HelpDeskAnswer.LastOrDefault());
                await SendMessageAllBotEmployeess(BotMessage.BuildMsg());

                //уведомляем пользователя который создал заявку о том что заявка закрыта
                BotMessage = new HelpDeskEditorMessage(HelpDesk);
                await SendMessage(HelpDesk.Follower.ChatId, BotMessage.BuildMsg());

                return(OkResult);
            }

            else
            {
                await SendMessage(new BotMessage { TextMessage = "Заявка в обработке у " + WhoItWorkNow.Follower.FirstName + " " + WhoItWorkNow.Follower.LastName });

                return(OkResult);
            }
        }
コード例 #3
0
        private async Task <IActionResult> SendHelpDesk()
        {
            try
            {
                if (HelpDeskId == 0)
                {
                    HelpNumber = Convert.ToInt32(CommandName.Substring(7));
                    HelpDesk   = HelpDeskFunction.HelpDeskFindByNumber(HelpNumber);
                }

                if (HelpDeskId > 0)
                {
                    HelpDesk = HelpDeskFunction.GetHelpDesk(HelpDeskId);
                }

                if (HelpDesk != null)
                {
                    AdminHelpDeskMessage adminHelpDesk = new AdminHelpDeskMessage(HelpDesk, FollowerId);
                    await SendMessage(adminHelpDesk.BuildMsg());
                }

                return(OkResult);
            }

            catch
            {
                return(OkResult);
            }
        }
コード例 #4
0
        private async Task <IActionResult> FreeHelpDesk()
        {
            try
            {
                using (MarketBotDbContext db = new MarketBotDbContext())
                {
                    var Help = db.HelpDesk.Where(h => h.Id == HelpDeskId).Include(h => h.HelpDeskInWork)
                               .Include(h => h.HelpDeskAnswer).FirstOrDefault();

                    var in_work = Help.HelpDeskInWork.OrderByDescending(h => h.Id).FirstOrDefault();

                    if (!await Processing.CheckIsDone(Help) && await Processing.CheckInWork(Help))
                    {
                        Help.InWork = false;
                        int a = db.SaveChanges();
                        AdminHelpDeskMsg = new AdminHelpDeskMessage(Help, FollowerId);
                        await EditMessage(await AdminHelpDeskMsg.BuldMessage());

                        await Processing.NotifyChanges("Пользователь: " + GeneralFunction.FollowerFullName(FollowerId) + " освободил заявку №" + Help.Number.ToString(), Help.Id);

                        return(OkResult);
                    }

                    else
                    {
                        return(NotFoundResult);
                    }
                }
            }

            catch
            {
                return(NotFoundResult);
            }
        }
コード例 #5
0
        private async Task <IActionResult> SendHelpDesk(int Id)
        {
            if (Id > 0)
            {
                HelpDesk = HelpDeskFunction.GetHelpDesk(Id);
            }

            if (HelpDesk != null)
            {
                AdminHelpDeskMessage adminHelpDesk = new AdminHelpDeskMessage(HelpDesk, FollowerId);
                await SendMessage(adminHelpDesk.BuildMsg());
            }

            return(OkResult);
        }
コード例 #6
0
        private async Task <IActionResult> SendHelpDesk()
        {
            try
            {
                int Number = 0;

                HelpDesk Help = new HelpDesk();

                if (HelpDeskId == 0)
                {
                    Number = Convert.ToInt32(CommandName.Substring(7));
                }

                using (MarketBotDbContext db = new MarketBotDbContext())
                {
                    if (HelpDeskId == 0 && Number > 0)
                    {
                        Help = db.HelpDesk.Where(h => h.Number == Number).Include(h => h.HelpDeskAnswer).Include(h => h.HelpDeskAttachment).Include(h => h.HelpDeskInWork).FirstOrDefault();
                    }

                    if (HelpDeskId > 0 && Number == 0)
                    {
                        Help = db.HelpDesk.Where(h => h.Id == HelpDeskId).Include(h => h.HelpDeskAnswer).Include(h => h.HelpDeskAttachment).Include(h => h.HelpDeskInWork).FirstOrDefault();
                    }


                    if (Help != null)
                    {
                        AdminHelpDeskMessage adminHelpDesk = new AdminHelpDeskMessage(Help, FollowerId);
                        await SendMessage(await adminHelpDesk.BuldMessage());

                        return(OkResult);
                    }

                    return(OkResult);
                }
            }

            catch
            {
                return(OkResult);
            }
        }
コード例 #7
0
        private async Task <IActionResult> SaveHelpDesk(int HelpDeskId)
        {
            if (!FollowerFunction.IsBlocked(FollowerId))
            {
                var Help = HelpDeskFunction.SaveHelpDesk(HelpDeskId);

                BotMessage = new HelpDeskEditorMessage(Help);
                await EditMessage(BotMessage.BuildMsg());

                AdminHelpDeskMessage adminHelpDesk = new AdminHelpDeskMessage(Help);
                await base.SendMessageAllBotEmployeess(adminHelpDesk.BuildMsg());
            }

            else
            {
                await SendMessage(new BotMessage { TextMessage = "Пользователь заблокирован!" });
            }

            return(OkResult);
        }
コード例 #8
0
        private async Task <IActionResult> SaveHelpDesk(int HelpDeskId)
        {
            using (MarketBotDbContext db = new MarketBotDbContext())
            {
                var Help = db.HelpDesk.Where(h => h.Id == HelpDeskId && h.Send == false).FirstOrDefault();

                var LastHelp = db.HelpDesk.Where(h => h.Send == true).OrderByDescending(h => h.Number).Include(h => h.HelpDeskAttachment).FirstOrDefault();

                if (Help != null)
                {
                    int number = 1;

                    if (LastHelp != null)
                    {
                        number = Convert.ToInt32(LastHelp.Number) + 1;
                    }

                    Help.Number    = number;
                    Help.Send      = true;
                    Help.Timestamp = DateTime.Now;
                    Help.InWork    = false;
                    Help.Closed    = false;

                    db.SaveChanges();

                    HelpDeskEditorMsg = new HelpDeskEditorMessage(Help);
                    var message = HelpDeskEditorMsg.BuildMessage();
                    await EditMessage(message);

                    AdminHelpDeskMessage adminHelpDesk = new AdminHelpDeskMessage(Help.Id);
                    await base.SendMessageAllBotEmployeess(await adminHelpDesk.BuldMessage());

                    return(OkResult);
                }

                else
                {
                    return(NotFoundResult);
                }
            }
        }
コード例 #9
0
        private async Task <IActionResult> AddHelpDeskAnswer()
        {
            try
            {
                int number = Convert.ToInt32(OriginalMessage.Substring(AddCommentForceReply.Length));
                using (MarketBotDbContext db = new MarketBotDbContext())
                {
                    var Help = db.HelpDesk.Where(h => h.Number == number).Include(h => h.HelpDeskInWork)
                               .Include(h => h.HelpDeskAnswer).FirstOrDefault();

                    //Проверяем находится ли заявка в обработке у этого пользователя и не является ли она закрытой
                    if (Help != null && await Processing.CheckInWork(Help) && !await Processing.CheckIsDone(Help))
                    {
                        HelpDeskAnswer deskAnswer = new HelpDeskAnswer {
                            HelpDeskId = Help.Id, FollowerId = FollowerId, Timestamp = DateTime.Now, Text = ReplyToMessageText
                        };
                        db.HelpDeskAnswer.Add(deskAnswer);
                        if (db.SaveChanges() > 0)
                        {
                            Help.HelpDeskAnswer.Add(deskAnswer);
                            AdminHelpDeskMsg = new AdminHelpDeskMessage(Help, FollowerId);
                            await SendMessage(await AdminHelpDeskMsg.BuldMessage());

                            await Processing.NotifyChanges("К заявке №" + Help.Number.ToString() + " добавлен комментарий.Пользователь: " + GeneralFunction.FollowerFullName(FollowerId), Help.Id);
                        }
                        return(OkResult);
                    }

                    else
                    {
                        return(NotFoundResult);
                    }
                }
            }

            catch
            {
                return(NotFoundResult);
            }
        }
コード例 #10
0
        private async Task <IActionResult> CloseHelpDesk()
        {
            try
            {
                using (MarketBotDbContext db = new MarketBotDbContext())
                {
                    var Help = db.HelpDesk.Where(h => h.Id == HelpDeskId).Include(h => h.HelpDeskInWork)
                               .Include(h => h.HelpDeskAnswer).FirstOrDefault();

                    var in_work = Help.HelpDeskInWork.OrderByDescending(h => h.Id).FirstOrDefault();

                    //Проверяем находится ли заявка в обработке у этого пользователя и не является ли она закрытой
                    if (Help != null && await Processing.CheckInWork(Help) && !await Processing.CheckIsDone(Help))
                    {
                        int Save = 0; // 1- данные сохранены.  0-нет

                        //ищем последний комментарий пользователя где поле Closed равно НУЛЛ.
                        //Т.е мы хотим к изменить этот коммент добавив инф. о том что пользователь заявку закрывает
                        var answer = Help.HelpDeskAnswer.Where(h => h.FollowerId == FollowerId && h.Closed == null).OrderByDescending(h => h.Id).FirstOrDefault();

                        if (answer != null)
                        {
                            Help.Closed            = true;
                            answer.Closed          = true;
                            answer.ClosedTimestamp = DateTime.Now;
                            Save = db.SaveChanges();
                            FreeHelpDeskDb(Help, in_work);
                        }

                        /// ситуация когда Добавлял комментарии один сотурдник, А потом этоу заявку "Отжал" и Взял себе другой,
                        /// что бы просто закрыть ее без добавления комментариеВ
                        else
                        {
                            answer = new HelpDeskAnswer {
                                Text = String.Empty, FollowerId = FollowerId, HelpDeskId = Help.Id, Timestamp = DateTime.Now, ClosedTimestamp = DateTime.Now, Closed = true
                            };
                            db.HelpDeskAnswer.Add(answer);
                            Help.Closed = true;
                            Save        = db.SaveChanges();
                            // освобождаем заявку
                            FreeHelpDeskDb(Help, in_work);


                            if (Save > 0)
                            {
                                Help.HelpDeskAnswer.Add(answer);
                            }
                        }

                        if (Save > 0) // Если новые данные сохранилсь в БД то создаем сообещние и отправляем
                        {
                            AdminHelpDeskMsg = new AdminHelpDeskMessage(Help, FollowerId);
                            await EditMessage(await AdminHelpDeskMsg.BuldMessage());

                            await Processing.NotifyChanges("Заявка №" + Help.Number.ToString() + " закрыта. Пользователь: " + GeneralFunction.FollowerFullName(FollowerId), Help.Id);

                            //Отправляем сообщение пользователю о том что его заявка закрыта
                            long   ChatId = db.Follower.Where(f => f.Id == Help.FollowerId).FirstOrDefault().ChatId;
                            string text   = "Заявка №" + Help.Number.ToString() + " Закрыта" + Bot.BotMessage.NewLine() + "Комментарий:" + answer.Text;
                            await SendMessage(ChatId, new BotMessage { TextMessage = text });
                        }

                        return(OkResult);
                    }


                    else
                    {
                        return(NotFoundResult);
                    }
                }
            }

            catch
            {
                return(NotFoundResult);
            }
        }
コード例 #11
0
        private async Task <IActionResult> TakeHelpDesk()
        {
            try
            {
                using (MarketBotDbContext db = new MarketBotDbContext())
                {
                    var Help = db.HelpDesk.Where(h => h.Id == HelpDeskId).Include(h => h.HelpDeskAnswer).
                               Include(h => h.HelpDeskAttachment).Include(h => h.HelpDeskInWork).FirstOrDefault();

                    if (Help != null && Help.Closed == false && Help.InWork == false) // Заявка не закрыта и не находится в обработке. Значит тек. пользвоателй берет ее в обработку
                    {
                        HelpDeskInWork work = new HelpDeskInWork {
                            FollowerId = FollowerId, HelpDeskId = Help.Id, Timestamp = DateTime.Now, InWork = true
                        };
                        Help.InWork = true;
                        db.HelpDeskInWork.Add(work);
                        db.SaveChanges();
                        AdminHelpDeskMsg = new AdminHelpDeskMessage(Help, FollowerId);
                        await EditMessage(await AdminHelpDeskMsg.BuldMessage());

                        await Processing.NotifyChanges("Заявку №" + Help.Number.ToString() + " взял в работу пользователей:" + GeneralFunction.FollowerFullName(FollowerId), Help.Id);

                        return(OkResult);
                    }

                    if (Help != null && Help.Closed == false && Help.InWork == true &&
                        Help.HelpDeskInWork.FirstOrDefault() != null && Help.HelpDeskInWork.OrderByDescending(h => h.Id).FirstOrDefault().FollowerId == FollowerId) // Заявка в обработке у пользователя который отправил сообщение
                    {
                        AdminHelpDeskMsg = new AdminHelpDeskMessage(Help, FollowerId);
                        await EditMessage(await AdminHelpDeskMsg.BuldMessage());

                        return(OkResult);
                    }

                    if (Help != null && Help.Closed == false && Help.InWork == true &&
                        Help.HelpDeskInWork.FirstOrDefault() != null && Help.HelpDeskInWork.OrderByDescending(h => h.Id).FirstOrDefault().FollowerId != FollowerId)
                    {
                        await SendMessage(
                            new BotMessage
                            { TextMessage = "Заявка в обработке у пользователя: " +
                                            GeneralFunction.FollowerFullName(Help.HelpDeskInWork.OrderByDescending(h => h.Id).FirstOrDefault().FollowerId) });

                        return(OkResult);
                    }

                    if (Help != null && Help.Closed == true)
                    {
                        AdminHelpDeskMsg = new AdminHelpDeskMessage(Help, FollowerId);
                        await EditMessage(await AdminHelpDeskMsg.BuldMessage());

                        return(OkResult);
                    }

                    else
                    {
                        return(OkResult);
                    }
                }
            }

            catch
            {
                return(NotFoundResult);
            }
        }