46 lines
1.5 KiB
Plaintext
46 lines
1.5 KiB
Plaintext
@page "/admin/inquiries/create"
|
|
@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
|
|
|
|
<PageTitle>문의 등록</PageTitle>
|
|
|
|
<section class="admin-page-hero">
|
|
<div>
|
|
<div class="admin-eyebrow">Customer Relations</div>
|
|
<h1 class="admin-page-title">새 문의 등록</h1>
|
|
<p class="admin-page-subtitle">고객 문의를 등록합니다. (전화, 오프라인 등)</p>
|
|
</div>
|
|
<button type="button" class="site-button secondary" @onclick="GoBack">취소</button>
|
|
</section>
|
|
|
|
<div class="admin-surface mt-4">
|
|
<InquiryForm ButtonText="등록" OnSubmit="HandleCreate" OnCancel="GoBack" />
|
|
</div>
|
|
|
|
@code {
|
|
private void GoBack() => Navigation.NavigateTo("/taxbaik/admin/inquiries");
|
|
|
|
private async Task HandleCreate(InquiryForm.InquiryFormModel model)
|
|
{
|
|
try
|
|
{
|
|
await InquiryService.SubmitAsync(model.Name, model.Phone, model.ServiceType, model.Message, model.Email, ipAddress: "admin-registered");
|
|
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}");
|
|
}
|
|
}
|
|
}
|