29 lines
1.4 KiB
C#
29 lines
1.4 KiB
C#
using Microsoft.Extensions.Caching.Memory;
|
|
|
|
namespace ApplianceRepair.Components.Pages
|
|
{
|
|
public partial class Home(IMemoryCache cache, HomePageReader homePageReader, ContentCardReader contentCardReader, BusinessConfigReader businessConfigReader)
|
|
{
|
|
private HomePageModel? Model;
|
|
|
|
protected override async Task OnInitializedAsync()
|
|
{
|
|
if (!cache.TryGetValue(nameof(HomePageModel), out Model))
|
|
{
|
|
var businessConfig = await businessConfigReader.ReadLatestRecord() ?? Defaults.DefaultBusinessConfig;
|
|
var latestHomeRecord = await homePageReader.ReadLatestRecord() ?? Defaults.DefaultHomePageContent;
|
|
var servicesList = await contentCardReader.ReadAllByPageAndGroup(HomePageModel.PageName, nameof(HomePageModel.ContentCardTypes.Services)) ?? [];
|
|
var trustList = await contentCardReader.ReadAllByPageAndGroup(HomePageModel.PageName, nameof(HomePageModel.ContentCardTypes.Trust)) ?? [];
|
|
|
|
Model = new HomePageModel(latestHomeRecord, businessConfig, servicesList, trustList);
|
|
|
|
var cacheOptions = new MemoryCacheEntryOptions()
|
|
.SetAbsoluteExpiration(TimeSpan.FromHours(24))
|
|
.SetSlidingExpiration(TimeSpan.FromHours(2));
|
|
|
|
cache.Set(nameof(HomePageModel), Model, cacheOptions);
|
|
}
|
|
}
|
|
}
|
|
}
|