blob: b0ba47039a85645c4cc694baf78612a1d2c6533f (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
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();
}
}
|