@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; } }