edited admin page, added request viewer

This commit is contained in:
slinky55
2026-04-25 21:25:53 -05:00
parent a1fddb3513
commit 03ca74d85a
5 changed files with 234 additions and 20 deletions

View File

@@ -1,10 +1,12 @@
@page "/admin/editpages"
@page "/admin"
@using Microsoft.AspNetCore.Authorization
@attribute [Authorize]
@rendermode InteractiveServer
<div class="admin-wrapper">
<div class="container">
<header class="admin-header">
<h1>Page Content Management</h1>
<h1>Admin Panel</h1>
<p>Update your business details and home page content below.</p>
</header>
@@ -32,6 +34,12 @@
Business Info
</button>
</div>
<div class="tab-container">
<button class="tab-btn @(CurrentTab == AdminTab.Requests ? "active" : "")"
@onclick="() => CurrentTab = AdminTab.Requests">
Requests
</button>
</div>
</header>
@if (CurrentTab == AdminTab.Home)
@@ -136,6 +144,57 @@
</div>
</EditForm>
}
else if (CurrentTab == AdminTab.Requests)
{
<div class="form-section">
<h3><i class="icon">📋</i> Service Requests</h3>
@if (RepairRequests == null || !RepairRequests.Any())
{
<p class="text-muted">No service requests found.</p>
}
else
{
<div class="requests-list">
@foreach (var request in RepairRequests)
{
<div class="content-card request-card">
<div class="request-header">
<span class="request-id">@request.RequestNumber</span>
<span class="request-date">@request.CreatedAt.ToString("MMM dd, yyyy")</span>
</div>
<div class="request-body">
<div class="info-row">
<span class="label">Customer:</span>
<span class="value">@request.Name</span>
</div>
<div class="info-row">
<span class="label">Phone:</span>
<span class="value">@request.FormattedPhoneNumber</span>
<a href="tel:@request.Phone" class="phone-link">
<i class="icon">📞</i>
</a>
</div>
<div class="info-row">
<span class="label">Appliance:</span>
<span class="value"><strong>@request.Brand</strong> @request.Type</span>
</div>
<div class="info-notes">
<span class="label">Issue Notes:</span>
<p>@request.Notes</p>
</div>
</div>
<div class="request-actions">
<button class="btn-small btn-view" @onclick="() => {}">View Images</button>
</div>
</div>
}
</div>
}
</div>
}
</div>
</div>
}

View File

@@ -1,11 +1,14 @@
namespace ApplianceRepair.Components.Pages.admin
using Microsoft.AspNetCore.Components;
namespace ApplianceRepair.Components.Pages.admin
{
public partial class EditPages(HomePageReader homePageReader, ContentCardReader contentCardReader, BusinessConfigReader businessConfigReader)
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, About, BusinessInfo }
private enum AdminTab { Home, Requests, BusinessInfo }
private AdminTab CurrentTab = AdminTab.Home;
protected override async Task OnInitializedAsync()
@@ -17,6 +20,12 @@
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()

View File

@@ -164,6 +164,75 @@ label {
line-height: 1.5;
}
.requests-list {
display: flex;
flex-direction: column;
gap: 1.5rem;
padding-top: 1rem;
}
.request-card {
display: grid;
grid-template-columns: 150px 1fr 180px;
align-items: center;
text-align: left;
padding: 20px;
}
.request-id {
font-weight: 700;
color: #2a5298;
font-size: 1.1rem;
}
.request-date {
font-size: 0.85rem;
color: #888;
}
.request-body {
border-left: 1px solid #eee;
border-right: 1px solid #eee;
padding: 0 20px;
}
.info-row {
margin-bottom: 5px;
font-size: 0.9rem;
}
.info-row .label {
display: inline;
text-transform: none;
margin: 0;
color: #666;
font-weight: 600;
}
.info-notes {
margin-top: 10px;
font-size: 0.85rem;
font-style: italic;
color: #444;
}
.phone-link {
color: #2a5298;
text-decoration: none;
font-weight: 600;
transition: color 0.2s;
}
.phone-link:hover {
color: #4CAF50; /* Changes to green on hover to signify 'Call' */
text-decoration: underline;
}
.request-actions {
display: flex;
justify-content: flex-end;
}
.btn-save {
background: #4CAF50;
color: white;
@@ -182,6 +251,23 @@ label {
background: #43a047;
}
.btn-small {
padding: 8px 20px;
border-radius: 20px;
font-size: 0.8rem;
font-weight: 600;
cursor: pointer;
border: 1px solid #2a5298;
background: transparent;
color: #2a5298;
transition: all 0.2s ease;
}
.btn-small:hover {
background: #2a5298;
color: white;
}
.btn-revert {
background: transparent;
color: #666;
@@ -237,4 +323,16 @@ label {
justify-content: center;
row-gap: 2rem;
}
.request-card {
grid-template-columns: 1fr;
gap: 15px;
}
.request-body {
border: none;
padding: 10px 0;
border-top: 1px solid #eee;
border-bottom: 1px solid #eee;
}
}