using System.Data; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; using Microsoft.EntityFrameworkCore; using MyDarling.Models; namespace MyDarling.Controllers { [Authorize] public class FigureController : Controller { private DataContext context; private IWebHostEnvironment environment; public FigureController(DataContext context, IWebHostEnvironment environment) { this.context = context; this.environment = environment; } public async Task Details(int id) { return View(await context.Figures.Where(f => f.Id == id).FirstOrDefaultAsync()); } [HttpPost] public async Task Edit(int? id) { if (id == null) { return NotFound(); } var figure = await context.Figures.FindAsync(id); if (figure == null) { return NotFound(); } var bundle = await context.UnderwearBundles .Where(b => b.Figures.Contains(figure)) .FirstOrDefaultAsync(); if (await TryUpdateModelAsync
( figure, "", f => f.Description)) { try { await context.SaveChangesAsync(); return RedirectToAction("Details", "Bundle", new { Id = bundle?.Id}); } catch (SystemException) { ModelState.AddModelError("", "Unable to save changes"); } } return View(figure); } [HttpPost] public async Task Delete(int id) { var figureToDelete = await context.Figures.FindAsync(id); if (figureToDelete == null) { return NotFound(); } try { FileInfo figureFile = new FileInfo(environment.WebRootPath + figureToDelete.FilePath); if (figureFile.Exists) { figureFile.Delete(); } context.Figures.Remove(figureToDelete); await context.SaveChangesAsync(); return RedirectToAction(nameof(Index), "Bundle"); } catch (DbUpdateException) { return RedirectToAction(nameof(Delete), new { id = id, saveChangesError = true }); } } } }