diff options
author | Sergey Chebotar <s.chebotar@gmail.com> | 2023-02-20 21:53:21 +0300 |
---|---|---|
committer | Sergey Chebotar <s.chebotar@gmail.com> | 2023-02-20 21:53:21 +0300 |
commit | 3c83f9f4b01b5965e04739e5f8accf3235f8f699 (patch) | |
tree | 8ec80ceaf26f1343ecccab682e9041689f4f5701 /Controllers | |
parent | c740669676b30e5eae3cbadbef2810671b9e1c37 (diff) |
Add base crud actions for bundles
Diffstat (limited to 'Controllers')
-rw-r--r-- | Controllers/BundleController.cs | 110 | ||||
-rw-r--r-- | Controllers/BundlesController.cs | 47 | ||||
-rw-r--r-- | Controllers/HomeController.cs | 8 |
3 files changed, 114 insertions, 51 deletions
diff --git a/Controllers/BundleController.cs b/Controllers/BundleController.cs new file mode 100644 index 0000000..8e72dd3 --- /dev/null +++ b/Controllers/BundleController.cs @@ -0,0 +1,110 @@ +using System.Data; +using Microsoft.AspNetCore.Mvc; +using Microsoft.EntityFrameworkCore; +using MyDarling.Models; + +namespace MyDarling.Controllers +{ + public class BundleController : Controller + { + private DataContext context; + public bool TryUpdateModel { get; private set; } + + public BundleController(DataContext context) + { + this.context = context; + } + + public ActionResult Index() + { + return View(context.UnderwearBundles.Include(b => b.Figures)); + } + + public ActionResult Create() + { + return View(); + } + + [HttpPost] + public async Task<ActionResult> Create([Bind] UnderwearBundle bundle) + { + try + { + if (ModelState.IsValid) + { + await context.UnderwearBundles.AddAsync(bundle); + context.SaveChanges(); + return RedirectToAction(nameof(Index)); + } + } + catch (DataException) + { + ModelState.AddModelError("", "Unable to save changes"); + } + return View(bundle); + } + + public async Task<ActionResult> Details(int id) + { + return View(await context.UnderwearBundles.FindAsync(id)); + } + + public async Task<ActionResult> Edit(int id) + { + return View(nameof(Details), await context.UnderwearBundles.FindAsync(id)); + } + + [HttpPost] + public async Task<ActionResult> Edit(int? id) + { + if (id == null) + { + return NotFound(); + } + + var bundle = await context.UnderwearBundles.FindAsync(id); + if (bundle == null) + { + return NotFound(); + } + + if (await TryUpdateModelAsync<UnderwearBundle>( + bundle, + "", + b => b.Name, b => b.Description, b => b.Price)) + { + try + { + await context.SaveChangesAsync(); + return RedirectToAction(nameof(Index)); + } + catch (System.Exception) + { + ModelState.AddModelError("", "Unable to save changes"); + } + } + return View(bundle); + } + + [HttpPost] + public async Task<ActionResult> Delete(int id) + { + var bundleToDelete = await context.UnderwearBundles.FindAsync(id); + if (bundleToDelete == null) + { + return NotFound(); + } + + try + { + context.UnderwearBundles.Remove(bundleToDelete); + await context.SaveChangesAsync(); + return RedirectToAction(nameof(Index)); + } + catch(DbUpdateException) + { + return RedirectToAction(nameof(Delete), new {id = id, saveChangesError = true}); + } + } + } +}
\ No newline at end of file diff --git a/Controllers/BundlesController.cs b/Controllers/BundlesController.cs deleted file mode 100644 index aeefebb..0000000 --- a/Controllers/BundlesController.cs +++ /dev/null @@ -1,47 +0,0 @@ -using Microsoft.AspNetCore.Mvc; -using Microsoft.EntityFrameworkCore; -using MyDarling.Models; - -namespace MyDarling.Controllers -{ - public class BundlesController : Controller - { - private IRepository repository; - - public BundlesController(IRepository repository) - { - this.repository = repository; - } - - public ActionResult Index() - { - return View(repository); - } - - public ActionResult Edit(int id) - { - return View(repository.Bundles.Where(b => b.Id == id).FirstOrDefault()); - } - - public ActionResult Delete(int id) - { - var bundle = repository.Bundles.Where(b => b.Id == id).FirstOrDefault(); - if (bundle != null) - { - repository.Remove(bundle); - } - return RedirectToAction("Index"); - } - - public ActionResult Add() - { - return View(); - } - [HttpPost] - public ActionResult Add(UnderwearBundle b) - { - repository.Add(b); - return RedirectToAction("Index"); - } - } -}
\ No newline at end of file diff --git a/Controllers/HomeController.cs b/Controllers/HomeController.cs index 228a9c3..028322c 100644 --- a/Controllers/HomeController.cs +++ b/Controllers/HomeController.cs @@ -6,14 +6,14 @@ namespace MyDarling.Controllers { public class HomeController : Controller { - private IRepository repository; - public HomeController(IRepository repository) + private DataContext context; + public HomeController(DataContext context) { - this.repository = repository; + this.context = context; } public IActionResult Index() { - return View(repository); + return View(context.UnderwearBundles.Include(b => b.Figures)); } } }
\ No newline at end of file |