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"));
        }