@page "/admin/inquiries/{InquiryId:int}" @attribute [Authorize] @using TaxBaik.Web.Services @inject IInquiryBrowserClient InquiryClient @inject NavigationManager Navigation @inject IJSRuntime JS 문의 상세
Inquiry Details

문의 상세

문의 정보를 확인하고 처리 상태를 관리합니다.

@if (inquiry != null) {

문의 정보

이름@inquiry.Name
연락처@inquiry.Phone
이메일@(inquiry.Email ?? "-")
분야@inquiry.ServiceType
문의 내용@inquiry.Message
접수일시@inquiry.CreatedAt.ToLocalTime().ToString("yyyy-MM-dd HH:mm")

담당자 메모

처리 상태

@foreach (var (key, label) in InquiryStatusMapper.Labels) { }
@if (inquiry.ClientId == null) {

고객 카드 생성

이 문의를 고객 카드로 등록합니다.

} else {

연결된 고객

고객 카드 보기
}
} else {
문의를 찾을 수 없습니다.
} @code { [Parameter] public int InquiryId { get; set; } private Domain.Entities.Inquiry? inquiry; private string adminMemo = ""; protected override async Task OnInitializedAsync() { inquiry = await InquiryClient.GetByIdAsync(InquiryId); adminMemo = inquiry?.AdminMemo ?? ""; } private async Task OnStatusChanged(string status) { if (inquiry == null) return; try { var success = await InquiryClient.UpdateStatusAsync(inquiry.Id, status); if (success) { inquiry.Status = status; await JS.InvokeVoidAsync("alert", "상태가 변경되었습니다."); } else { await JS.InvokeVoidAsync("alert", "상태 변경에 실패했습니다."); } } catch (Exception ex) { await JS.InvokeVoidAsync("alert", $"오류: {ex.Message}"); } } private async Task SaveMemo() { if (inquiry == null) return; try { var success = await InquiryClient.UpdateAdminMemoAsync(inquiry.Id, adminMemo); if (success) { inquiry.AdminMemo = adminMemo; await JS.InvokeVoidAsync("alert", "메모가 저장되었습니다."); } else { await JS.InvokeVoidAsync("alert", "메모 저장에 실패했습니다."); } } catch (Exception ex) { await JS.InvokeVoidAsync("alert", $"오류: {ex.Message}"); } } private async Task ConvertToClient() { if (inquiry == null) return; try { var clientId = await InquiryClient.ConvertToClientAsync( inquiry.Id, inquiry.Name, inquiry.Phone, inquiry.ServiceType); if (clientId > 0) { inquiry.ClientId = clientId; inquiry.Status = "consulting"; await JS.InvokeVoidAsync("alert", "고객 카드가 생성되었습니다."); } else { await JS.InvokeVoidAsync("alert", "고객 카드 생성에 실패했습니다."); } } catch (Exception ex) { await JS.InvokeVoidAsync("alert", $"오류: {ex.Message}"); } } private string GetStatusButtonClass(string status) => inquiry?.Status == status ? "site-button primary" : "site-button secondary"; }