コード例 #1
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);
            }
        }
コード例 #2
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);
            }
        }
コード例 #3
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);
                }
            }
        }
コード例 #4
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);
            }
        }
コード例 #5
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);
            }
        }
コード例 #6
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);
            }
        }