@page "/admin/clients/create" @page "/admin/clients/{Id:int}/edit" @attribute [Authorize] @using TaxBaik.Application.DTOs @using TaxBaik.Web.Services @using TaxBaik.Domain.Entities @inject IClientBrowserClient ClientClient @inject NavigationManager Navigation @inject ISnackbar Snackbar @(Id.HasValue ? "고객 수정" : "고객 등록")
CRM @(Id.HasValue ? "고객 수정" : "고객 등록")
목록으로
@if (isLoading) { } else { @* 기본 정보 *@ 기본 정보 @* 세무 정보 *@ 세무 정보 @foreach (var t in ClientService.ServiceTypes) { @t } @foreach (var t in ClientService.TaxTypes) { @t } @* 관리 정보 *@ 관리 정보 활성 비활성 @foreach (var s in ClientService.Sources) { @s } @* 저장 버튼 *@ @(isSaving ? "저장 중..." : "저장") 취소 } @code { [Parameter] public int? Id { get; set; } private MudForm form = null!; private CreateClientDto dto = new() { Status = "active" }; private bool isValid; private bool isLoading = true; private bool isSaving; protected override async Task OnInitializedAsync() { if (Id.HasValue) { try { var client = await ClientClient.GetByIdAsync(Id.Value); if (client is null) { Snackbar.Add("고객을 찾을 수 없습니다.", Severity.Error); Navigation.NavigateTo("/taxbaik/admin/clients"); return; } dto = new CreateClientDto { Name = client.Name, CompanyName = client.CompanyName, Phone = client.Phone, Email = client.Email, ServiceType = client.ServiceType, TaxType = client.TaxType, Status = client.Status, Source = client.Source, Memo = client.Memo }; } catch (Exception ex) { Snackbar.Add($"오류: {ex.Message}", Severity.Error); Navigation.NavigateTo("/taxbaik/admin/clients"); return; } } isLoading = false; } private async Task SaveAsync() { await form.Validate(); if (!isValid) return; isSaving = true; try { if (Id.HasValue) { var result = await ClientClient.UpdateAsync(Id.Value, dto); if (result != null) Snackbar.Add("고객 정보가 수정되었습니다.", Severity.Success); else Snackbar.Add("수정에 실패했습니다.", Severity.Error); } else { var result = await ClientClient.CreateAsync(dto); if (result != null) Snackbar.Add("고객이 등록되었습니다.", Severity.Success); else Snackbar.Add("등록에 실패했습니다.", Severity.Error); } Navigation.NavigateTo("/taxbaik/admin/clients"); } catch (Exception ex) { Snackbar.Add($"저장 실패: {ex.Message}", Severity.Error); } finally { isSaving = false; } } }