protected override void Constructor() { Processing = new OrderProcess(Update); if (Update.Message != null && Update.Message.ReplyToMessage != null) { CommandName = Update.Message.ReplyToMessage.Text; } try { if (base.Argumetns.Count > 0) { OrderId = Argumetns[0]; OrderAdminMsg = new AdminOrderMessage(this.OrderId, FollowerId); OrderPositionListMsg = new OrderPositionListMessage(this.OrderId); FeedBackOfferMsg = new FeedBackOfferMessage(this.OrderId); using (MarketBotDbContext db = new MarketBotDbContext()) Order = db.Orders.Where(o => o.Id == this.OrderId).Include(o => o.OrderConfirm). Include(o => o.OrderDone).Include(o => o.OrderDeleted).Include(o => o.OrderProduct). Include(o => o.Follower).Include(o => o.FeedBack).Include(o => o.OrderAddress).Include(o => o.Invoice).Include(o => o.OrdersInWork).FirstOrDefault(); InvoiceViewMsg = new InvoiceViewMessage(Order.Invoice, Order.Id); } } catch { } }
/// <summary> /// Восстановить заказ /// </summary> /// <returns></returns> private async Task <IActionResult> OrderRecovery() { using (MarketBotDbContext db = new MarketBotDbContext()) { try { var deleted = db.OrderDeleted.Where(o => o.OrderId == OrderId); if (deleted != null && deleted.Count() > 0) { foreach (var value in deleted) { db.OrderDeleted.Remove(value); } db.SaveChanges(); } OrderAdminMsg = new AdminOrderMessage(OrderId, FollowerId); await EditMessage(OrderAdminMsg.BuildMessage()); string notify = "Заказ №" + Order.Number.ToString() + " восстановлен. Пользователь " + GeneralFunction.FollowerFullName(FollowerId); await Processing.NotifyChanges(notify, Order.Id); return(base.OkResult); } catch (Exception e) { return(base.NotFoundResult); } } }
/// <summary> /// Назад /// </summary> /// <returns></returns> private async Task <IActionResult> BackToOrder() { BotMessage = new AdminOrderMessage(OrderId, FollowerId); await EditMessage(BotMessage.BuildMsg()); return(OkResult); }
/// <summary> /// После того как пользователь нажал на кнопку "Отправить", информация о заказе пересылается Операторам в личку и в общий чат (если он есть) /// </summary> /// <param name="OrderId"></param> /// <returns></returns> private async Task <IActionResult> OrderRedirectToAdmins(int OrderId, Orders order = null) { using (MarketBotDbContext db = new MarketBotDbContext()) { try { var admins = db.Admin.Include(a => a.Follower).ToList(); if (order == null) { OrderAdminMsg = new AdminOrderMessage(OrderId); } else { OrderAdminMsg = new AdminOrderMessage(order); } var message = OrderAdminMsg.BuildMessage(); await SendMessageAllBotEmployeess(message); return(base.OkResult); } catch { return(base.NotFoundResult); } } }
private async Task <IActionResult> SendPage2Keyboard() { AdminOrderMessage adminOrder = new AdminOrderMessage(OrderId); await EditInlineReplyKeyboard(adminOrder.Page2Keyboard()); return(OkResult); }
private async Task <IActionResult> GetOrderAdmin(int MessageId = 0) { BotMessage = new AdminOrderMessage(OrderId, FollowerId); await SendMessage(BotMessage.BuildMsg(), MessageId); return(base.OkResult); }
/// <summary> /// Удалить заказ /// </summary> /// <returns></returns> private async Task <IActionResult> OrderDelete() { int number = 0; int id = 0; try { number = Convert.ToInt32(base.OriginalMessage.Substring(ForceReplyOrderDelete.Length)); using (MarketBotDbContext db = new MarketBotDbContext()) { Order = db.Orders.Where(o => o.Number == number).Include(o => o.OrderDeleted).Include(o => o.OrdersInWork).FirstOrDefault(); string text = base.ReplyToMessageText; if (Order != null && Order.OrderDeleted != null && Order.OrderDeleted.Count == 0 && await Processing.CheckInWork(Order) && !await Processing.CheckIsDone(Order)) { id = Order.Id; OrderDeleted orderDeleted = new OrderDeleted { DateAdd = DateTime.Now, Deleted = true, FollowerId = FollowerId, OrderId = id, Text = text }; db.OrderDeleted.Add(orderDeleted); db.SaveChanges(); } } OrderAdminMsg = new AdminOrderMessage(id, FollowerId); var message = OrderAdminMsg.BuildMessage(); await SendMessage(message); //Уведомляем других сотрудников об изменениях string notify = "Заказ №" + Order.Number.ToString() + " Удален. Пользователь " + GeneralFunction.FollowerFullName(FollowerId); await Processing.NotifyChanges(notify, Order.Id); return(base.OkResult); } catch { return(OkResult); } }
private async Task <IActionResult> TakeOrder() { try { using (MarketBotDbContext db = new MarketBotDbContext()) { OrdersInWork inWork = new OrdersInWork { FollowerId = FollowerId, Timestamp = DateTime.Now, OrderId = Order.Id, InWork = true }; db.OrdersInWork.Add(inWork); var InWorkNow = Order.OrdersInWork.OrderByDescending(o => o.Id).FirstOrDefault(); //заказ не находится ни у кого в обработке if (Order != null && InWorkNow == null && db.SaveChanges() > 0 || Order != null && InWorkNow != null && InWorkNow.InWork == false && db.SaveChanges() > 0) { Order.OrdersInWork.Add(inWork); OrderAdminMsg = new AdminOrderMessage(Order, FollowerId); await EditMessage(OrderAdminMsg.BuildMessage()); string notify = "Заказ №" + this.Order.Number.ToString() + " взят в работу. Пользователь " + GeneralFunction.FollowerFullName(base.FollowerId); await Processing.NotifyChanges(notify, this.Order.Id); } //заказ уже кем то обрабатывается if (InWorkNow != null && InWorkNow.FollowerId != FollowerId && InWorkNow.InWork == true) { await SendMessage(new BotMessage { TextMessage = "Заявка в обработке у " + GeneralFunction.FollowerFullName(InWorkNow.FollowerId) }); } //заявка уже в обработке у пользователя if (InWorkNow != null && InWorkNow.FollowerId == FollowerId && InWorkNow.InWork == true) { OrderAdminMsg = new AdminOrderMessage(Order, FollowerId); await EditMessage(OrderAdminMsg.BuildMessage()); } return(OkResult); } } catch { return(NotFoundResult); } }
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> OrderConfirm() { try { int number = Convert.ToInt32(base.OriginalMessage.Substring(ForceReplyOrderConfirm.Length)); int id = 0; using (MarketBotDbContext db = new MarketBotDbContext()) { Order = db.Orders.Where(o => o.Number == number).Include(o => o.OrderConfirm).Include(o => o.OrdersInWork).FirstOrDefault(); if (Order != null && Order.OrderConfirm != null && Order.OrderConfirm.Count == 0 && await Processing.CheckInWork(Order) && await Processing.CheckIsDone(Order) == false) // Если уже есть записи о том что заказ соглосован, то больще записей не делаем { string text = base.ReplyToMessageText; id = Order.Id; OrderConfirm orderConfirm = new OrderConfirm { DateAdd = DateTime.Now, Confirmed = true, FollowerId = FollowerId, OrderId = id, Text = text }; db.OrderConfirm.Add(orderConfirm); db.SaveChanges(); } } OrderAdminMsg = new AdminOrderMessage(id, FollowerId); var message = OrderAdminMsg.BuildMessage(); await SendMessage(message); string notify = "Заказ №" + this.Order.Number.ToString() + " согласован. Пользователь " + GeneralFunction.FollowerFullName(base.FollowerId); await Processing.NotifyChanges(notify, this.Order.Id); return(base.OkResult); } catch (Exception exp) { return(base.NotFoundResult); } }
private async Task <IActionResult> GetOrderAdmin() { if (OrderAdminMsg == null) { OrderAdminMsg = new AdminOrderMessage(OrderId, FollowerId); } if (await SendMessage(OrderAdminMsg.BuildMessage()) != null) { return(base.OkResult); } else { return(base.NotFoundResult); } }
/// <summary> /// Освободить заказ. /// </summary> /// <returns></returns> private async Task <IActionResult> FreeOrder() { if (OrderId > 0) { var Inwork = OrderFunction.InsertOrderInWork(OrderId, FollowerId, false); var Order = OrderFunction.GetOrder(OrderId); BotMessage = new AdminOrderMessage(Order, FollowerId); await base.EditMessage(BotMessage.BuildMsg()); string notify = "Пользователь " + GeneralFunction.FollowerFullName(FollowerId) + " освободил заказ №" + Order.Number.ToString(); BotMessage = new OrderMiniViewMessage(notify, Order.Id); await SendMessageAllBotEmployeess(BotMessage.BuildMsg()); } return(OkResult); }
/// <summary> /// Подтверждение того что пользователь назначает исполнителем себя вместо кого-то /// </summary> /// <returns></returns> private async Task <IActionResult> ConfirmOverridePerformer() { var Order = OrderFunction.GetOrder(OrderId); var Inwork = OrderFunction.InsertOrderInWork(OrderId, FollowerId); Order.OrdersInWork.Add(Inwork); BotMessage = new AdminOrderMessage(Order, FollowerId); await EditMessage(BotMessage.BuildMsg()); //уведомляем всех о том что кто то взял заказ в обработку string notify = "Заказ №" + Order.Number.ToString() + " взят в работу. Пользователь " + GeneralFunction.FollowerFullName(base.FollowerId); BotMessage = new OrderMiniViewMessage(notify, Order.Id); await SendMessageAllBotEmployeess(BotMessage.BuildMsg()); return(OkResult); }
/// <summary> /// Освободить заказ. /// </summary> /// <returns></returns> private async Task <IActionResult> FreeOrder() { try { if (Order != null && await Processing.CheckInWork(Order)) { using (MarketBotDbContext db = new MarketBotDbContext()) { OrdersInWork ordersInWork = new OrdersInWork { Timestamp = DateTime.Now, InWork = false, OrderId = Order.Id, FollowerId = FollowerId }; db.OrdersInWork.Add(ordersInWork); if (db.SaveChanges() > 0) { Order.OrdersInWork.Add(ordersInWork); OrderAdminMsg = new AdminOrderMessage(Order, FollowerId); await base.EditMessage(OrderAdminMsg.BuildMessage()); await Processing.NotifyChanges("Пользователь " + GeneralFunction.FollowerFullName(FollowerId) + " освободил заказ №" + Order.Number.ToString(), Order.Id); } return(OkResult); } } else { return(OkResult); } } catch { return(OkResult); } }
private async Task <IActionResult> GetOrder() { using (MarketBotDbContext db = new MarketBotDbContext()) { try { int number = Convert.ToInt32(base.CommandName.Substring(GetOrderCmd.Length)); int id = db.Orders.Where(o => o.Number == number).FirstOrDefault().Id; OrderAdminMsg = new AdminOrderMessage(id); await SendMessage(OrderAdminMsg.BuildMessage()); return(OkResult); } catch { return(OkResult); } } }
/// <summary> /// Назад /// </summary> /// <returns></returns> private async Task <IActionResult> BackToOrder() { if (OrderAdminMsg != null && await EditMessage(OrderAdminMsg.BuildMessage()) != null) { return(base.OkResult); } if (OrderAdminMsg == null && this.OrderId > 0) { OrderAdminMsg = new AdminOrderMessage(this.OrderId); await EditMessage(OrderAdminMsg.BuildMessage()); return(OkResult); } else { OrderId = Argumetns[0]; OrderAdminMsg = new AdminOrderMessage(this.OrderId); await EditMessage(OrderAdminMsg.BuildMessage()); return(OkResult); } }
/// <summary> /// Сохрнанить заказ. Перенести все данные из корзины. /// </summary> /// <returns></returns> private async Task <IActionResult> OrderSave() { Orders new_order = null; bool blocked = false; OrderFunction = new OrderFunction(); ConfigurationBot = base.GetConfigurationBot(BotInfo.Id); blocked = FollowerFunction.IsBlocked(FollowerId); if (blocked) { await AnswerCallback("Вы заблокированы администратором системы!", true); } // если в настройках бота указано время работы магазина, то проверяем подходит ли текщее время //под это правило. Если подходит то офрмляем заказ if (!blocked && ConfigurationBot.StartTime != null && ConfigurationBot.EndTime != null && ConfigurationBot.StartTime.Value.Hours <= DateTime.Now.Hour && ConfigurationBot.StartTime.Value <= DateTime.Now.TimeOfDay && ConfigurationBot.EndTime.Value > DateTime.Now.TimeOfDay) { new_order = OrderFunction.CreateOrder(FollowerId, BotInfo); } //Время работы магазина не указано. else if (!blocked && ConfigurationBot.EndTime == null && ConfigurationBot.StartTime == null) { new_order = OrderFunction.CreateOrder(FollowerId, BotInfo); } else { await AnswerCallback("Мы обрабатываем заказы только в период с " + ConfigurationBot.StartTime.ToString() + " и по " + ConfigurationBot.EndTime.ToString(), true); } if (new_order != null && new_order.Invoice != null) { BotMessage = new InvoiceViewMessage(new_order.Invoice, new_order.Id); await EditMessage(BotMessage.BuildMsg()); } if (new_order != null && new_order.Invoice == null) { BotMessage = new OrderViewMessage(new_order); await EditMessage(BotMessage.BuildMsg()); } //то отправляем уведомление о новом заказке Админам if (new_order != null) { BotMessage = new AdminOrderMessage(new_order); var message = BotMessage.BuildMsg(); await SendMessageAllBotEmployeess(message); } OrderFunction.Dispose(); return(OkResult); }