Files
moadiran/TaxPayerFull/CUSComponent/OrderItemRead.razor

246 lines
8.6 KiB
Plaintext
Raw Normal View History

2024-07-26 20:30:52 +03:30
@using Front.Services
@using Shared.DTOs
@inject HttpClientController hc;
2024-07-29 23:32:54 +03:30
@inject UserAuthenticationDTO userinfo
2024-07-26 20:30:52 +03:30
<Preload LoadingText="در حال بارگذاری..." />
2024-07-27 17:06:32 +03:30
<ConfirmDialog @ref="dialog" />
2024-07-26 20:30:52 +03:30
@* alert *@
<div class="row">
<Alert hidden="@Hidealert" Color="@alertColor" Dismissable="false">
<Icon Name="@alertIconName" class="me-2"></Icon>
@alertMessage
</Alert>
</div>
<div class="row g-3">
2024-07-27 17:06:32 +03:30
<div class="col-md-2">
2024-07-26 20:30:52 +03:30
<label class="col-sm-5 col-form-label">وضغیت</label>
2024-07-27 17:06:32 +03:30
<input style="text-align: center;" value="@order.StatusTitle" type="text" class="form-control" id="StatusTitle" placeholder="وضغیت" readonly />
2024-07-26 20:30:52 +03:30
</div>
2024-07-27 17:06:32 +03:30
<div class="col-md-2">
2024-07-28 22:58:39 +03:30
<label class="col-sm-5 col-form-label">تاریخ ایجاد</label>
2024-07-27 17:06:32 +03:30
<InputText style="text-align: center;" @bind-Value="order.DateCreate" type="text" class="form-control" id="DateCreate" placeholder="تاریخ ایجاد" readonly />
2024-07-26 20:30:52 +03:30
</div>
2024-07-27 17:06:32 +03:30
@if (order.Status != StatusOrder.Create)
2024-07-26 20:30:52 +03:30
{
2024-07-27 17:06:32 +03:30
<div class="col-md-2">
2024-07-26 20:30:52 +03:30
<label class="col-sm-5 col-form-label">@titledateapp</label>
2024-07-27 17:06:32 +03:30
<InputText style="text-align: center;" @bind-Value="order.ApprovalDate" type="text" class="form-control" id="ApprovalDate" placeholder="@titledateapp" readonly />
2024-07-26 20:30:52 +03:30
</div>
}
</div>
2024-07-27 17:06:32 +03:30
<br />
<hr class="hr" />
<div class="row g-3">
<Grid @ref="grid" TItem="OrderItemDto"
AllowRowClick="true"
AllowSorting="true"
Class="table table-hover"
DataProvider="DataProvider"
AllowPaging="true"
PageSize="10"
Responsive="true">
<GridColumn TItem="OrderItemDto" HeaderText="عنوان">
@context.Title
</GridColumn>
<GridColumn TItem="OrderItemDto" HeaderText="تعداد">
@context.CreditAmount
</GridColumn>
<GridColumn TItem="OrderItemDto" HeaderText="قیمت واحد">
@context.APrice.ToString("N0")
</GridColumn>
<GridColumn TItem="OrderItemDto" HeaderText="تخفیف">
@context.Discount.ToString("N0")
</GridColumn>
<GridColumn TItem="OrderItemDto" HeaderText="مالیات">
@context.Tax.ToString("N0")
</GridColumn>
<GridColumn TItem="OrderItemDto" HeaderText="مبلغ کل">
@context.Total.ToString("N0")
</GridColumn>
</Grid>
</div>
<hr class="hr" />
<div class="row g-3">
<div class="col-md-3">
<label class="col-sm-5 col-form-label">مبلغ سفارش</label>
<CurrencyInput style="text-align: center;" TValue="decimal" @bind-Value="order.PreDiscount" Locale="fa-Ir" Placeholder="مبلغ سفارش" readonly />
</div>
<div class="col-md-3">
<label class="col-sm-5 col-form-label">تخفیف سفارش</label>
<CurrencyInput style="text-align: center;" TValue="decimal" @bind-Value="order.TDiscount" Locale="fa-Ir" Placeholder="تخفیف سفارش" readonly />
</div>
<div class="col-md-3">
<label class="col-sm-5 col-form-label">مالیات</label>
<CurrencyInput style="text-align: center;" TValue="decimal" @bind-Value="order.TTax" Locale="fa-Ir" Placeholder="مالیات" readonly />
</div>
@* <div class="col-md-4">
<label class="col-sm-5 col-form-label">بغد از تخفیف</label>
<CurrencyInput TValue="decimal" @bind-Value="order.lstDiscount" Locale="fa-Ir" Placeholder="بغد از تخفیف" readonly />
</div> *@
<div class="col-md-3">
<label class="col-sm-5 col-form-label">مبلغ نهایی</label>
2024-07-28 22:58:39 +03:30
<CurrencyInput style="text-align: center;" TValue="decimal" @bind-Value="order.TPrice" Locale="fa-Ir" Placeholder="مبلغ نهایی" readonly />
2024-07-27 17:06:32 +03:30
</div>
</div>
<div class="form-group col-md-4">
<br />
@if (order.Status == StatusOrder.Create)
{
2024-10-15 14:19:54 +03:30
<Button Disabled="SpinnerVisible" class="mt-3" Color="ButtonColor.Success" @onclick="OnClickPay" Type="ButtonType.Button">
2024-07-28 22:58:39 +03:30
پرداخت با کیف پول
2024-07-27 17:06:32 +03:30
</Button>
2024-10-15 14:19:54 +03:30
<Button Disabled="SpinnerVisible" class="mt-3" Color="ButtonColor.Danger" @onclick="OnClickCancel" Type="ButtonType.Button">
2024-07-27 17:06:32 +03:30
ابطال
</Button>
}
</div>
2024-10-15 14:19:54 +03:30
<div class="col-md-2">
<Spinner Visible="SpinnerVisible" Color="SpinnerColor.Primary" />
</div>
2024-07-26 20:30:52 +03:30
@code {
2024-10-15 14:19:54 +03:30
public bool SpinnerVisible { get; set; } = false;
2024-07-26 20:30:52 +03:30
#region Alert
// alert
AlertColor alertColor = AlertColor.Primary;
IconName alertIconName = IconName.CheckCircleFill;
bool Hidealert = true;
string alertMessage = "";
#endregion
2024-07-27 17:06:32 +03:30
private ConfirmDialog dialog = default!;
public ActionInResultComponent result { get; set; }
Grid<OrderItemDto> grid = default!;
2024-07-26 20:30:52 +03:30
[Inject] protected PreloadService PreloadService { get; set; } = default!;
[Parameter] public EventCallback<ActionInResultComponent> OnMultipleOfThree { get; set; }
[Parameter] public OrderDto order { get; set; }
List<OrderItemDto> OrderItems = new List<OrderItemDto>();
string titledateapp = "تاریخ";
protected override async Task OnParametersSetAsync()
{
2024-07-29 23:32:54 +03:30
Hidealert = true;
2024-07-27 17:06:32 +03:30
if (order.Status == StatusOrder.Cancel)
2024-07-26 20:30:52 +03:30
{
titledateapp += " ابطال";
}
else if (order.Status == StatusOrder.Cancel)
{
titledateapp += " پرداخت";
}
await base.OnParametersSetAsync();
}
}
2024-07-27 17:06:32 +03:30
@functions {
private async Task<GridDataProviderResult<OrderItemDto>> DataProvider(GridDataProviderRequest<OrderItemDto> request)
{
OrderItems = await LoadOrderItem(); // call a service or an API to pull the employees
return await Task.FromResult(request.ApplyTo(OrderItems));
}
2024-07-26 20:30:52 +03:30
private void ShowSuccessAlert(string msg)
{
Hidealert = false;
alertColor = AlertColor.Success;
alertIconName = IconName.CheckCircleFill;
alertMessage = msg;
}
private void ShowDangerAlert(string msg)
{
Hidealert = false;
alertColor = AlertColor.Danger;
alertIconName = IconName.ExclamationTriangleFill;
alertMessage = msg;
}
2024-07-27 17:06:32 +03:30
private async Task<List<OrderItemDto>> LoadOrderItem()
{
2024-10-15 14:19:54 +03:30
SpinnerVisible = true;
2024-07-27 17:06:32 +03:30
var rsp = await hc.Get($"Orders/GetOrderDetails/{order.ID}");
2024-07-26 20:30:52 +03:30
if (rsp.IsSuccessStatusCode)
2024-10-15 14:19:54 +03:30
{
SpinnerVisible = false;
2024-07-27 17:06:32 +03:30
return await rsp.Content.ReadFromJsonAsync<List<OrderItemDto>?>();
2024-10-15 14:19:54 +03:30
}
2024-07-26 20:30:52 +03:30
else
2024-07-27 17:06:32 +03:30
{
2024-10-15 14:19:54 +03:30
SpinnerVisible = false;
2024-07-26 20:30:52 +03:30
ShowDangerAlert("خطایی در بارگیری");
2024-07-27 17:06:32 +03:30
return new List<OrderItemDto>();
}
}
private async Task OnClickPay()
{
2024-10-15 14:19:54 +03:30
SpinnerVisible = true;
2024-07-29 17:50:46 +03:30
var rsp = await hc.Get($"Orders/SubmitOrderBywallet/{order.ID}");
2024-07-29 23:32:54 +03:30
2024-07-29 17:50:46 +03:30
if (rsp.IsSuccessStatusCode)
{
2024-07-29 23:32:54 +03:30
userinfo.Company.Credit -= order.TPrice;
2024-07-29 17:50:46 +03:30
result = new ActionInResultComponent();
result.Status = ComponentStatus.success;
result.Action = ComponentAction.add;
2024-10-15 14:19:54 +03:30
2024-07-29 17:50:46 +03:30
await OnMultipleOfThree.InvokeAsync(result);
}
else
{
var request = await rsp.Content.ReadFromJsonAsync<List<string>>();
ShowDangerAlert(request[0]);
}
2024-07-27 23:20:15 +03:30
2024-10-15 14:19:54 +03:30
SpinnerVisible = false;
2024-07-27 17:06:32 +03:30
}
private async Task OnClickCancel()
{
var confirmation = await dialog.ShowAsync(
title: "عملیات ابطال سفارش",
message1: $"از ابطال سفارش {order.ID}",
message2: "اطمینان دارید?");
if (confirmation)
{
2024-10-15 14:19:54 +03:30
SpinnerVisible = true;
2024-07-27 23:20:15 +03:30
PreloadService.Show(SpinnerColor.Dark);
2024-07-28 22:58:39 +03:30
var rsp = await hc.Delete($"Orders/CancelOrder/{order.ID}");
2024-07-27 23:20:15 +03:30
PreloadService.Hide();
if (rsp.IsSuccessStatusCode)
2024-07-27 17:06:32 +03:30
{
2024-10-15 14:19:54 +03:30
if (await rsp.Content.ReadFromJsonAsync<bool>())
2024-07-27 23:20:15 +03:30
{
order.Status = StatusOrder.Cancel;
2024-07-28 22:58:39 +03:30
result = new ActionInResultComponent();
2024-07-27 23:20:15 +03:30
result.Status = ComponentStatus.success;
2024-10-15 14:19:54 +03:30
result.Action = ComponentAction.delete;
await OnMultipleOfThree.InvokeAsync(result);
}
else
ShowDangerAlert("خطای سیستمی");
2024-07-27 17:06:32 +03:30
}
2024-10-15 14:19:54 +03:30
else if (rsp.StatusCode == System.Net.HttpStatusCode.NotFound)
ShowDangerAlert("سفارش یافت نشد");
2024-07-27 17:06:32 +03:30
else
2024-10-15 14:19:54 +03:30
{
var request = await rsp.Content.ReadFromJsonAsync<List<string>>();
ShowDangerAlert(request[0]);
}
SpinnerVisible = false;
2024-07-27 17:06:32 +03:30
}
2024-10-15 14:19:54 +03:30
2024-07-26 20:30:52 +03:30
}
}