/// <summary> /// Выполнить заказ /// </summary> /// <returns></returns> private async Task <IActionResult> OrderDone() { using (MarketBotDbContext db = new MarketBotDbContext()) { //Проверяем согласован ли заказ и не удален ли он и не был ли выполнен ранее if (this.Order != null && this.Order.OrderDeleted.Count == 0 && this.Order.OrderConfirm.Count > 0 && this.Order.OrderDone.Count == 0 && await Processing.CheckInWork(this.Order) && !await Processing.CheckIsDone(this.Order)) { OrderDone orderDone = new OrderDone { DateAdd = DateTime.Now, FollowerId = FollowerId, Done = true, OrderId = OrderId }; OrdersInWork inWork = new OrdersInWork { FollowerId = FollowerId, Timestamp = DateTime.Now, InWork = false, OrderId = this.Order.Id }; db.OrdersInWork.Add(inWork); db.OrderDone.Add(orderDone); db.SaveChanges(); StockChangesMsg = new StockChangesMessage(UpdateStock(this.Order)); } } if (OrderAdminMsg != null) { var message = OrderAdminMsg.BuildMessage(); await EditMessage(message); // Редакатруем текущее сообщение на новое string notify = "Заказ №" + this.Order.Number.ToString() + " выполнен. Пользователь " + GeneralFunction.FollowerFullName(base.FollowerId); await Processing.NotifyChanges(notify, this.Order.Id); // уведомляем сотрудников о выполненом заказе await SendMessageAllBotEmployeess(StockChangesMsg.BuildMessage()); //уведомляем сотрудников об изменениях остатков return(await SendFeedBackOffer()); // предлагаем пользователю оставить отзыв } else { return(base.NotFoundResult); } }
/// <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); } }