Base Deleting
This commit is contained in:
parent
607d029030
commit
cdd58a8f51
@ -1,132 +1,145 @@
|
|||||||
using System.Data;
|
using System.Data;
|
||||||
using Microsoft.AspNetCore.Mvc;
|
using Microsoft.AspNetCore.Mvc;
|
||||||
using Microsoft.AspNetCore.Hosting;
|
|
||||||
using Microsoft.EntityFrameworkCore;
|
using Microsoft.EntityFrameworkCore;
|
||||||
using MyDarling.Models;
|
using MyDarling.Models;
|
||||||
|
|
||||||
namespace MyDarling.Controllers
|
namespace MyDarling.Controllers
|
||||||
{
|
{
|
||||||
public class BundleController : Controller
|
public class BundleController : Controller
|
||||||
{
|
{
|
||||||
private DataContext context;
|
private DataContext context;
|
||||||
private IWebHostEnvironment environment;
|
private IWebHostEnvironment environment;
|
||||||
|
|
||||||
public BundleController(DataContext context, IWebHostEnvironment environment)
|
public BundleController(DataContext context, IWebHostEnvironment environment)
|
||||||
{
|
{
|
||||||
this.environment = environment;
|
this.environment = environment;
|
||||||
this.context = context;
|
this.context = context;
|
||||||
}
|
}
|
||||||
|
|
||||||
public ActionResult Index()
|
public ActionResult Index()
|
||||||
{
|
{
|
||||||
return View(context.UnderwearBundles.Include(b => b.Figures));
|
return View(context.UnderwearBundles.Include(b => b.Figures));
|
||||||
}
|
}
|
||||||
|
|
||||||
public ActionResult Create()
|
public ActionResult Create()
|
||||||
{
|
{
|
||||||
return View();
|
return View();
|
||||||
}
|
}
|
||||||
|
|
||||||
[HttpPost]
|
[HttpPost]
|
||||||
public async Task<ActionResult> Create([Bind] UnderwearBundle bundle)
|
public async Task<ActionResult> Create([Bind] UnderwearBundle bundle)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
if (ModelState.IsValid)
|
if (ModelState.IsValid)
|
||||||
{
|
{
|
||||||
await context.UnderwearBundles.AddAsync(bundle);
|
await context.UnderwearBundles.AddAsync(bundle);
|
||||||
context.SaveChanges();
|
context.SaveChanges();
|
||||||
return RedirectToAction(nameof(Index));
|
return RedirectToAction(nameof(Index));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
catch (DataException)
|
catch (DataException)
|
||||||
{
|
{
|
||||||
ModelState.AddModelError("", "Unable to save changes");
|
ModelState.AddModelError("", "Unable to save changes");
|
||||||
}
|
}
|
||||||
return View(bundle);
|
return View(bundle);
|
||||||
}
|
}
|
||||||
|
|
||||||
public async Task<ActionResult> Details(int id)
|
public async Task<ActionResult> Details(int id)
|
||||||
{
|
{
|
||||||
return View(await context.UnderwearBundles.Include(b => b.Figures).Where(b => b.Id == id).FirstOrDefaultAsync());
|
return View(await context.UnderwearBundles.Include(b => b.Figures).Where(b => b.Id == id).FirstOrDefaultAsync());
|
||||||
}
|
}
|
||||||
|
|
||||||
public async Task<ActionResult> Edit(int id)
|
public async Task<ActionResult> Edit(int id)
|
||||||
{
|
{
|
||||||
return View(nameof(Details), await context.UnderwearBundles.FindAsync(id));
|
return View(nameof(Details), await context.UnderwearBundles.FindAsync(id));
|
||||||
}
|
}
|
||||||
|
|
||||||
[HttpPost]
|
[HttpPost]
|
||||||
public async Task<ActionResult> Edit(int? id)
|
public async Task<ActionResult> Edit(int? id)
|
||||||
{
|
{
|
||||||
|
|
||||||
if (id == null)
|
if (id == null)
|
||||||
{
|
{
|
||||||
return NotFound();
|
return NotFound();
|
||||||
}
|
}
|
||||||
|
|
||||||
var bundle = await context.UnderwearBundles.FindAsync(id);
|
var bundle = await context.UnderwearBundles.FindAsync(id);
|
||||||
if (bundle == null)
|
if (bundle == null)
|
||||||
{
|
{
|
||||||
return NotFound();
|
return NotFound();
|
||||||
}
|
}
|
||||||
|
|
||||||
var file = Request.Form.Files.FirstOrDefault();
|
var file = Request.Form.Files.FirstOrDefault();
|
||||||
|
|
||||||
if (await TryUpdateModelAsync<UnderwearBundle>(
|
if (await TryUpdateModelAsync<UnderwearBundle>(
|
||||||
bundle,
|
bundle,
|
||||||
"",
|
"",
|
||||||
b => b.Name, b => b.Description, b => b.Figures, b => b.Price))
|
b => b.Name, b => b.Description, b => b.Figures, b => b.Price))
|
||||||
{
|
{
|
||||||
if (file != null)
|
if (file != null)
|
||||||
{
|
{
|
||||||
var newFigure = new Figure();
|
var newFigure = new Figure();
|
||||||
bundle.Figures.Add(newFigure);
|
bundle.Figures.Add(newFigure);
|
||||||
newFigure.FilePath = $"/Content/{bundle.Id}/{Guid.NewGuid()}{Path.GetExtension(file.FileName)}";
|
newFigure.FilePath = $"/Content/{bundle.Id}/{Guid.NewGuid()}{Path.GetExtension(file.FileName)}";
|
||||||
var savePath = environment.WebRootPath + "/Content/" + bundle.Id + "/";
|
var savePath = environment.WebRootPath + "/Content/" + bundle.Id + "/";
|
||||||
if (!Directory.Exists(savePath))
|
if (!Directory.Exists(savePath))
|
||||||
{
|
{
|
||||||
Directory.CreateDirectory(savePath);
|
Directory.CreateDirectory(savePath);
|
||||||
}
|
}
|
||||||
using var fileStream = new FileStream(environment.WebRootPath + newFigure.FilePath, FileMode.Create);
|
using var fileStream = new FileStream(environment.WebRootPath + newFigure.FilePath, FileMode.Create);
|
||||||
await file.CopyToAsync(fileStream);
|
await file.CopyToAsync(fileStream);
|
||||||
}
|
}
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
await context.SaveChangesAsync();
|
await context.SaveChangesAsync();
|
||||||
return RedirectToAction(nameof(Index));
|
return RedirectToAction(nameof(Index));
|
||||||
}
|
}
|
||||||
|
|
||||||
catch (System.Exception)
|
catch (System.Exception)
|
||||||
{
|
{
|
||||||
ModelState.AddModelError("", "Unable to save changes");
|
ModelState.AddModelError("", "Unable to save changes");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
return View(bundle);
|
return View(bundle);
|
||||||
}
|
}
|
||||||
|
|
||||||
[HttpPost]
|
[HttpPost]
|
||||||
public async Task<ActionResult> Delete(int id)
|
public async Task<ActionResult> Delete(int id)
|
||||||
{
|
{
|
||||||
var bundleToDelete = await context.UnderwearBundles.FindAsync(id);
|
var bundleToDelete = await context.UnderwearBundles.FindAsync(id);
|
||||||
if (bundleToDelete == null)
|
if (bundleToDelete == null)
|
||||||
{
|
{
|
||||||
return NotFound();
|
return NotFound();
|
||||||
}
|
}
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
context.UnderwearBundles.Remove(bundleToDelete);
|
var bundleDirPath = String.Concat(environment.WebRootPath,
|
||||||
await context.SaveChangesAsync();
|
"/Content/",
|
||||||
return RedirectToAction(nameof(Index));
|
bundleToDelete.Id);
|
||||||
}
|
|
||||||
catch (DbUpdateException)
|
if (Directory.Exists(bundleDirPath))
|
||||||
{
|
{
|
||||||
return RedirectToAction(nameof(Delete), new { id = id, saveChangesError = true });
|
Directory.Delete(bundleDirPath, true);
|
||||||
}
|
}
|
||||||
}
|
// foreach (var figure in bundleToDelete.Figures)
|
||||||
}
|
// {
|
||||||
|
// using FigureController controller = new(context, environment);
|
||||||
|
// await controller.Delete(figure.Id);
|
||||||
|
// }
|
||||||
|
|
||||||
|
context.UnderwearBundles.Remove(bundleToDelete);
|
||||||
|
await context.SaveChangesAsync();
|
||||||
|
return RedirectToAction(nameof(Index));
|
||||||
|
}
|
||||||
|
catch (DbUpdateException)
|
||||||
|
{
|
||||||
|
return RedirectToAction(nameof(Delete), new { id = id, saveChangesError = true });
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
@ -8,9 +8,11 @@ namespace MyDarling.Controllers
|
|||||||
public class FigureController : Controller
|
public class FigureController : Controller
|
||||||
{
|
{
|
||||||
private DataContext context;
|
private DataContext context;
|
||||||
public FigureController(DataContext context)
|
private IWebHostEnvironment environment;
|
||||||
|
public FigureController(DataContext context, IWebHostEnvironment environment)
|
||||||
{
|
{
|
||||||
this.context = context;
|
this.context = context;
|
||||||
|
this.environment = environment;
|
||||||
}
|
}
|
||||||
|
|
||||||
public async Task<IActionResult> Details(int id)
|
public async Task<IActionResult> Details(int id)
|
||||||
@ -56,24 +58,30 @@ namespace MyDarling.Controllers
|
|||||||
}
|
}
|
||||||
|
|
||||||
[HttpPost]
|
[HttpPost]
|
||||||
public async Task<ActionResult> Delete(int id)
|
public async Task<ActionResult> Delete(int id)
|
||||||
{
|
{
|
||||||
var figureToDelete = await context.Figures.FindAsync(id);
|
var figureToDelete = await context.Figures.FindAsync(id);
|
||||||
if (figureToDelete == null)
|
if (figureToDelete == null)
|
||||||
{
|
{
|
||||||
return NotFound();
|
return NotFound();
|
||||||
}
|
}
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
context.Figures.Remove(figureToDelete);
|
FileInfo figureFile = new FileInfo(environment.WebRootPath + figureToDelete.FilePath);
|
||||||
await context.SaveChangesAsync();
|
if (figureFile.Exists)
|
||||||
return RedirectToAction(nameof(Index), "Bundle");
|
{
|
||||||
}
|
figureFile.Delete();
|
||||||
catch (DbUpdateException)
|
}
|
||||||
{
|
|
||||||
return RedirectToAction(nameof(Delete), new { id = id, saveChangesError = true });
|
context.Figures.Remove(figureToDelete);
|
||||||
}
|
await context.SaveChangesAsync();
|
||||||
}
|
return RedirectToAction(nameof(Index), "Bundle");
|
||||||
|
}
|
||||||
|
catch (DbUpdateException)
|
||||||
|
{
|
||||||
|
return RedirectToAction(nameof(Delete), new { id = id, saveChangesError = true });
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
Loading…
Reference in New Issue
Block a user