@page "/admin/dashboard" @attribute [Authorize] @using TaxBaik.Application.Services @inject AdminDashboardService DashboardService @inject TaxFilingService FilingService 대시보드
Overview 대시보드 문의 흐름과 콘텐츠 상태를 한 화면에서 확인합니다.
새 포스트 작성
이번달 문의 @summary.ThisMonthInquiries 월간 상담 유입 신규 문의 @summary.NewInquiries 처리 대기 전체 포스트 @summary.TotalPosts 콘텐츠 자산 발행된 포스트 @summary.PublishedPosts 검색 노출 대상 @if (upcomingFilings.Count > 0) {
이번 달 마감 임박 신고 30일 이내 신고 예정 건
전체 일정 보기
고객 신고 유형 기한 D-day @foreach (var f in upcomingFilings) { var dday = (f.DueDate.Date - DateTime.Today).Days; @f.ClientName @f.FilingType @f.DueDate.ToString("yyyy-MM-dd") @if (dday <= 7) { D-@dday } else { D-@dday } }
}
최근 문의 최근 유입된 상담 요청을 빠르게 확인합니다.
문의 전체 보기
이름 전화 분야 상태 날짜 @foreach (var inquiry in summary.RecentInquiries) { @inquiry.Name @inquiry.Phone @inquiry.ServiceType @GetStatusLabel(inquiry.Status) @inquiry.CreatedAt.ToString("yyyy-MM-dd") }
@code { private AdminDashboardSummary summary = new(0, 0, 0, 0, []); private List upcomingFilings = []; protected override async Task OnInitializedAsync() { var summaryTask = DashboardService.GetSummaryAsync(); var filingsTask = FilingService.GetUpcomingAsync(30); await Task.WhenAll(summaryTask, filingsTask); summary = await summaryTask; upcomingFilings = (await filingsTask).ToList(); } private static string GetStatusLabel(string status) => InquiryStatusMapper.Labels.GetValueOrDefault(status, status); private static Color StatusColor(string status) => status switch { "new" => Color.Warning, "consulting" => Color.Info, "contracted" => Color.Success, "rejected" => Color.Error, "closed" => Color.Dark, _ => Color.Default }; }