78 lines
2.3 KiB
Plaintext
78 lines
2.3 KiB
Plaintext
@page "/admin/inquiries"
|
|
@attribute [Authorize]
|
|
@using TaxBaik.Web.Services
|
|
@inject IInquiryBrowserClient InquiryClient
|
|
|
|
<PageTitle>문의 관리</PageTitle>
|
|
|
|
<section class="admin-page-hero">
|
|
<div>
|
|
<div class="admin-eyebrow">Customer Requests</div>
|
|
<h1 class="admin-page-title">문의 관리</h1>
|
|
<p class="admin-page-subtitle">상담 요청을 상태별로 확인하고 후속 조치를 기록합니다.</p>
|
|
</div>
|
|
<button type="button" class="site-button primary" @onclick='() => Navigation.NavigateTo("/taxbaik/admin/inquiries/create")'>새 문의 등록</button>
|
|
</section>
|
|
|
|
<div class="admin-surface">
|
|
@if (isLoading)
|
|
{
|
|
<Skeleton Count="6" CssClass="taxbaik-skeleton-grid" />
|
|
}
|
|
else
|
|
{
|
|
<div class="admin-tabbar">
|
|
<button type="button" class="admin-tab active">전체</button>
|
|
<button type="button" class="admin-tab">신규</button>
|
|
<button type="button" class="admin-tab">상담중</button>
|
|
<button type="button" class="admin-tab">계약완료</button>
|
|
<button type="button" class="admin-tab">거절</button>
|
|
<button type="button" class="admin-tab">종결</button>
|
|
</div>
|
|
<InquiryTable Inquiries="allInquiries" Status="" />
|
|
}
|
|
</div>
|
|
|
|
@code {
|
|
[CascadingParameter]
|
|
private Task<AuthenticationState>? AuthStateTask { get; set; }
|
|
[Inject] private NavigationManager Navigation { get; set; } = default!;
|
|
|
|
private bool isLoading = true;
|
|
private IReadOnlyList<Domain.Entities.Inquiry> allInquiries = [];
|
|
|
|
protected override async Task OnAfterRenderAsync(bool firstRender)
|
|
{
|
|
if (firstRender)
|
|
{
|
|
if (AuthStateTask != null)
|
|
{
|
|
var authState = await AuthStateTask;
|
|
if (authState.User.Identity?.IsAuthenticated == true)
|
|
{
|
|
await LoadData();
|
|
StateHasChanged();
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
private async Task LoadData()
|
|
{
|
|
isLoading = true;
|
|
try
|
|
{
|
|
var (items, _) = await InquiryClient.GetPagedAsync(1, 200);
|
|
allInquiries = items.ToList();
|
|
}
|
|
catch
|
|
{
|
|
allInquiries = [];
|
|
}
|
|
finally
|
|
{
|
|
isLoading = false;
|
|
}
|
|
}
|
|
}
|