@page "/admin/inquiries"
@attribute [Authorize]
@using TaxBaik.Web.Services
@inject IInquiryBrowserClient InquiryClient

<PageTitle>문의 관리</PageTitle>

<AdminPageHeader Title="문의 관리" Eyebrow="Customer Requests" Subtitle="상담 요청을 상태별로 확인하고 후속 조치를 기록합니다.">
    <ChildContent>
        <MudButton Variant="Variant.Filled" Color="Color.Primary" StartIcon="@Icons.Material.Filled.Add"
                   Href="/taxbaik/admin/inquiries/create">새 문의 등록</MudButton>
    </ChildContent>
</AdminPageHeader>

<AdminDataPanel Loading="@isLoading">
    <MudTabs Rounded="true" Elevation="0" Class="admin-tabs">
        <MudTabPanel Text="전체">
            <InquiryTable Inquiries="allInquiries" Status="" />
        </MudTabPanel>
        <MudTabPanel Text="신규">
            <InquiryTable Inquiries="allInquiries" Status="new" />
        </MudTabPanel>
        <MudTabPanel Text="상담중">
            <InquiryTable Inquiries="allInquiries" Status="consulting" />
        </MudTabPanel>
        <MudTabPanel Text="계약완료">
            <InquiryTable Inquiries="allInquiries" Status="contracted" />
        </MudTabPanel>
        <MudTabPanel Text="거절">
            <InquiryTable Inquiries="allInquiries" Status="rejected" />
        </MudTabPanel>
        <MudTabPanel Text="종결">
            <InquiryTable Inquiries="allInquiries" Status="closed" />
        </MudTabPanel>
    </MudTabs>
</AdminDataPanel>

@code {
    [CascadingParameter]
    private Task<AuthenticationState>? AuthStateTask { get; set; }

    private bool isLoading = true;
    private IReadOnlyList<Domain.Entities.Inquiry> allInquiries = [];

    protected override async Task OnInitializedAsync()
    {
        if (AuthStateTask != null)
        {
            var authState = await AuthStateTask;
            if (authState.User.Identity?.IsAuthenticated == true)
            {
                await LoadData();
            }
        }
    }

    private async Task LoadData()
    {
        isLoading = true;
        try
        {
            var (items, _) = await InquiryClient.GetPagedAsync(1, 200);
            allInquiries = items.ToList();
        }
        catch
        {
            allInquiries = [];
        }
        finally
        {
            isLoading = false;
        }
    }
}
