Example #1
0
        public IActionResult Edit(ProductEditViewModel pvm)
        {
            if (!ModelState.IsValid)
            {
                var suppliers = _dataContext.Suppliers.ToList();
                pvm.Suppliers = suppliers.Select(s => new SelectListItem {
                    Text = s.CompanyName, Value = s.Id.ToString()
                }).ToList();
                return(View(pvm));
            }
            var product = new Product
            {
                Id             = pvm.Id,
                ProductName    = pvm.ProductName,
                UnitPrice      = pvm.UnitPrice,
                Package        = pvm.Package,
                IsDiscontinued = pvm.IsDiscontinued,
                SupplierId     = pvm.SupplierId
            };

            _dataContext.Attach(product);
            _dataContext.Entry(product).State = EntityState.Modified;
            _dataContext.SaveChanges();
            return(RedirectToAction("Index", "Home"));
        }
Example #2
0
        public IActionResult Edit(ProductEditViewModel pvm)
        {
            //model is invalid, reconstruct our list of suppliers and show edit view
            if (!ModelState.IsValid)
            {
                var suppliers = _dataContext.Suppliers.ToList();
                pvm.Suppliers = suppliers.Select(s => new SelectListItem
                {
                    Text  = s.CompanyName,
                    Value = s.Id.ToString()
                }).ToList();
                return(View(pvm));
            }
            //view model is valid, create a new product using the form data
            var product = new Product
            {
                Id             = pvm.Id,
                ProductName    = pvm.ProductName,
                UnitPrice      = pvm.UnitPrice,
                Package        = pvm.Package,
                IsDiscontinued = pvm.IsDiscontinued,
                SupplierId     = pvm.SupplierId
            };

            //update our datacontext, go back to home/index
            _dataContext.Attach(product);
            _dataContext.Entry(product).State = EntityState.Modified;
            _dataContext.SaveChanges();
            return(RedirectToAction("Index", "Home"));
        }
Example #3
0
        public IActionResult Post([FromBody] Product product)
        {
            _dataContext.Attach(product);
            _dataContext.Entry(product).State = EntityState.Added;
            _dataContext.SaveChanges();

            return(CreatedAtAction("Get", new { id = product.Id }, product));
        }
Example #4
0
        public IActionResult Put(int id, [FromBody] Product product)
        {
            if (product == null || id != product.Id)
            {
                return(BadRequest());
            }
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }
            if (!ProductExists(id))
            {
                return(NotFound());
            }

            var existing = ECommDataContext.Products.SingleOrDefault(p => p.Id == id);

            try
            {
                existing.ProductName    = product.ProductName;
                existing.UnitPrice      = product.UnitPrice;
                existing.Package        = product.Package;
                existing.IsDiscontinued = product.IsDiscontinued;
                existing.SupplierId     = product.SupplierId;
                ECommDataContext.SaveChanges();
            }
            catch (DbUpdateException) { return(StatusCode(StatusCodes.Status409Conflict)); }
            catch (Exception) { return(StatusCode(StatusCodes.Status500InternalServerError)); }

            return(Ok(existing));
        }
Example #5
0
        public IActionResult Post([FromBody] Product product)
        {
            if (product == null)
            {
                return(BadRequest());
            }
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }
            if (ProductExists(product.Id))
            {
                return(StatusCode(StatusCodes.Status409Conflict));
            }

            try
            {
                ECommDataContext.Products.Add(product);
                ECommDataContext.SaveChanges();
            }
            catch (DbUpdateException) { return(StatusCode(StatusCodes.Status409Conflict)); }
            catch (Exception) { return(StatusCode(StatusCodes.Status500InternalServerError)); }

            return(CreatedAtAction("Get", new { id = product.Id }, product));
        }
Example #6
0
        private ECommDataContext CreateStubContext()
        {
            var optionsBuilder = new DbContextOptionsBuilder <ECommDataContext>();

            optionsBuilder.UseInMemoryDatabase("TestDb");
            var context = new ECommDataContext(optionsBuilder.Options);

            // Add sample data
            context.Products.Add(new Product
            {
                Id          = 1,
                ProductName = "Milk",
                UnitPrice   = 2.50M
            });
            context.Products.Add(new Product
            {
                Id          = 2,
                ProductName = "Bread",
                UnitPrice   = 3.25M,
                SupplierId  = 1
            });
            context.Products.Add(new Product
            {
                Id          = 3,
                ProductName = "Juice",
                UnitPrice   = 5.75M
            });
            context.Suppliers.Add(new Supplier {
                Id = 1, CompanyName = "Acme"
            });

            context.SaveChanges();
            return(context);
        }
Example #7
0
        public IActionResult Delete(int id)
        {
            if (!ProductExists(id))
            {
                return(NotFound());
            }
            var existing = ECommDataContext.Products.SingleOrDefault(p => p.Id == id);

            try
            {
                ECommDataContext.Remove(existing);
                ECommDataContext.SaveChanges();
            }
            catch (DbUpdateException) { return(StatusCode(StatusCodes.Status409Conflict)); }
            catch (Exception) { return(StatusCode(StatusCodes.Status500InternalServerError)); }

            return(Ok(existing));
        }