KramerJProg/eCommerceSite

Finish Refactoring Product Controller

Closed this issue · 0 comments

Finish refactoring Product Controller by adding a new method to ProductDb. Under 3 methods, specifically:

// REFACTOR ONLY
Product p =
    await (from prod in _context.Products
        where prod.ProductId == id    
         select prod).SingleAsync();
// REFACTOR ONLY
↓
↓
↓
↓
↓
↓
[HttpGet]
        public async Task<IActionResult> Edit(int id)
        {
            // Get product with corresponding id
            // Query Syntax
            Product p =
                await (from prod in _context.Products
                       where prod.ProductId == id           // <--------REFACTOR----------
                       select prod).SingleAsync();
            // Method Syntax
            //Product p2 =
            //    _context.Products.Where(prod => prod.ProductId == id).SingleAsync();

            // pass product to view
            return View(p);
        }

 [HttpGet]
        public async Task<IActionResult> Delete(int id)
        {
            Product p = await (from prod in _context.Products
                         where prod.ProductId == id            // <---------REFACTOR----------
                         select prod).SingleAsync();

            return View(p);
        }

[HttpPost]
        [ActionName("Delete")]
        public async Task<IActionResult> DeleteConfirmed(int id)
        {
            Product p = await (from prod in _context.Products
                        where prod.ProductId == id             // <-----------REFACTOR-------------
                        select prod).SingleAsync();

            _context.Entry(p).State = EntityState.Deleted;

            await _context.SaveChangesAsync();

            TempData["Message"] = $"{p.Title} was deleted";

            return RedirectToAction("Index");
        }