Files
ApplianceRepair/Components/Pages/admin/Admin.razor.cs
2026-04-25 21:25:53 -05:00

98 lines
4.1 KiB
C#

using Microsoft.AspNetCore.Components;
namespace ApplianceRepair.Components.Pages.admin
{
public partial class Admin(HomePageReader homePageReader, ContentCardReader contentCardReader, BusinessConfigReader businessConfigReader, RepairRequestReader repairRequestReader) : ComponentBase
{
public HomePageModel? HomePageModel;
public BusinessInfoModel? BusinessInfo;
public List<RepairRequestModel>? RepairRequests;
private enum AdminTab { Home, Requests, BusinessInfo }
private AdminTab CurrentTab = AdminTab.Home;
protected override async Task OnInitializedAsync()
{
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)) ?? [];
BusinessInfo = new BusinessInfoModel(businessConfig);
HomePageModel = new HomePageModel(latestHomeRecord, businessConfig, servicesList, trustList);
RepairRequests = [];
(await repairRequestReader.ReadAll()).ForEach((record) =>
{
RepairRequests.Add(new RepairRequestModel(record));
});
}
private async void RevertHomePageModel()
{
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)) ?? [];
BusinessInfo = new BusinessInfoModel(businessConfig);
HomePageModel = new HomePageModel(latestHomeRecord, businessConfig, servicesList, trustList);
}
private async void RevertBusinessInfo()
{
var businessConfig = await businessConfigReader.ReadLatestRecord() ?? Defaults.DefaultBusinessConfig;
BusinessInfo = new BusinessInfoModel(businessConfig);
}
private async void SaveHomePageModel()
{
HomePageModel.UpdatedAt = DateTime.Now;
await homePageReader.UpdateRecord(HomePageModel);
foreach (var card in HomePageModel.ServicesCards)
{
card.UpdatedAt = DateTime.Now;
await contentCardReader.UpdateRecord(card);
}
foreach (var card in HomePageModel.TrustCards)
{
card.UpdatedAt = DateTime.Now;
await contentCardReader.UpdateRecord(card);
}
}
private async void SaveBusinessInfo()
{
BusinessInfo.UpdatedAt = DateTime.Now;
await businessConfigReader.UpdateRecord(BusinessInfo);
}
private void AddServiceCard()
{
HomePageModel?.ServicesCards.Add(new ContentCardModel() {
CreatedAt = DateTime.Now,
UpdatedAt = DateTime.Now,
BelongsToPage = HomePageModel.PageName,
Group = HomePageModel.ContentCardTypes.Services.ToString(),
Header = "Service Name",
Text = "Short Description"
});
}
private async void AddTrustCard()
{
HomePageModel?.TrustCards.Add(new ContentCardModel()
{
CreatedAt = DateTime.Now,
UpdatedAt = DateTime.Now,
BelongsToPage = HomePageModel.PageName,
Group = HomePageModel.ContentCardTypes.Trust.ToString(),
Header = "Header",
Text = "Short Description"
});
}
}
}