public BookScheduleController()
        {
            if (bm == null)
            {
                bm = new BookScheduleModel()
                {
                    ContainerModels = new List <ContainerModels>()
                };
            }

            _context = new ApplicationDbContext();
        }
        public ActionResult CreateBooking([Bind(Exclude = "Origin,Destination,StartDate,EndDate")] BookScheduleViewModel bsvm)
        {
            var viewschedule = _context.ScheduleDetails.Include(b => b.ShipDetails).SingleOrDefault(b => b.Id == bsvm.ScheduleDetails.Id);
            var viewcustomer = _context.CustomerModels.Where(b => b.AspNetUsersId == User.Identity.Name);

            BookScheduleViewModel bsvm1 = new BookScheduleViewModel
            {
                ScheduleDetails = viewschedule,
                CustomerModels  = viewcustomer
            };

            var addbooking = new BookScheduleModel
            {
                ContainerModels   = bm.ContainerModels,
                CustomerModelsId  = bsvm.BookScheduleModels.CustomerModelsId,
                ScheduleDetailsId = bsvm.ScheduleDetails.Id,
                IsDelivered       = false
            };

            var getBay = _context.ScheduleDetails.Include(db => db.ShipDetails)
                         .SingleOrDefault(db => db.Id == addbooking.ScheduleDetailsId);

            var deductBay = _context.ShipDetails.SingleOrDefault(db => db.Id == getBay.ShipDetailsId);

            var BayUsed = 0;

            foreach (var i in bm.ContainerModels)
            {
                BayUsed += i.NumberOfBayUsed;
            }

            addbooking.totalBayUsed = BayUsed;

            deductBay.RemainingBaySize = deductBay.RemainingBaySize - BayUsed;

            if (deductBay.RemainingBaySize == 0)
            {
                deductBay.Availability = false;
            }

            _context.SaveChanges();


            _context.BookScheduleModels.Add(addbooking);

            try
            {
                _context.SaveChanges();

                ViewBag.IsSuccess = true;
                ViewBag.Message   = "Booking has been made successfully.";
                bm.ContainerModels.Clear();
                ModelState.Clear();
            }
            catch (Exception ex)
            {
                ViewBag.IsSuccess = false;
                ViewBag.Message   = "Create Failed.\nError: " + ex.Message;
            }

            return(RedirectToAction("Index"));
        }