diff options
author | Sergey Chebotar <s.chebotar@gmail.com> | 2023-03-02 07:28:22 +0300 |
---|---|---|
committer | Sergey Chebotar <s.chebotar@gmail.com> | 2023-03-02 07:28:22 +0300 |
commit | 607d029030baa11f890af7b948b129c0ec975905 (patch) | |
tree | 6872dff56d4f62df30c8fb0430ad660953f03f1b /Controllers/BundleController.cs | |
parent | 6cb87f6c78d774d7179edceb2c8305ca42a257c1 (diff) |
Base figure adding
Diffstat (limited to 'Controllers/BundleController.cs')
-rw-r--r-- | Controllers/BundleController.cs | 225 |
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 |