public void EditSKU(SKUFormViewModel skuFormViewModel) { Price = skuFormViewModel.Price; IsDiscounted = skuFormViewModel.IsDiscounted; DiscountedPrice = skuFormViewModel.DiscountedPrice; OptionId = skuFormViewModel.OptionId; }
public async Task UpdateSKUOptions(SKUFormViewModel skuFormViewModel, ApplicationDbContext context) { //A list of skuOptions that are null from the skuFormViewModel which can then be deleted //var skuOptionsToDelete = SKUOptions // .Select(skuOption => new { skuOption = skuFormViewModel.SKUOptions.SingleOrDefault(i => i.Id == skuOption.Id) }) // .Where(item => item.skuOption == null) // .Select(item => item.skuOption) // .ToList(); //if (skuOptionsToDelete.Any()) //{ // foreach (var skuOpt in skuOptionsToDelete) // { // context.Entry(skuOpt).State = EntityState.Deleted; // } //} foreach (var skuOption in skuFormViewModel.SKUOptions) { if (skuOption.Id <= 0) { continue; } var skuOptionInDb = SKUOptions.Single(x => x.Id == skuOption.Id); context.Entry(skuOptionInDb).CurrentValues.SetValues(skuOption); context.Entry(skuOptionInDb).State = EntityState.Modified; } await context.SaveChangesAsync(); }
// GET: Admin/SKU/Create public async Task <IActionResult> Create(int id) { var product = await _context.Products .Include(x => x.SizeGroup) .ThenInclude(x => x.Sizes) .SingleOrDefaultAsync(x => x.Id == (int)id); var skuFormViewModel = new SKUFormViewModel { Product = product, ProductId = product.Id, OptionList = await _context.Options.Where(x => x.OptionGroupId == product.OptionGroupId).ToListAsync(), SizeList = await _context.Sizes.Where(x => x.SizeGroupId == product.SizeGroupId).ToListAsync(), }; foreach (var size in product.SizeGroup.Sizes) { skuFormViewModel.SKUOptions.Add(new SKUOption { Size = size, SizeId = size.Id }); } ViewData["Header"] = "SKUs"; return(View("SKUForm", skuFormViewModel)); }
// GET: Admin/SKU/Edit/5 public async Task <IActionResult> Edit(int?id) { if (id == null) { return(NotFound()); } var sku = await _context.SKUs .Include(x => x.Product) .Include(x => x.SKUOptions) .ThenInclude(x => x.Size) .SingleOrDefaultAsync(m => m.Id == id); if (sku == null) { return(NotFound()); } var skuFormViewModel = new SKUFormViewModel(sku); skuFormViewModel.SKUPictures = await _context.SKUPictures.Where(x => x.SKUId == sku.Id) .OrderBy(x => x.Sorting).ToListAsync(); skuFormViewModel.OptionList = await _context.Options.Where(x => x.OptionGroupId == sku.Product.OptionGroupId).ToListAsync(); ViewData["Header"] = "SKUs"; return(View("SKUForm", skuFormViewModel)); }
public SKU(SKUFormViewModel skuFormViewModel) { Id = skuFormViewModel.SKUId; Price = skuFormViewModel.Price; IsDiscounted = skuFormViewModel.IsDiscounted; DiscountedPrice = skuFormViewModel.DiscountedPrice; ProductId = skuFormViewModel.ProductId; Product = skuFormViewModel.Product; OptionId = skuFormViewModel.OptionId; SKUPictures = new Collection <SKUPicture>(); SKUOptions = new List <SKUOption>(); }
public async Task <IActionResult> Create([Bind("SKUId,Price,IsDiscounted,DiscountedPrice,ProductId,ImageUrl,OptionId,Files,SKUOptions")] SKUFormViewModel skuFormViewModel) { //TODO Validate SKU Size has been entered if (ModelState.IsValid) { //create new SKU var sku = new SKU(skuFormViewModel); //Add SKU Options sku.SKUOptions = skuFormViewModel.SKUOptions; //Add SKU Pictures await sku.UpdateSKUPictures(skuFormViewModel.Files, _environment); //Add SKU to DB _context.Add(sku); await _context.SaveChangesAsync(); return(RedirectToAction(nameof(Index))); } var product = await _context.Products.Include(x => x.SizeGroup) .ThenInclude(x => x.Sizes) .SingleOrDefaultAsync(x => x.Id == skuFormViewModel.ProductId); skuFormViewModel.Product = product; skuFormViewModel.OptionList = await _context.Options.Where(x => x.OptionGroupId == product.OptionGroupId).ToListAsync(); skuFormViewModel.SizeList = await _context.Sizes.Where(x => x.SizeGroupId == product.SizeGroupId).ToListAsync(); ViewData["Header"] = "SKUs"; return(View("SKUForm", skuFormViewModel)); }
public async Task <IActionResult> Edit(int id, [Bind("SKUId,Price,IsDiscounted,DiscountedPrice,ImageUrl,SKUOptions,OptionId,Files")] SKUFormViewModel skuFormViewModel) { if (id != skuFormViewModel.SKUId) { return(NotFound()); } //TODO Include SKUOption var sku = await _context.SKUs .Include(x => x.SKUOptions) .Include(x => x.SKUPictures) .SingleOrDefaultAsync(x => x.Id == skuFormViewModel.SKUId); if (sku == null) { return(NotFound()); } //TODO validate sku sizes if (ModelState.IsValid) { try { //edit SKU properties sku.EditSKU(skuFormViewModel); ////Update sku options await sku.UpdateSKUOptions(skuFormViewModel, _context); //Update sku pictures await sku.UpdateSKUPictures(skuFormViewModel.Files, _environment); //update sku _context.Update(sku); await _context.SaveChangesAsync(); } catch (DbUpdateConcurrencyException) { if (!SKUExists(skuFormViewModel.SKUId)) { return(NotFound()); } else { throw; } } return(RedirectToAction(nameof(Index))); } skuFormViewModel = new SKUFormViewModel(sku) { SKUPictures = await _context.SKUPictures.Where(x => x.SKUId == sku.Id).OrderBy(x => x.Sorting).ToListAsync(), OptionList = await _context.Options.Where(x => x.OptionGroupId == sku.Product.OptionGroupId).ToListAsync(), Product = await _context.Products.SingleOrDefaultAsync(x => x.Id == sku.Product.Id) }; ViewData["Header"] = "SKUs"; return(View("SKUForm", skuFormViewModel)); }