@page "/admin/inquiries/{id:int}/edit" @attribute [Authorize] @using TaxBaik.Application.DTOs @using TaxBaik.Web.Components.Admin.Forms @inject IInquiryBrowserClient InquiryClient @inject NavigationManager Navigation @inject ISnackbar Snackbar @inject IDialogService DialogService 문의 수정 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 InquiryClient.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) { Snackbar.Add($"문의 로드 실패: {ex.Message}", Severity.Error); } finally { isLoading = false; } } private void GoBack() { Navigation.NavigateTo("/taxbaik/admin/inquiries"); } private async Task HandleUpdate(InquiryForm.InquiryFormModel model) { if (inquiry == null) return; try { var updated = await InquiryClient.UpdateAsync(inquiry.Id, new UpdateInquiryDto { Name = model.Name, Phone = model.Phone, Email = model.Email, ServiceType = model.ServiceType, Message = model.Message, Status = model.Status, AdminMemo = model.AdminMemo }); if (updated == null) { Snackbar.Add("문의 수정에 실패했습니다.", Severity.Error); return; } inquiry = updated; 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 }; Snackbar.Add("문의가 수정되었습니다.", Severity.Success); Navigation.NavigateTo("/taxbaik/admin/inquiries"); } catch (ValidationException ex) { Snackbar.Add(ex.Message, Severity.Error); } catch (Exception ex) { Snackbar.Add($"수정 실패: {ex.Message}", Severity.Error); } } private async Task DeleteInquiry() { if (inquiry == null) return; var result = await DialogService.ShowMessageBox( "문의 삭제", "정말 삭제하시겠습니까? 이 작업은 취소할 수 없습니다.", "삭제", "취소"); if (result != true) return; try { var deleted = await InquiryClient.DeleteAsync(inquiry.Id); if (!deleted) { Snackbar.Add("문의 삭제에 실패했습니다.", Severity.Error); return; } Snackbar.Add("문의가 삭제되었습니다.", Severity.Success); Navigation.NavigateTo("/taxbaik/admin/inquiries"); } catch (Exception ex) { Snackbar.Add($"삭제 실패: {ex.Message}", Severity.Error); } } }