0
0
MyDarling/Pages/Figure.cshtml
2023-06-03 07:41:46 +03:00

124 lines
4.2 KiB
Plaintext

@* @page "{id}"
@model FigureModel;
@using MyDarling.Models;
@using Microsoft.EntityFrameworkCore;
@using Microsoft.AspNetCore.Mvc.RazorPages
<!DOCTYPE html>
<html>
<head>
<title>Редактирование фотографии</title>
<link href="/lib/bootstrap/css/bootstrap.min.css" rel="stylesheet" />
</head>
<body>
<nav class="navbar navbar-dark bg-primary">
<a class="navbar-brand mx-4" href="/Bundle"><img height="30" src="/assets/img/logo.svg"></a>
<a href="/Account/logout"><button class="btn btn-outline-light mx-4">Выйти</button></a>
</nav>
<div class="container">
<div class="row row-cols-xl-3 row-cols-md-2 justify-content-center mt-3">
<div class="col">
<div class="thumbnail">
<a href="@Model.FilePath">
<img src="@Model.FilePath" class="img-thumbnail img-fluid" alt="@Model.Figure?.Description">
</a>
</div>
<form method="post" class="m-2">
@Html.AntiForgeryToken()
<div class="form-group">
<label class="form-label">Описание:</label>
<input name="description" class="form-control" value="@Model.Figure?.Description" />
</div>
<button type="submit" class="btn btn-outline-success mt-2">Сохранить</button>
</form>
<form asp-page-handler="Delete" method="post">
<button type="submit" class="btn btn-outline-danger mt-2">Удалить</button>
</form>
</div>
</div>
</div>
</body>
</html>
@functions
{
public class FigureModel : PageModel
{
private DataContext context;
private IWebHostEnvironment environment;
public string? FilePath { get; set; }
public Figure? Figure { get; set; }
public UnderwearBundle? Bundle { get; set; }
public FigureModel(DataContext context, IWebHostEnvironment environment)
{
this.context = context;
this.environment = environment;
}
public async Task<IActionResult> OnGetAsync(string id)
{
Figure = await context.Figures
.Where(f => f.Id.Equals(id))
.FirstOrDefaultAsync();
if (Figure == null)
{
return NotFound();
}
Bundle = await context.UnderwearBundles
.Where(b => b.Figures.Contains(Figure))
.FirstOrDefaultAsync();
if (Bundle == null)
{
return NotFound();
}
FilePath = $"/Content/{Bundle.Id}/{Figure.Id}.jpg";
return Page();
}
public async Task<IActionResult> OnPostAsync(string id, string description)
{
Figure = await context.Figures
.Where(f => f.Id.Equals(id))
.FirstOrDefaultAsync();
if (Figure != null)
{
Figure.Description = description ?? string.Empty;
}
await context.SaveChangesAsync();
return RedirectToPage();
}
public async Task<IActionResult> OnPostDeleteAsync(string id)
{
Figure = await context.Figures.FindAsync(id);
if (Figure == null)
{
return NotFound();
}
var parentBundle = await context.UnderwearBundles
.Where(b => b.Figures.Contains(Figure))
.FirstAsync();
try
{
string filePath = $"/Content/{parentBundle.Id}/{Figure}.jpg";
FileInfo figureFile = new FileInfo(environment.WebRootPath + filePath);
if (figureFile.Exists)
{
figureFile.Delete();
}
context.Figures.Remove(Figure);
await context.SaveChangesAsync();
return RedirectToPage($"/Bundle/{Bundle.Id}");
}
catch (DbUpdateException)
{
return RedirectToPage($"/Bundle/{Bundle.Id}");
}
}
}
} *@