summaryrefslogtreecommitdiff
path: root/Controllers/BundleController.cs
diff options
context:
space:
mode:
authorSergey Chebotar <s.chebotar@gmail.com>2023-03-02 07:28:22 +0300
committerSergey Chebotar <s.chebotar@gmail.com>2023-03-02 07:28:22 +0300
commit607d029030baa11f890af7b948b129c0ec975905 (patch)
tree6872dff56d4f62df30c8fb0430ad660953f03f1b /Controllers/BundleController.cs
parent6cb87f6c78d774d7179edceb2c8305ca42a257c1 (diff)
Base figure adding
Diffstat (limited to 'Controllers/BundleController.cs')
-rw-r--r--Controllers/BundleController.cs225
1 files changed, 124 insertions, 101 deletions
diff --git a/Controllers/BundleController.cs b/Controllers/BundleController.cs
index fe52a6e..a802a34 100644
--- a/Controllers/BundleController.cs
+++ b/Controllers/BundleController.cs
@@ -1,109 +1,132 @@
using System.Data;
using Microsoft.AspNetCore.Mvc;
+using Microsoft.AspNetCore.Hosting;
using Microsoft.EntityFrameworkCore;
using MyDarling.Models;
namespace MyDarling.Controllers
{
- public class BundleController : Controller
- {
- private DataContext context;
-
- 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.Include(b => b.Figures).Where(b => b.Id == id).FirstOrDefaultAsync());
- }
-
- 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.Figures, 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});
- }
- }
- }
+ public class BundleController : Controller
+ {
+ private DataContext context;
+ private IWebHostEnvironment environment;
+
+ public BundleController(DataContext context, IWebHostEnvironment environment)
+ {
+ this.environment = environment;
+ 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.Include(b => b.Figures).Where(b => b.Id == id).FirstOrDefaultAsync());
+ }
+
+ 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();
+ }
+
+ var file = Request.Form.Files.FirstOrDefault();
+
+ if (await TryUpdateModelAsync<UnderwearBundle>(
+ bundle,
+ "",
+ b => b.Name, b => b.Description, b => b.Figures, b => b.Price))
+ {
+ if (file != null)
+ {
+ var newFigure = new Figure();
+ bundle.Figures.Add(newFigure);
+ newFigure.FilePath = $"/Content/{bundle.Id}/{Guid.NewGuid()}{Path.GetExtension(file.FileName)}";
+ var savePath = environment.WebRootPath + "/Content/" + bundle.Id + "/";
+ if (!Directory.Exists(savePath))
+ {
+ Directory.CreateDirectory(savePath);
+ }
+ using var fileStream = new FileStream(environment.WebRootPath + newFigure.FilePath, FileMode.Create);
+ await file.CopyToAsync(fileStream);
+ }
+
+ 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