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")); }
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")); }
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)); }
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)); }
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)); }
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); }
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)); }