Beispiel #1
0
 public void EditSKU(SKUFormViewModel skuFormViewModel)
 {
     Price           = skuFormViewModel.Price;
     IsDiscounted    = skuFormViewModel.IsDiscounted;
     DiscountedPrice = skuFormViewModel.DiscountedPrice;
     OptionId        = skuFormViewModel.OptionId;
 }
Beispiel #2
0
        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();
        }
Beispiel #3
0
        // 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));
        }
Beispiel #4
0
        // 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));
        }
Beispiel #5
0
 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>();
 }
Beispiel #6
0
        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));
        }
Beispiel #7
0
        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));
        }