public void SetViewBag(CheckoutAssetOrForPatron model)
        {
            if (model.FixedAsset != null)
            {
                Asset        asset  = db.Assets.FirstOrDefault(a => a.AssetId == model.FixedAsset);
                List <Asset> assets = new List <Asset>();
                assets.Add(asset);
                ViewBag.AssetId    = new SelectList(assets, "AssetId", "Name", asset.AssetId);
                ViewBag.FixedAsset = asset.AssetId;
            }
            else
            {
                ViewBag.AssetId = new SelectList(db.Assets.Where(a => a.Status.Name.Equals("CheckedIn")), "AssetId", "Name");
            }

            if (model.FixedPatron != null)
            {
                Patron        patron  = db.Patrons.FirstOrDefault(a => a.PatronId == model.FixedPatron);
                List <Patron> patrons = new List <Patron>();
                patrons.Add(patron);
                ViewBag.PatronId    = new SelectList(patrons, "PatronId", "Name", patron.PatronId);
                ViewBag.FixedPatron = patron.PatronId;
            }
            else
            {
                ViewBag.PatronId = new SelectList(db.Patrons, "PatronId", "Surname");
            }
        }
        // GET: Checkouts/Create
        public ActionResult Create(int?assetId, int?patronId)
        {
            //if assetid supplied restrict to that asset
            if (assetId != null)
            {
                Asset        asset  = db.Assets.FirstOrDefault(a => a.AssetId == assetId);
                List <Asset> assets = new List <Asset>();
                assets.Add(asset);
                ViewBag.AssetId    = new SelectList(assets, "AssetId", "DisplayName", asset.AssetId);
                ViewBag.FixedAsset = asset.AssetId;
            }
            else
            {
                ViewBag.AssetId = new SelectList(db.Assets.Where(a => a.Status.Name.Equals("CheckedIn")), "AssetId", "DisplayName");
            }

            //if patronid supplied restrict to that patron
            if (patronId != null)
            {
                Patron        patron  = db.Patrons.FirstOrDefault(a => a.PatronId == patronId);
                List <Patron> patrons = new List <Patron>();
                patrons.Add(patron);
                ViewBag.PatronId    = new SelectList(patrons, "PatronId", "DisplayName", patron.PatronId);
                ViewBag.FixedPatron = patron.PatronId;
            }
            else
            {
                ViewBag.PatronId = new SelectList(db.Patrons, "PatronId", "DisplayName");
            }

            //ViewBag.DefaultCheckoutDate = DateTime.Now;
            //ViewBag.DefaultReturnDate = DateTime.Today.AddMonths(1);
            CheckoutAssetOrForPatron checkout = new CheckoutAssetOrForPatron
            {
                CheckoutDate = DateTime.Now,
                ReturnDate   = DateTime.Today.AddMonths(1)
            };

            return(View(checkout));
        }
        public ActionResult Create([Bind(Include = "CheckoutId,AssetId,PatronId,Checkoutdate,ReturnDate,Notes,RowVersion, FixedAsset, FixedPatron")] CheckoutAssetOrForPatron model)
        {
            if (ModelState.IsValid)
            {
                Checkout checkout = new Checkout
                {
                    AssetId      = model.AssetId,
                    PatronId     = model.PatronId,
                    CheckoutDate = model.CheckoutDate,
                    ReturnDate   = model.ReturnDate,
                    Notes        = model.Notes,
                    RowVersion   = model.RowVersion,
                };
                db.Checkouts.Add(checkout);

                //also need to set asset to CheckedOut
                Asset assetModel = db.Assets.Find(model.AssetId);

                //first check if asset is available
                if (assetModel.StatusId != db.Status.FirstOrDefault(a => a.Name == "CheckedIn").StatusId)
                {
                    ViewBag.errorMessage = "The Asset is not available to be Checked out";
                    SetViewBag(model);
                    return(View(model));
                }

                assetModel.StatusId        = db.Status.FirstOrDefault(a => a.Name == "CheckedOut").StatusId;
                db.Entry(assetModel).State = EntityState.Modified;
                db.SaveChanges();
                return(RedirectToAction("Index"));
            }

            SetViewBag(model);

            return(View(model));
        }