@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 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 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) { 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 { 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); 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 { await InquiryService.DeleteAsync(inquiry.Id); Snackbar.Add("문의가 삭제되었습니다.", Severity.Success); Navigation.NavigateTo("/taxbaik/admin/inquiries"); } catch (Exception ex) { Snackbar.Add($"삭제 실패: {ex.Message}", Severity.Error); } } }