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); } }
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); } }
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); } } }
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); } }
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); } }
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); } }