@page "/admin/inquiries/{id:int}/edit" @attribute [Authorize] @using TaxBaik.Application.DTOs @using TaxBaik.Application.Services @using TaxBaik.Web.Components.Admin.Forms @inject InquiryService InquiryService @inject NavigationManager Navigation @inject IJSRuntime JS 문의 수정
Customer Relations

문의 수정

고객 문의 정보를 수정합니다.

@if (isLoading) {
} else if (inquiry == null) {
문의를 찾을 수 없습니다.
} else {
} @code { [Parameter] public int Id { get; set; } private Domain.Entities.Inquiry? inquiry; private InquiryForm.InquiryFormModel? formModel; private bool isLoading = true; protected override async Task OnInitializedAsync() { try { inquiry = await InquiryService.GetByIdAsync(Id); if (inquiry != null) { formModel = new InquiryForm.InquiryFormModel { Name = inquiry.Name, Phone = inquiry.Phone, Email = inquiry.Email, ServiceType = inquiry.ServiceType, Message = inquiry.Message, Status = inquiry.Status, AdminMemo = inquiry.AdminMemo }; } } catch (Exception ex) { await JS.InvokeVoidAsync("alert", $"문의 로드 실패: {ex.Message}"); } finally { isLoading = false; } } private void GoBack() => Navigation.NavigateTo("/taxbaik/admin/inquiries"); private async Task HandleUpdate(InquiryForm.InquiryFormModel model) { if (inquiry == null) return; try { inquiry.Name = model.Name; inquiry.Phone = model.Phone; inquiry.Email = model.Email; inquiry.ServiceType = model.ServiceType; inquiry.Message = model.Message; inquiry.AdminMemo = model.AdminMemo; if (inquiry.Status != model.Status) await InquiryService.UpdateStatusAsync(inquiry.Id, model.Status); await InquiryService.UpdateAdminMemoAsync(inquiry.Id, model.AdminMemo); await JS.InvokeVoidAsync("alert", "문의가 수정되었습니다."); Navigation.NavigateTo("/taxbaik/admin/inquiries"); } catch (ValidationException ex) { await JS.InvokeVoidAsync("alert", ex.Message); } catch (Exception ex) { await JS.InvokeVoidAsync("alert", $"수정 실패: {ex.Message}"); } } private async Task DeleteInquiry() { if (inquiry == null) return; if (!await JS.InvokeAsync("confirm", "정말 삭제하시겠습니까? 이 작업은 취소할 수 없습니다.")) return; try { await InquiryService.DeleteAsync(inquiry.Id); await JS.InvokeVoidAsync("alert", "문의가 삭제되었습니다."); Navigation.NavigateTo("/taxbaik/admin/inquiries"); } catch (Exception ex) { await JS.InvokeVoidAsync("alert", $"삭제 실패: {ex.Message}"); } } }