105 lines
3.5 KiB
Plaintext
105 lines
3.5 KiB
Plaintext
@using TaxBaik.Domain.Entities
|
|
@inject ITaxFilingBrowserClient FilingClient
|
|
@inject IJSRuntime JS
|
|
|
|
@if (Filings == null || Filings.Count == 0)
|
|
{
|
|
<div class="muted">항목이 없습니다.</div>
|
|
}
|
|
else
|
|
{
|
|
<div class="admin-table-wrap">
|
|
<table class="admin-table">
|
|
<thead>
|
|
<tr>
|
|
<th>고객</th>
|
|
<th>신고 유형</th>
|
|
<th>기한</th>
|
|
<th>D-day</th>
|
|
<th>메모</th>
|
|
<th>처리</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
@foreach (var filing in Filings)
|
|
{
|
|
var dday = (filing.DueDate.Date - DateTime.Today).Days;
|
|
<tr>
|
|
<td>@filing.ClientName</td>
|
|
<td>@filing.FilingType</td>
|
|
<td>@filing.DueDate.ToString("yyyy-MM-dd")</td>
|
|
<td>
|
|
@if (dday < 0)
|
|
{
|
|
<span class="status-pill danger">D+@(-dday)</span>
|
|
}
|
|
else if (dday <= 7)
|
|
{
|
|
<span class="status-pill warning">D-@dday</span>
|
|
}
|
|
else
|
|
{
|
|
<span>D-@dday</span>
|
|
}
|
|
</td>
|
|
<td>@(filing.Memo ?? "")</td>
|
|
<td>
|
|
<div class="admin-row-actions">
|
|
@if (filing.Status == "pending")
|
|
{
|
|
<button type="button" class="site-button secondary" @onclick="@(() => MarkFiled(filing))">완료</button>
|
|
}
|
|
else
|
|
{
|
|
<span class="status-pill success">완료</span>
|
|
}
|
|
<button type="button" class="admin-icon-button danger" @onclick="@(() => DeleteFiling(filing.Id))">✕</button>
|
|
</div>
|
|
</td>
|
|
</tr>
|
|
}
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
}
|
|
|
|
@code {
|
|
[Parameter]
|
|
public List<TaxFiling>? Filings { get; set; }
|
|
|
|
[Parameter]
|
|
public EventCallback OnStatusChange { get; set; }
|
|
|
|
private async Task MarkFiled(TaxFiling filing)
|
|
{
|
|
filing.Status = "filed";
|
|
var result = await FilingClient.UpdateAsync(filing.Id, filing);
|
|
if (result != null)
|
|
{
|
|
await JS.InvokeVoidAsync("alert", "신고 완료 처리되었습니다.");
|
|
await OnStatusChange.InvokeAsync();
|
|
}
|
|
else
|
|
{
|
|
await JS.InvokeVoidAsync("alert", "처리 실패");
|
|
}
|
|
}
|
|
|
|
private async Task DeleteFiling(int id)
|
|
{
|
|
var confirmed = await JS.InvokeAsync<bool>("confirm", "이 항목을 삭제하시겠습니까?");
|
|
if (!confirmed) return;
|
|
|
|
var success = await FilingClient.DeleteAsync(id);
|
|
if (success)
|
|
{
|
|
await JS.InvokeVoidAsync("alert", "삭제되었습니다.");
|
|
await OnStatusChange.InvokeAsync();
|
|
}
|
|
else
|
|
{
|
|
await JS.InvokeVoidAsync("alert", "삭제 실패");
|
|
}
|
|
}
|
|
}
|