@using Front.Services @using Shared.DTOs @using Shared @inject HttpClientController hc; @layout PanelLayout @inject Fixedvalues fv; @page "/InvoiceDetails/{InvoiceID:int}" @page "/InvoiceDetails"
@* alert *@


@*
*@



@if (invoice.ID == 0) { } else { }
@code { [Inject] ToastService ToastService { get; set; } = default!; private ConfirmDialog dialog = default!; private Modal modal = default!; [Inject] protected PreloadService PreloadService { get; set; } = default!; // alert AlertColor alertColor = AlertColor.Primary; IconName alertIconName = IconName.CheckCircleFill; bool Hidealert = true; string alertMessage = ""; [Parameter] public int? InvoiceID { get; set; } public List? Cus { get; set; } public List>? Patterns { get; set; } public InvoiceDTO? invoice { get; set; } protected override async Task OnInitializedAsync() { invoice = new InvoiceDTO(); await base.OnInitializedAsync(); } protected override async Task OnParametersSetAsync() { PreloadService.Show(SpinnerColor.Dark); Cus = await fv.GetCustomers(); Patterns = await fv.GetPatterns(); if (InvoiceID != null && InvoiceID > 0) { await LoadData(); } else { invoice = new InvoiceDTO() { ID = 0, InvoiceDate = DateTime.Now.ConvertMiladiToShamsiinFront().ShamciToFormatShamciinFront(), InvoicIssueDate = DateTime.Now.ConvertMiladiToShamsiinFront().ShamciToFormatShamciinFront(), Udate = DateTime.Now.ConvertMiladiToShamsiinFront().ShamciToFormatShamciinFront() }; } Hidealert = true; alertMessage = ""; PreloadService.Hide(); await base.OnParametersSetAsync(); } } @functions { private async Task NewItemClick() { if (InvoiceID.HasValue) { var parameters = new Dictionary(); parameters.Add("InvoiceID", InvoiceID); parameters.Add("itemDTO", new InvoiceItemDTO()); parameters.Add("OnMultipleOfThree", EventCallback.Factory.Create(this, CallBack)); await modal.ShowAsync(title: "آیتم جدید", parameters: parameters); } } private async Task LoadData() { var rsp = await hc.Get($"Invoice/Get/{InvoiceID}"); if (rsp.IsSuccessStatusCode) { invoice = await rsp.Content.ReadFromJsonAsync(); } else hc._nav.NavigateTo("/Panel"); } public async Task CallBack(ActionInResultComponent result) { string msg = ""; if (result.Action == ComponentAction.add) { if (result.Status == ComponentStatus.success) msg = "آیتم جدید با موفقیت اضافه شد"; } else if (result.Action == ComponentAction.update) { if (result.Status == ComponentStatus.success) msg = "اطلاعات آیتم با موفقیت ویرایش شد"; } else if (result.Action == ComponentAction.delete) { if (result.Status == ComponentStatus.success) msg = "آیتم با موفقیت حذف شد"; } await CallBack(msg); // if (result.Status == ComponentStatus.success) // await LoadCod(1); await modal.HideAsync(); } private async Task CallBack(string result) { if (!string.IsNullOrEmpty(result)) { ShowSuccessAlert(result); await LoadData(); } } 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; } public async Task OnClickDelete() { if (InvoiceID.HasValue) { var rsp = await hc.Delete($"Invoice/Delete/{InvoiceID.Value}"); if (rsp.IsSuccessStatusCode) { var request = await rsp.Content.ReadFromJsonAsync(); if (request) { ToastService.Notify(new ToastMessage(ToastType.Success, $"عملیات حذف با موفقیت انجام شد")); hc._nav.NavigateTo("Invoice"); } else ShowDangerAlert("خطایی در اجرای عملیات رخ داده"); } else if (rsp.StatusCode == System.Net.HttpStatusCode.NotFound) { ShowDangerAlert("صورتحساب با این شناسه یافت نشد"); } else ShowDangerAlert("خطایی در اجرای عملیات رخ داده"); } } public async Task OnClickUpdate() { if (InvoiceID.HasValue) { if (await Validate()) { var rsp = await hc.Put("Invoice/Update", new NUInvoiceDTO { ID = InvoiceID, CustomerID = invoice.CustomerID, Des = invoice.Des, InvoiceDate = invoice.InvoiceDate, InvoicIssueDate = invoice.InvoicIssueDate, PatternID = invoice.PatternID, Title = invoice.Title }); if (rsp.IsSuccessStatusCode) { var request = await rsp.Content.ReadFromJsonAsync(); if (request > 0) { InvoiceID = request; } else ShowDangerAlert("خطایی در اجرای عملیات رخ داده"); } else { var request = await rsp.Content.ReadFromJsonAsync>(); ShowDangerAlert(request[0]); } } } // if (Cod.UnitID > 0 && Cod.TaxRate > 0 && !string.IsNullOrEmpty(Cod.Title)) // { // var rsp = await hc.Put("Cod/Update", Cod); // if (rsp.IsSuccessStatusCode) // { // var request = await rsp.Content.ReadFromJsonAsync(); // if (request) // { // result.Status = ComponentStatus.success; // result.Action = ComponentAction.update; // await OnMultipleOfThree.InvokeAsync(result); // } // else ShowDangerAlert("خطایی در اجرای عملیات رخ داده"); // } // else // { // var request = await rsp.Content.ReadFromJsonAsync>(); // ShowDangerAlert(request[0]); // } // } // else ShowDangerAlert("فیلدهای قرمز باید مقدار دهی شوند"); } public async Task OnClickAdd() { if (await Validate()) { var rsp = await hc.Post("Invoice/Add", new NUInvoiceDTO { CustomerID = invoice.CustomerID, Des = invoice.Des, InvoiceDate = invoice.InvoiceDate, InvoicIssueDate = invoice.InvoicIssueDate, PatternID = invoice.PatternID, Title = invoice.Title }); if (rsp.IsSuccessStatusCode) { var request = await rsp.Content.ReadFromJsonAsync(); if (request > 0) { InvoiceID = request; } else ShowDangerAlert("خطایی در اجرای عملیات رخ داده"); } else { var request = await rsp.Content.ReadFromJsonAsync>(); ShowDangerAlert(request[0]); } } } public async Task Validate() { if (string.IsNullOrEmpty(invoice.Title)) { ShowDangerAlert("عنوان نمی تواند خالی باشد"); return false; } if (string.IsNullOrEmpty(invoice.InvoiceDate)) { ShowDangerAlert("تاریخ صورتحساب نمی تواند خالی باشد"); return false; } else { int InvoiceDate = 0; if (invoice.InvoiceDate.Replace("/", "").Length != 8 || !int.TryParse(invoice.InvoiceDate.Replace("/", ""), out InvoiceDate)) { ShowDangerAlert("تاریخ صورتحساب صحیح نمی باشد"); return false; } else if (InvoiceDate.ToString().Trim().ToMiladiinFront() > DateTime.Now) { ShowDangerAlert("تاریخ صورتحساب نمی تواند از امروز جلوتر باشد"); return false; } } if (string.IsNullOrEmpty(invoice.InvoicIssueDate)) { ShowDangerAlert("تاریخ صدور نمی تواند خالی باشد"); return false; } else { int InvoicIssueDate = 0; if (invoice.InvoicIssueDate.Replace("/", "").Length != 8 || !int.TryParse(invoice.InvoicIssueDate.Replace("/", ""), out InvoicIssueDate)) { ShowDangerAlert("تاریخ صدور صحیح نمی باشد"); return false; } else if (InvoicIssueDate.ToString().Trim().ToMiladiinFront() > DateTime.Now) { ShowDangerAlert("تاریخ صدور نمی تواند از امروز جلوتر باشد"); return false; } } if (invoice.PatternID.HasValue) if (invoice.PatternID <= 0 || !Patterns.Any(w => w.ID == invoice.PatternID.Value)) { ShowDangerAlert("شناسه الگو صحیح نمی باشد"); return false; } if (invoice.CustomerID == null || invoice.CustomerID <= 0 || !Cus.Any(w => w.ID == invoice.CustomerID)) { ShowDangerAlert("مشتری صحیح نمی باشد"); return false; } return true; } private async Task ShowConfirmationDeleteAsync() { if (InvoiceID.HasValue) { var confirmation = await dialog.ShowAsync( title: "عملیات حذف صورتحساب", message1: $"از حذف صورتحساب {InvoiceID}", message2: "اطمینان دارید?"); if (confirmation) { await OnClickDelete(); } else { ToastService.Notify(new ToastMessage(ToastType.Secondary, $"عملیات حذف متوقف شد")); } } } }