aboutsummaryrefslogtreecommitdiffstats
path: root/src/Pages/Produktar.cshtml.cs
diff options
context:
space:
mode:
authorivarlovlie <git@ivarlovlie.no>2022-06-01 21:13:43 +0200
committerivarlovlie <git@ivarlovlie.no>2022-06-01 21:13:43 +0200
commit9383a2fb09ffb60cfe63683106945bd688affa59 (patch)
tree65b3f4b48841583e355887db5de5a16e7005fc87 /src/Pages/Produktar.cshtml.cs
downloadvinjesvingenhandel.no-9383a2fb09ffb60cfe63683106945bd688affa59.tar.xz
vinjesvingenhandel.no-9383a2fb09ffb60cfe63683106945bd688affa59.zip
feat: Initial commit after clean slate
Diffstat (limited to 'src/Pages/Produktar.cshtml.cs')
-rw-r--r--src/Pages/Produktar.cshtml.cs82
1 files changed, 82 insertions, 0 deletions
diff --git a/src/Pages/Produktar.cshtml.cs b/src/Pages/Produktar.cshtml.cs
new file mode 100644
index 0000000..b0ba470
--- /dev/null
+++ b/src/Pages/Produktar.cshtml.cs
@@ -0,0 +1,82 @@
+using System.Collections.Generic;
+using System.IO;
+using System.Linq;
+using IOL.Helpers;
+using Microsoft.AspNetCore.Mvc;
+using Microsoft.AspNetCore.Mvc.RazorPages;
+using Microsoft.EntityFrameworkCore;
+using Microsoft.Extensions.Localization;
+using Microsoft.Extensions.Options;
+using VSH.Data.Miscellaneous;
+using VSH.Data.Database;
+using VSH.Data;
+using VSH.Data.Enums;
+using VSH.Data.Static;
+
+namespace VSH.Pages;
+
+public class Produktar : PageModel
+{
+ private readonly MainDbContext _context;
+ private readonly IStringLocalizer<SharedPageResources> _localizer;
+ private readonly IOptions<AppSettings.GeneralConfiguration> _options;
+
+ public string ProductSlug { get; set; }
+ public string CategorySlug { get; set; }
+ public bool IsProduct { get; set; }
+ public bool IsCategory { get; set; }
+ public bool IsCategories { get; set; }
+ public Product CurrentProduct { get; set; }
+
+ public Produktar(
+ MainDbContext context,
+ IStringLocalizer<SharedPageResources> localizer,
+ IOptions<AppSettings.GeneralConfiguration> options
+ ) {
+ _context = context;
+ _localizer = localizer;
+ _options = options;
+ }
+
+ public List<Category> Categories { get; set; }
+
+ public ActionResult OnGet(string categorySlug, string productSlug) {
+ ProductSlug = productSlug;
+ CategorySlug = categorySlug;
+
+ if (ProductSlug.HasValue()) {
+ CurrentProduct = _context.Products.Where(c => c.VisibilityState == ProductVisibility.DEFAULT)
+ .Include(c => c.Category)
+ .SingleOrDefault(p => p.Slug == ProductSlug);
+ IsProduct = CurrentProduct != default;
+ if (!IsProduct)
+ return Page();
+ var productImage = CurrentProduct != null && CurrentProduct.Images.Any()
+ ? CurrentProduct.Images.OrderBy(c => c.Order).FirstOrDefault()
+ : default;
+
+ ViewData["open_graph"] = new OpenGraphData {
+ Description = CurrentProduct?.Description,
+ Image = productImage != default
+ ? (HttpContext.Request.GetRequestHost()
+ + Path.Combine(AppPaths.ProductImages.WebPath, productImage.FileName))
+ : default,
+ Title = $"{CurrentProduct?.Name} {_localizer["frå"]} {_options.Value.StoreName}",
+ };
+ } else if (CategorySlug.HasValue()) {
+ Categories = _context
+ .Categories.Where(c => c.Slug == CategorySlug
+ && c.VisibilityState == CategoryVisibility.DEFAULT)
+ .Include(c => c.Products)
+ .ToList();
+ IsCategory = !IsProduct && Categories?.Count == 1;
+ } else {
+ Categories = _context.Categories.Where(c => c.VisibilityState == CategoryVisibility.DEFAULT)
+ .Include(c => c.Products)
+ .ToList();
+ IsCategories = !IsProduct && Categories?.Count >= 1;
+ }
+
+ return Page();
+ }
+} \ No newline at end of file