@using Front.Services
@using Shared
@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.Value.ToString("N0")
@if (add)
{
}
else
{
}
@if (add)
{
}
else
{
}
@code {
private ConfirmDialog dialog = default!;
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)
{
Hidealert = true;
item = args.Item;
add = false;
}
async Task cancell()
{
Hidealert = true;
add = true;
item = new InvoicePaymentDTO();
}
async Task AddPay()
{
Hidealert = true;
if (await Validation())
{
var sentItem = new InvoiceItemAction()
{
invoiceID = invoice.ID,
item = item
};
var rsp = await hc.Post>("InvoicePayment/AddPay", sentItem);
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();
ShowSuccessAlert("پرداخت ثبت شد");
}
else ShowDangerAlert("خطایی در اجرای عملیات رخ داده");
}
else
{
var request = await rsp.Content.ReadFromJsonAsync>();
ShowDangerAlert(request[0]);
}
}
}
async Task UpdatePay()
{
Hidealert = true;
if (await Validation())
{
var rsp = await hc.Put>("InvoicePayment/UpdatePay", new InvoiceItemAction()
{
invoiceID = invoice.ID,
item = item
});
if (rsp.IsSuccessStatusCode)
{
var request = await rsp.Content.ReadFromJsonAsync();
if (request != null && request.ID.HasValue)
{
invoice.payments.Remove(item);
invoice.payments.Add(request);
await grid.RefreshDataAsync();
item = new InvoicePaymentDTO();
add = true;
ShowSuccessAlert("تغییرات با موفقیت اعمال شد");
}
else ShowDangerAlert("خطایی در اجرای عملیات رخ داده");
}
else
{
var request = await rsp.Content.ReadFromJsonAsync>();
ShowDangerAlert(request[0]);
}
}
}
async Task DeletePay()
{
var confirmation = await dialog.ShowAsync(
title: "عملیات حذف پرداخت",
message1: $"از حذف پرداخت",
message2: "اطمینان دارید?");
if (confirmation)
{
Hidealert = true;
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.Remove(item);
await grid.RefreshDataAsync();
item = new InvoicePaymentDTO();
add = true;
ShowSuccessAlert("پرداخت خذف شد");
}
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 (item.pv==null || item.pv <= 0)
{
ShowDangerAlert("مبلغ پرداختی باید بیشتر از صفر باشد.");
return false;
}
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))
{
var today = Convert.ToInt32(DateTime.Now.ConvertMiladiToShamsiinFront());
if (today >= _paydate)
{
if (Convert.ToInt32(invoice.InvoiceDate.Replace("/", "")) > _paydate)
{
ShowDangerAlert("تاریخ پرداخت نمیتواند از تاریخ صورتحساب عقبتر باشد");
return false;
}
}
else
{
ShowDangerAlert("تاریخ پرداخت نمی تواند از امروز جلوتر باشد"); return false;
}
}
else { ShowDangerAlert("تاریخ صحیح نمی باشد"); return false; }
}
}
else { ShowDangerAlert("روش پرداخت مشخص نشده"); return false; }
return true;
}
}