@using Front.Services
@using Shared.DTOs
@inject Fixedvalues fv;
@inject HttpClientController hc;
@context.iinn
@context.acn
@context.trmn
@context.paymentMethod
@context.trn
@context.pcn
@context.pid
@context.PaymentDateTime
@context.pv??.ToString("N0")
@if (add)
{
}
else
{
}
@if (add)
{
}
else
{
}
}
@* alert *@
@code {
bool add = true;
[Parameter] public InvoiceDTO invoice { get; set; }
Grid grid = default!;
InvoicePaymentDTO item;
List> pmts;
// alert
AlertColor alertColor = AlertColor.Primary;
IconName alertIconName = IconName.CheckCircleFill;
bool Hidealert = true;
string alertMessage = "";
protected override async Task OnParametersSetAsync()
{
item = new InvoicePaymentDTO();
pmts = await fv.GetPaymentMethods();
await base.OnParametersSetAsync();
}
}
@functions {
private async Task OnRowClick(GridRowEventArgs args)
{
item = args.Item;
add = false;
}
async Task cancell()
{
add = true;
item = new InvoicePaymentDTO();
}
async Task AddPay()
{
if (await Validation())
{
var rsp = await hc.Post("InvoicePayment/AddPay", item);
if (rsp.IsSuccessStatusCode)
{
var request = await rsp.Content.ReadFromJsonAsync();
if (request != null && request.ID.HasValue)
{
invoice.payments.Add(request);
await grid.RefreshDataAsync();
item = new InvoicePaymentDTO();
}
else ShowDangerAlert("خطایی در اجرای عملیات رخ داده");
}
else
{
var request = await rsp.Content.ReadFromJsonAsync>();
ShowDangerAlert(request[0]);
}
}
}
async Task UpdatePay()
{
if (await Validation())
{
var rsp = await hc.Put("InvoicePayment/UpdatePay", item);
if (rsp.IsSuccessStatusCode)
{
var request = await rsp.Content.ReadFromJsonAsync();
if (request != null && request.ID.HasValue)
{
invoice.payments.Add(request);
await grid.RefreshDataAsync();
item = new InvoicePaymentDTO();
}
else ShowDangerAlert("خطایی در اجرای عملیات رخ داده");
}
else
{
var request = await rsp.Content.ReadFromJsonAsync>();
ShowDangerAlert(request[0]);
}
}
}
async Task DeletePay()
{
if (item.ID.HasValue)
{
var rsp = await hc.Delete($"InvoicePayment/DeletePay/{item.ID.Value}");
if (rsp.IsSuccessStatusCode)
{
var request = await rsp.Content.ReadFromJsonAsync();
if (request)
{
invoice.payments.Add(item);
await grid.RefreshDataAsync();
item = new InvoicePaymentDTO();
}
else ShowDangerAlert("خطایی در اجرای عملیات رخ داده");
}
else
{
var request = await rsp.Content.ReadFromJsonAsync>();
ShowDangerAlert(request[0]);
}
}
}
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;
}
async Task Validation()
{
if (invoice.tbill < invoice.payments.Sum(s => s.pv) + item.pv)
{
ShowDangerAlert("مجموع مبلغ پرداختی نمی تواند از مجموع صورتحساب بیشتر باشد.");
return false;
}
if (item.pmt.HasValue && item.pmt.Value > 0 && item.pmt.Value < 9)
{
if (string.IsNullOrEmpty(item.PaymentDateTime))
{
ShowDangerAlert("تاریخ نمیتواند خالی باشد");
return false;
}
else
{
string paydate = item.PaymentDateTime.Replace("/", "");
if (paydate.Length == 8 && int.TryParse(paydate, out int _paydate))
{
if (Convert.ToInt32(invoice.InvoiceDate.Replace("/", "")) > _paydate)
{
ShowDangerAlert("تاریخ پرداخت نمیتواند از تاریخ صورتحساب عقبتر باشد");
return false;
}
}
else { ShowDangerAlert("تاریخ صحیح نمی باشد"); return false; }
}
}
else { ShowDangerAlert("روش پرداخت مشخص نشده"); return false; }
return true;
}
}