private async Task <IActionResult> TakeOrder() { var Order = OrderFunction.GetOrder(OrderId); //Заказ ни кем не обрабатывается if (Order != null && Order.OrdersInWork.Count == 0 || Order != null && Order.OrdersInWork.Count > 0 && Order.OrdersInWork.LastOrDefault().InWork == false) { Order.OrdersInWork.Add(OrderFunction.InsertOrderInWork(OrderId, FollowerId)); BotMessage = new AdminOrderMessage(Order, FollowerId); await EditMessage(BotMessage.BuildMsg()); //уведомляем всех о том что кто-то взял заказ работу BotMessage = new OrderActionNotifiMessage(Order, Order.OrdersInWork.LastOrDefault()); await SendMessageAllBotEmployeess(BotMessage.BuildMsg()); return(OkResult); } //заявка в обработке у тек. пользователя if (Order != null && Order.OrdersInWork.Count > 0 && Order.OrdersInWork.LastOrDefault().InWork == true && Order.OrdersInWork.LastOrDefault().FollowerId == FollowerId) { BotMessage = new AdminOrderMessage(Order, FollowerId); await EditMessage(BotMessage.BuildMsg()); return(OkResult); } //заказ в обработке у кого то другого. Отправляем сообщение с вопрос о переназначении исполнителя if (Order != null && Order.OrdersInWork.Count > 0 && Order.OrdersInWork.LastOrDefault().InWork == true && Order.OrdersInWork.LastOrDefault().FollowerId != FollowerId) { BotMessage = new OverridePerformerConfirmMessage(Order, Order.OrdersInWork.LastOrDefault()); var mess = BotMessage.BuildMsg(); await EditMessage(mess); return(OkResult); } else { return(OkResult); } }
/// <summary> /// Сохраняем новый статус заказа и уведомляем пользователей /// </summary> /// <returns></returns> private async Task <IActionResult> ConfirmNewStatus() { try { if (Argumetns != null && Argumetns.Count == 2) { var status = OrderFunction.ConfirmOrderStatus(Argumetns[1]); //меняем текущее сообщение на сообщение с описание заказа await GetOrderAdmin(base.MessageId); var Order = OrderFunction.GetOrder(OrderId); //уведомляем всех о новом статусе заказа BotMessage = new OrderActionNotifiMessage(Order, status); await SendMessageAllBotEmployeess(BotMessage.BuildMsg()); ///Если поставили статус "Выполено" то пользователю оформившему данные заказ приходил сообщение с просьбой ///оставить отзыв. Остатки на скалде пересчитываются и операторам приходит уведомление об изменениях в остатках if (status != null && status.StatusId == Core.ConstantVariable.OrderStatusVariable.Completed) { var stock = Order.UpdateStock(); BotMessage = new FeedBackOfferMessage(Order); await SendMessage(Order.Follower.ChatId, BotMessage.BuildMsg()); BotMessage = new StockChangesMessage(stock, Order.Id); await SendMessageAllBotEmployeess(BotMessage.BuildMsg()); } return(OkResult); } else { return(OkResult); } } catch { return(OkResult); } }