public ActionResult CreateAvailable([Bind(Include = "ItemDescription,ItemCategory,ItemType,QuantityAvailable,UoM,AvailableFrom,AvailableTo,ItemCondition,DisplayUntilDate,SellByDate,UseByDate,DeliveryAvailable")] AvailableListingManageCreateViewModel model)
        {
            if (Request.Form["resetbutton"] != null)
            {
                return(RedirectToAction("CreateAvailable"));
            }

            if (ModelState.IsValid)
            {
                AvailableListingHelpers.CreateListing(db, model, User);
                return(RedirectToAction("Available"));
            }

            return(View(model));
        }
        public static AvailableListing CreateListing(ApplicationDbContext db, AvailableListingManageCreateViewModel model, IPrincipal user)
        {
            AppUser      thisUser = AppUserHelpers.GetAppUser(db, user);
            Organisation thisOrg  = OrganisationHelpers.GetOrganisation(db, thisUser.OrganisationId);

            AvailableListing listing = new AvailableListing()
            {
                ListingId           = Guid.NewGuid(),
                ItemDescription     = model.ItemDescription,
                ItemCategory        = model.ItemCategory,
                ItemType            = model.ItemType,
                QuantityAvailable   = model.QuantityAvailable.Value,
                QuantityOutstanding = model.QuantityAvailable.Value,
                UoM                             = model.UoM,
                AvailableFrom                   = model.AvailableFrom,
                AvailableTo                     = model.AvailableTo,
                ItemCondition                   = model.ItemCondition,
                DisplayUntilDate                = model.DisplayUntilDate,
                SellByDate                      = model.SellByDate,
                UseByDate                       = model.UseByDate,
                DeliveryAvailable               = model.DeliveryAvailable,
                ListingStatus                   = ItemEnums.ItemRequiredListingStatusEnum.Open,
                ListingOrganisationPostcode     = thisOrg.AddressPostcode,
                RecordChange                    = GeneralEnums.RecordChangeEnum.NewRecord,
                RecordChangeBy                  = thisUser.AppUserId,
                RecordChangeOn                  = DateTime.Now,
                ListingOriginatorAppUserId      = thisUser.AppUserId,
                ListingOriginatorOrganisationId = thisOrg.OrganisationId,
                ListingOriginatorDateTime       = DateTime.Now
            };

            db.AvailableListings.Add(listing);
            db.SaveChanges();

            return(listing);
        }