public ActionResult LeaveDeliveryBoy([Bind(Include = "Id")] GroupedOrder groupedOrder) { if (ModelState.IsValid) { var dbGroupedOrder = db.GroupedOrders.Single(go => go.Id == groupedOrder.Id); dbGroupedOrder.DeliveryBoy_Id = null; dbGroupedOrder.DeliveryBoy = null; dbGroupedOrder.LimitDate = null; db.Entry(dbGroupedOrder).State = EntityState.Modified; var leaveDeliveryBoyEvent = new GroupedOrderEvent { CreateUserId = User.Identity.GetUserId(), CreationDate = DateTime.UtcNow, Description = "{0} has leave the delivery boy function", EventType = EventType.LeaveDeliveryBoyFunction, Users = dbGroupedOrder.Orders.Select(o => o.CreateUser).ToList(), EventStatus = GroupedOrderEventStatus.Accepted, GroupedOrderId = groupedOrder.Id }; db.Entry(leaveDeliveryBoyEvent).State = EntityState.Added; db.SaveChanges(); return(RedirectToAction("Index", "GroupedOrders")); } return(View(groupedOrder)); }
public ActionResult DeleteConfirmed(Guid id) { var groupedOrderIsRemoved = false; var deliveryOrderIsDeleted = false; var order = db.Orders.Single(o => o.Id == id); if (order.GroupedOrder != null) { if (order.GroupedOrder.Orders != null && order.GroupedOrder.Orders.Count == 1) { db.GroupedOrders.Remove(order.GroupedOrder); groupedOrderIsRemoved = true; } else { if (order.CreateUser_Id == order.GroupedOrder?.DeliveryBoy_Id) { order.GroupedOrder.DeliveryBoy_Id = null; deliveryOrderIsDeleted = true; } } } if (groupedOrderIsRemoved) { var groupedOrderEvent = new Event { CreateUserId = User.Identity.GetUserId(), CreationDate = DateTime.UtcNow, Description = "{0} has delete his order. It was the last so the grouped order was deleted", EventType = EventType.DeleteOrder, Users = order.GroupedOrder?.Orders?.Select(o => o.CreateUser).ToList() }; db.Events.Add(groupedOrderEvent); } else { var groupedOrderEvent = new GroupedOrderEvent { CreateUserId = User.Identity.GetUserId(), CreationDate = DateTime.UtcNow, Description = deliveryOrderIsDeleted?"{0} has delete his order and has been removed from delivery boy function":"{0} has delete his order.", EventType = EventType.DeleteOrder, EventStatus = GroupedOrderEventStatus.Accepted, GroupedOrderId = order.GroupedOrder_Id, Users = order.GroupedOrder?.Orders?.Select(o => o.CreateUser).ToList() }; db.GroupedOrderEvents.Add(groupedOrderEvent); } db.Orders.Remove(order); db.SaveChanges(); return(!groupedOrderIsRemoved ? RedirectToAction("Details", "GroupedOrders", new { Id = order.GroupedOrder_Id }) : RedirectToAction("Index", "Home")); }
public ActionResult AcceptDeliveryBoyRequest( [Bind(Include = "Id,CreateUserId,CreateUser,GroupedOrderId,GroupedOrder,LimitDateTime")] GroupedOrderEventAskDeliveryBoy groupedOrderEventAskDeliveryBoy) { if (ModelState.IsValid) { // Mise à jour de la commande groupée var dbGroupedOrder = db.GroupedOrders.Single(go => go.Id == groupedOrderEventAskDeliveryBoy.GroupedOrderId); dbGroupedOrder.DeliveryBoy_Id = groupedOrderEventAskDeliveryBoy.CreateUserId; dbGroupedOrder.LimitDate = groupedOrderEventAskDeliveryBoy.LimitDateTime; db.Entry(dbGroupedOrder).State = EntityState.Modified; //Mise à jour de l'event de demande de DeliveryBoy var dbGroupedOrderEvent = db.GroupedOrderEvents.Single(goe => goe.Id == groupedOrderEventAskDeliveryBoy.Id); dbGroupedOrderEvent.EventStatus = GroupedOrderEventStatus.Accepted; db.Entry(dbGroupedOrderEvent).State = EntityState.Modified; // Création d'un evenement d'acceptation de la demande var newDeliveryBoy = db.Users.Single(u => u.Id == groupedOrderEventAskDeliveryBoy.CreateUserId); var newGroupedOrderEvent = new GroupedOrderEvent { CreateUserId = User.Identity.GetUserId(), CreationDate = DateTime.UtcNow, Description = "Delivery Boy Request accepted by {0}.", EventStatus = GroupedOrderEventStatus.Accepted, EventType = EventType.AcceptDeliveryBoyRequest, GroupedOrderId = groupedOrderEventAskDeliveryBoy.GroupedOrderId, Users = new List <ApplicationUser> { newDeliveryBoy } }; db.Entry(newGroupedOrderEvent).State = EntityState.Added; db.SaveChanges(); return(RedirectToAction("Details", "GroupedOrders", new { Id = groupedOrderEventAskDeliveryBoy.GroupedOrderId })); } return(View(groupedOrderEventAskDeliveryBoy)); }
public ActionResult BecomingDeliveryBoy([Bind(Include = "Id,CreateUser,CreationDate,LimitDate,LinkedShop")] GroupedOrder groupedOrder) { var dbGroupedOrder = db.GroupedOrders.Single(go => go.Id == groupedOrder.Id); var currentUserId = User.Identity.GetUserId(); if (dbGroupedOrder.Orders.All(o => o.CreateUser_Id != currentUserId)) { ModelState.AddModelError("DeliveryBoy", "You have to join this order before becoming delivery boy."); } if (ModelState.IsValid) { dbGroupedOrder.DeliveryBoy_Id = currentUserId; dbGroupedOrder.LimitDate = groupedOrder.LimitDate; db.Entry(dbGroupedOrder).State = EntityState.Modified; var newGroupedOrderEvent = new GroupedOrderEvent { CreateUserId = User.Identity.GetUserId(), CreationDate = DateTime.UtcNow, Description = "{0} became delivery boy by its own.", EventStatus = GroupedOrderEventStatus.Accepted, EventType = EventType.BecomingDeliveryBoy, GroupedOrderId = groupedOrder.Id, Users = dbGroupedOrder.Orders.Select(o => o.CreateUser).ToList() }; db.Entry(newGroupedOrderEvent).State = EntityState.Added; db.SaveChanges(); return(RedirectToAction("Index", "GroupedOrders")); } return(View(groupedOrder)); }