summaryrefslogtreecommitdiff
path: root/Pages
diff options
context:
space:
mode:
Diffstat (limited to 'Pages')
-rw-r--r--Pages/Figure.cshtml124
-rw-r--r--Pages/Index.cshtml2
-rw-r--r--Pages/Shared/_Navigation.cshtml2
-rw-r--r--Pages/Shared/_Products.cshtml44
-rw-r--r--Pages/Shared/_Projects.cshtml39
5 files changed, 170 insertions, 41 deletions
diff --git a/Pages/Figure.cshtml b/Pages/Figure.cshtml
new file mode 100644
index 0000000..76c2216
--- /dev/null
+++ b/Pages/Figure.cshtml
@@ -0,0 +1,124 @@
+@* @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}");
+ }
+ }
+ }
+} *@ \ No newline at end of file
diff --git a/Pages/Index.cshtml b/Pages/Index.cshtml
index a3ec3a5..9a887a6 100644
--- a/Pages/Index.cshtml
+++ b/Pages/Index.cshtml
@@ -9,5 +9,5 @@
<partial name="_Navigation" />
<partial name="_Masthead" />
<partial name="_About" />
-<partial name="_Projects" />
+<partial name="_Products" />
<partial name="_SignUp" /> \ No newline at end of file
diff --git a/Pages/Shared/_Navigation.cshtml b/Pages/Shared/_Navigation.cshtml
index 7c29a6b..736fd61 100644
--- a/Pages/Shared/_Navigation.cshtml
+++ b/Pages/Shared/_Navigation.cshtml
@@ -10,7 +10,7 @@
<div class="collapse navbar-collapse" id="navbarResponsive">
<ul class="navbar-nav ms-auto">
<li class="nav-item"><a class="nav-link" href="#about">О нас</a></li>
- <li class="nav-item"><a class="nav-link" href="#projects">Комплекты</a></li>
+ <li class="nav-item"><a class="nav-link" href="#products">Комплекты</a></li>
<li class="nav-item"><a class="nav-link" href="#signup">Заказать</a></li>
</ul>
</div>
diff --git a/Pages/Shared/_Products.cshtml b/Pages/Shared/_Products.cshtml
new file mode 100644
index 0000000..a82ac1c
--- /dev/null
+++ b/Pages/Shared/_Products.cshtml
@@ -0,0 +1,44 @@
+@using System.Globalization
+@using Microsoft.EntityFrameworkCore
+@using MyDarling.Models
+@inject DataContext context
+
+@{
+ var products = context.Products
+ .Include(b => b.Figures)
+ .Where(b => b.Price != 0 && b.Figures.Count > 0)
+ .OrderByDescending(b => b.Id);
+}
+
+<section class="projects-section bg-light" id="products">
+ <div class="container px-3 px-lg-4 mt-4">
+ <div class="row gx-4 gx-lg-5 row-cols-2 row-cols-md-3 row-cols-xl-4 justify-content-center">
+ @foreach (var product in products)
+ {
+ <div class="col mb-5">
+ <div class="card h-100">
+ @{
+ var figure = product.Figures.First();
+ var filePath = $"/Content/{product.Id}/{figure.Id}.jpg";
+ }
+ <a data-src="@filePath" data-fancybox="@product.Id"
+ data-caption="@figure.Description"><img class="card-img-top"
+ src="@filePath" alt="@product.Name" /></a>
+ @for (int i = 1; i < product.Figures.Count(); i++)
+ {
+ filePath = $"/Content/{product.Id}/{product.Figures[i].Id}.jpg";
+ <a data-src="@filePath" data-fancybox="@product.Id"
+ data-caption="@product.Figures[i].Description"></a>
+ }
+ <div class="card-body p-4">
+ <div class="text-center">
+ <h5 class="fw-bolder">@product.Name</h5>
+ @String.Format(new CultureInfo("ru-RU"), "{0:C0}", product.Price)
+ </div>
+ </div>
+ </div>
+ </div>
+ }
+ </div>
+ </div>
+</section> \ No newline at end of file
diff --git a/Pages/Shared/_Projects.cshtml b/Pages/Shared/_Projects.cshtml
deleted file mode 100644
index 4b9a62e..0000000
--- a/Pages/Shared/_Projects.cshtml
+++ /dev/null
@@ -1,39 +0,0 @@
-@using System.Globalization
-@using Microsoft.EntityFrameworkCore
-@using MyDarling.Models
-@inject DataContext context
-
-@{
- var bundles = context.UnderwearBundles
- .Include(b => b.Figures)
- .Where(b => b.Price != 0 && b.Figures.Count > 0)
- .OrderByDescending(b => b.Id);
-}
-
-<section class="projects-section bg-light" id="projects">
- <div class="container px-3 px-lg-4 mt-4">
- <div class="row gx-4 gx-lg-5 row-cols-2 row-cols-md-3 row-cols-xl-4 justify-content-center">
- @foreach (var bundle in bundles)
- {
- <div class="col mb-5">
- <div class="card h-100">
- <a data-src="@bundle.Figures[0].FilePath" data-fancybox="@bundle.Id"
- data-caption="@bundle.Figures[0].Description"><img class="card-img-top"
- src="@bundle.Figures[0].FilePath" alt="@bundle.Name" /></a>
- @for (int i = 1; i < @bundle.Figures.Count(); i++)
- {
- <a data-src="@bundle.Figures[i].FilePath" data-fancybox="@bundle.Id"
- data-caption="@bundle.Figures[i].Description"></a>
- }
- <div class="card-body p-4">
- <div class="text-center">
- <h5 class="fw-bolder">@bundle.Name</h5>
- @String.Format(new CultureInfo("ru-RU"), "{0:C0}", @bundle.Price)
- </div>
- </div>
- </div>
- </div>
- }
- </div>
- </div>
-</section> \ No newline at end of file