summaryrefslogtreecommitdiff
path: root/Controllers
diff options
context:
space:
mode:
authorSergey Chebotar <s.chebotar@gmail.com>2023-02-20 21:53:21 +0300
committerSergey Chebotar <s.chebotar@gmail.com>2023-02-20 21:53:21 +0300
commit3c83f9f4b01b5965e04739e5f8accf3235f8f699 (patch)
tree8ec80ceaf26f1343ecccab682e9041689f4f5701 /Controllers
parentc740669676b30e5eae3cbadbef2810671b9e1c37 (diff)
Add base crud actions for bundles
Diffstat (limited to 'Controllers')
-rw-r--r--Controllers/BundleController.cs110
-rw-r--r--Controllers/BundlesController.cs47
-rw-r--r--Controllers/HomeController.cs8
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