public ActionResult SetDelivery(int id) { var order = db.CustomerOrders.Find(id); var model = new SetDeliveryModel { CustomerOrder = order, OrderId = order.Id, Drivers = new SelectList(db.Drivers.Where(d => d.Status == "Active").ToList(), "Id", "Name") }; return(View(model)); }
public async Task <ActionResult> SetDelivery(SetDeliveryModel model) { if (!ModelState.IsValid) { model.CustomerOrder = db.CustomerOrders.Find(model.OrderId); model.OrderId = model.OrderId; model.Drivers = new SelectList(db.Drivers.Where(d => d.Status == "Active").ToList(), "Id", "Name"); return(View(model)); } var driver = db.Drivers.Find(model.DriverId); driver.Status = "In Transit"; db.Entry(driver).State = EntityState.Modified; var order = await db.CustomerOrders.FindAsync(model.OrderId); var orderStatus = await db.OrderStatuses.Where(o => o.ProcessNumber == 4).FirstOrDefaultAsync(); order.OrderStatus = orderStatus; order.OrderStatusId = orderStatus.Id; db.Entry(order).State = EntityState.Modified; var qr_code_text = Guid.NewGuid(); db.Deliveries.Add(new Delivery { CustomerOrder = db.CustomerOrders.Find(model.OrderId), OrderId = model.OrderId, DepartureTime = DateTime.Now, DriverId = model.DriverId, Driver = db.Drivers.Find(model.DriverId), Status = "In Transit", QRCodeImagePathConfirmation = GenerateQRCode(qr_code_text.ToString()), QRCodeTextConfirmation = qr_code_text.ToString() }); db.Notifications.PushNotificaiton(string.Format("You changed Customer Order #{0} status", order.Id)); await db.SaveChangesAsync(); return(RedirectToAction("Index")); }