bunch o stuff

This commit is contained in:
2026-04-25 13:14:08 -05:00
parent fc7db1fedd
commit a1fddb3513
18 changed files with 1037 additions and 190 deletions

View File

@@ -21,16 +21,22 @@
<div class="container">
<header class="admin-header">
<div class="tab-container">
<button class="tab-btn @(currentTab == AdminTab.Home ? "active" : "")"
@onclick="() => currentTab = AdminTab.Home">
<button class="tab-btn @(CurrentTab == AdminTab.Home ? "active" : "")"
@onclick="() => CurrentTab = AdminTab.Home">
Home Page
</button>
</div>
<div class="tab-container">
<button class="tab-btn @(CurrentTab == AdminTab.BusinessInfo ? "active" : "")"
@onclick="() => CurrentTab = AdminTab.BusinessInfo">
Business Info
</button>
</div>
</header>
@if (currentTab == AdminTab.Home)
@if (CurrentTab == AdminTab.Home)
{
<EditForm FormName="HomePageForm" Model="HomePageModel" OnValidSubmit="SaveHomePageModel" On class="admin-form home-page-form">
<EditForm FormName="HomePageForm" Model="HomePageModel" OnValidSubmit="SaveHomePageModel" On class="admin-form">
<DataAnnotationsValidator />
<div class="form-section text-center">
@@ -100,9 +106,35 @@
</div>
</EditForm>
}
else
else if (CurrentTab == AdminTab.BusinessInfo)
{
<h1>Another page</h1>
<EditForm FormName="BusinessInfoForm" Model="BusinessInfo" OnValidSubmit="SaveBusinessInfo" On class="admin-form">
<DataAnnotationsValidator />
<div class="form-section text-center">
<h3><i class="icon">🏠</i> Business Info</h3>
<div class="input-group">
<label>Business Name</label>
<InputText @bind-Value="BusinessInfo.Name" class="form-input" />
</div>
<div class="input-group">
<label>Phone Number</label>
<InputText @bind-Value="BusinessInfo.PhoneNumber" class="form-input" />
</div>
<div class="input-group">
<label>Support Email</label>
<InputText @bind-Value="BusinessInfo.SupportEmail" class="form-input" />
</div>
</div>
<div class="admin-footer">
<button type="submit" class="btn btn-save">Save</button>
<button type="button" class="btn btn-revert" @onclick="RevertBusinessInfo">Revert</button>
</div>
</EditForm>
}
</div>
</div>

View File

@@ -1,39 +1,63 @@
namespace ApplianceRepair.Components.Pages.admin
{
public partial class EditPages(HomePageReader homePageReader, ContentCardReader contentCardReader)
public partial class EditPages(HomePageReader homePageReader, ContentCardReader contentCardReader, BusinessConfigReader businessConfigReader)
{
public HomePageModel? HomePageModel;
public BusinessInfoModel? BusinessInfo;
private enum AdminTab { Home, About }
private AdminTab currentTab = AdminTab.Home;
private enum AdminTab { Home, About, BusinessInfo }
private AdminTab CurrentTab = AdminTab.Home;
override
protected async void OnInitialized()
protected override async Task OnInitializedAsync()
{
HomePageModel = await homePageReader.ReadLatestRecordWithModel(contentCardReader) ?? Defaults.DefaultHomePageContent;
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 RevertHomePageModel()
{
HomePageModel = await homePageReader.ReadLatestRecordWithModel(contentCardReader) ?? Defaults.DefaultHomePageContent;
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.CreatedAt = DateTime.Now;
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);
}
}
await homePageReader.AddRecord(HomePageModel);
private async void SaveBusinessInfo()
{
BusinessInfo.UpdatedAt = DateTime.Now;
await businessConfigReader.UpdateRecord(BusinessInfo);
}
private void AddServiceCard()
@@ -42,7 +66,7 @@
CreatedAt = DateTime.Now,
UpdatedAt = DateTime.Now,
BelongsToPage = HomePageModel.PageName,
Group = HomePageModel.ContentCardTypes.Service.ToString(),
Group = HomePageModel.ContentCardTypes.Services.ToString(),
Header = "Service Name",
Text = "Short Description"
});