diff --git a/Back/Controllers/InvoiceController.cs b/Back/Controllers/InvoiceController.cs index 00d1cea..a2d8594 100644 --- a/Back/Controllers/InvoiceController.cs +++ b/Back/Controllers/InvoiceController.cs @@ -32,7 +32,7 @@ namespace Back.Controllers _servInvoice = servInvoice; _servUser = servUser; _validationInvoice = validationInvoice; - _configuration=configuration; + _configuration = configuration; _servTaxPayer = servTaxPayer; _rptQueueRepository = rptQueueRepository; @@ -475,63 +475,27 @@ namespace Back.Controllers // } // } + try + { + // Start the child process. + Process p = new Process(); + // Redirect the output stream of the child process. + p.StartInfo.UseShellExecute = false; + p.StartInfo.RedirectStandardOutput = true; + p.StartInfo.FileName = _configuration["CreateReportFileName"].ToString(); + p.StartInfo.Arguments = $"{CompanyID} {InvoiceID}"; + p.Start(); + output = await p.StandardOutput.ReadToEndAsync(); + await p.WaitForExitAsync(); + } + catch (Exception ex) + { + System.IO.File.AppendAllText(_configuration["ReportLog"].ToString(), ex.ToString()); + throw; + } - // Start the child process. - Process p = new Process(); - // Redirect the output stream of the child process. - p.StartInfo.UseShellExecute = false; - p.StartInfo.RedirectStandardOutput = true; - p.StartInfo.FileName = _configuration["CreateReportFileName"].ToString(); - p.StartInfo.Arguments = $"{CompanyID} {InvoiceID}"; - p.Start(); - output = await p.StandardOutput.ReadToEndAsync(); - await p.WaitForExitAsync(); - return Ok(output); - } - [HttpPut("SetExternalAccessCode/{InvoiceID}")] - public async Task> SetExternalAccessCode(int InvoiceID) - { //-----GetUserAndCompany - var claim = HttpContext.User.Claims.First(c => c.Type == "UserID"); - var UserID = claim.Value; - var user = await _servUser.GetUserByUserID(Convert.ToInt32(UserID)); - - var code = DateTime.Now.ToString($"yMMdd{InvoiceID}Hmmss{user.RolUsers.First().CompanyID}"); - Invoice? Invoice = await _servInvoice.GetInvoiceByInvoiceID(user.RolUsers.First().CompanyID, InvoiceID); - if (Invoice == null) return NotFound(); - if (!string.IsNullOrEmpty(Invoice.ExternalAccessCode)) - return Ok(Invoice.ExternalAccessCode); - - Invoice.ExternalAccessCode = code; - if (await _servInvoice.UpdateInvoice(Invoice)) - return Ok(code.ToString()); - - - return BadRequest(new List { "خطایی سرور" }); - - } - [HttpGet("GetReportByExternalAccessCode/{xternalAccessCode}")] - [AllowAnonymous] - public async Task> GetReportByExternalAccessCode(string ExternalAccessCode) - { - if (string.IsNullOrEmpty(ExternalAccessCode)) - return NotFound(); - - string output = ""; - var invoice = await _servInvoice.GetInvoiceByExternalAccessCode(ExternalAccessCode); - if (invoice == null) - return NotFound(); - - // Start the child process. - Process p = new Process(); - // Redirect the output stream of the child process. - p.StartInfo.UseShellExecute = false; - p.StartInfo.RedirectStandardOutput = true; - p.StartInfo.FileName = "C:\\CreateReport\\CreateReport.exe"; - p.StartInfo.Arguments = $"{invoice.CompanyID} {invoice.ID}"; - p.Start(); - output = p.StandardOutput.ReadToEnd(); - p.WaitForExit(); return Ok(output); } + } } diff --git a/Back/Data/Models/Invoice.cs b/Back/Data/Models/Invoice.cs index 5465b1f..3b00fe7 100644 --- a/Back/Data/Models/Invoice.cs +++ b/Back/Data/Models/Invoice.cs @@ -97,7 +97,7 @@ namespace Back.Data.Models #endregion #region fild - public string? ExternalAccessCode { get; set; } + // public string? ExternalAccessCode { get; set; } public string Title { get; set; } public string? Des { get; set; } public InvoiceType invoiceType { get; set; } diff --git a/Back/Services/servInvoice.cs b/Back/Services/servInvoice.cs index 408e7fb..a084dbc 100644 --- a/Back/Services/servInvoice.cs +++ b/Back/Services/servInvoice.cs @@ -34,7 +34,7 @@ namespace Back.Services #endregion //----------------------- - return await invok + return await invok .Include(inc => inc.invoiceDetails) .ThenInclude(inc => inc.cODItem) .ThenInclude(inc => inc.CODUnit) @@ -43,7 +43,7 @@ namespace Back.Services .Include(inc => inc.pattern) .Select(s => new InvoiceDTO() { - ExternalAccessCode=s.ExternalAccessCode, + // ExternalAccessCode=s.ExternalAccessCode, IsDeleted=s.IsDeleted, PatternID = s.PatternID, PatternTitle = s.pattern.Title, @@ -105,6 +105,7 @@ namespace Back.Services , }) .FirstOrDefaultAsync(); + } public async Task?> GetInvoices(int CompanyID, ItemSerchGetInvoices itemSerch) { @@ -162,11 +163,7 @@ namespace Back.Services return await _invoiceRepo.Get(w => w.ID == InvoiceID && w.CompanyID == CompanyID && !w.IsDeleted).AnyAsync(); } - public async Task GetInvoiceByExternalAccessCode( string ExternalAccessCode) - { - return await _invoiceRepo.Get(w => w.ExternalAccessCode == ExternalAccessCode && !w.IsDeleted).FirstOrDefaultAsync(); - - } + public async Task checkFatherInvoiceByInvoiceID(int CompanyID, int InvoiceID) { return await _invoiceRepo.Get(w => w.BillReference == InvoiceID && w.CompanyID == CompanyID && !w.IsDeleted).AnyAsync(); diff --git a/Back/appsettings.Development.json b/Back/appsettings.Development.json index f0ec28c..50fd7d1 100644 --- a/Back/appsettings.Development.json +++ b/Back/appsettings.Development.json @@ -12,5 +12,6 @@ "Fixedvalues": { "Jwt_Lifetime_Minutes": "144000" }, - "CreateReportFileName": "E:\\CreateReport\\CreateReport.exe" + "CreateReportFileName": "E:\\CreateReport\\CreateReport.exe", + "ReportLog": "E:\\Report\\log.txt" } diff --git a/Back/appsettings.production.json b/Back/appsettings.production.json index 0f9b00e..12f55f5 100644 --- a/Back/appsettings.production.json +++ b/Back/appsettings.production.json @@ -13,5 +13,5 @@ "Jwt_Lifetime_Minutes": "144000" }, "CreateReportFileName": "E:\\CreateReport\\CreateReport.exe", - "rptQueue": "E:\\Report\\ResponseQueue" + "ReportLog": "E:\\Report\\log.txt" } diff --git a/Shared/DTOs/InvoiceDtos.cs b/Shared/DTOs/InvoiceDtos.cs index fcb8eb8..8065c5a 100644 --- a/Shared/DTOs/InvoiceDtos.cs +++ b/Shared/DTOs/InvoiceDtos.cs @@ -78,7 +78,7 @@ namespace Shared.DTOs public decimal? tbill { get; set; } public int? BillReference { get; set; } public bool IsDeleted { get; set; } - public string? ExternalAccessCode { get; set; } + //public string? ExternalAccessCode { get; set; } public ICollection items { get; set; }=new List(); public ICollection payments { get; set; } = new List(); // public ICollection Invoicestatuschanges { get; set; } diff --git a/TaxPayerFull/Pages/InvoiceReport.razor b/TaxPayerFull/Pages/InvoiceReport.razor index 68b00f6..762838b 100644 --- a/TaxPayerFull/Pages/InvoiceReport.razor +++ b/TaxPayerFull/Pages/InvoiceReport.razor @@ -4,17 +4,16 @@ @layout EmptyLayout -@page "/InvoiceReport/{ExternalAccessCode}" +@page "/InvoiceReport/{InvoiceID:int}" @using Front.Services @code { [Inject] protected PreloadService PreloadService { get; set; } = default!; List messages = new List(); - [Parameter] public string ExternalAccessCode { get; set; } + [Parameter] public int? InvoiceID { get; set; } protected async override Task OnParametersSetAsync() { - if (!string.IsNullOrEmpty(ExternalAccessCode)) - await ShowReport(); + await ShowReport(); await base.OnParametersSetAsync(); } @@ -31,22 +30,31 @@ }; private async Task ShowReport() { - PreloadService.Show(SpinnerColor.Dark); - var rsp = await hc.Get($"Invoice/GetReportByExternalAccessCode/{ExternalAccessCode}"); - if (rsp.IsSuccessStatusCode) + if (InvoiceID != null && InvoiceID > 0) { - var str = await rsp.Content.ReadAsStringAsync(); - if (string.IsNullOrEmpty(str)) - ShowMessage(ToastType.Warning, "مشکلی در ساخت فایل رخ داده لطفا مجدد تلاش کنید"); - else - await DownloadFileFromStream(str, $"{ExternalAccessCode}.pdf"); + + PreloadService.Show(SpinnerColor.Dark); + var rsp = await hc.Get($"Invoice/GetReport/{InvoiceID}"); + if (rsp.IsSuccessStatusCode) + { + var str = await rsp.Content.ReadAsStringAsync(); + if (string.IsNullOrEmpty(str)) + ShowMessage(ToastType.Warning, "مشکلی در ساخت فایل رخ داده لطفا مجدد تلاش کنید"); + else + await DownloadFileFromStream(str, $"{InvoiceID}.pdf"); + + } + else if (rsp.StatusCode == System.Net.HttpStatusCode.NotFound) + ShowMessage(ToastType.Warning, "فاکتوری یافت نشد"); + + else ShowMessage(ToastType.Warning, "خطایی در چاپ فاکتور"); + + PreloadService.Hide(); + } - else if (rsp.StatusCode == System.Net.HttpStatusCode.NotFound) - ShowMessage(ToastType.Warning, "فاکتوری یافت نشد"); + else hc._nav.NavigateTo("Invoice"); - else ShowMessage(ToastType.Warning, "خطایی در چاپ فاکتور"); - - PreloadService.Hide(); + } //for download private Stream GetFileStream(byte[] bytes) diff --git a/TaxPayerFull/Pages/UserPanel/InvoiceItem.razor b/TaxPayerFull/Pages/UserPanel/InvoiceItem.razor index 087d0f0..9c2036a 100644 --- a/TaxPayerFull/Pages/UserPanel/InvoiceItem.razor +++ b/TaxPayerFull/Pages/UserPanel/InvoiceItem.razor @@ -343,7 +343,7 @@ - } @@ -489,43 +489,14 @@ { if (InvoiceID.HasValue) { - hc._nav.NavigateTo($"TaxPayerInvoiceItem/{InvoiceID}"); } } - private async Task onClickExternalAccessCode() + private async Task onClickLink() { - PreloadService.Show(SpinnerColor.Dark); - if (!string.IsNullOrEmpty(invoice.ExternalAccessCode)) - { - ExUrl = $"{fv.Domin}/InvoiceReport/" + invoice.ExternalAccessCode; - await Codemodal.ShowAsync(); - } - else - { - var rsp = await hc.Put($"Invoice/SetExternalAccessCode/{InvoiceID}"); - if (rsp.IsSuccessStatusCode) - { - var str = await rsp.Content.ReadAsStringAsync(); - if (string.IsNullOrEmpty(str)) - ShowDangerAlert("مشکلی در ساخت فایل رخ داده لطفا مجدد تلاش کنید"); - else - { - ExUrl = $"{fv.Domin}/InvoiceReport/" + str; - await Codemodal.ShowAsync(); - } - - } - else - { - var request = await rsp.Content.ReadFromJsonAsync>(); - ShowDangerAlert(request[0]); - } - } - - - PreloadService.Hide(); + ExUrl = $"{fv.Domin}/InvoiceReport/" + InvoiceID; + await Codemodal.ShowAsync(); } private async Task ShowReport() { diff --git a/TaxPayerFull/Program.cs b/TaxPayerFull/Program.cs index ea0270a..670070e 100644 --- a/TaxPayerFull/Program.cs +++ b/TaxPayerFull/Program.cs @@ -37,10 +37,10 @@ builder.Services.AddScoped(sp => new UserAuthenticationDTO() //builder.Services.AddScoped(sp => new HttpClient { BaseAddress = new Uri("http://195.88.208.142:7075/api/") }); //Home -builder.Services.AddScoped(sp => new HttpClient { BaseAddress = new Uri("https://localhost:7075/api/") }); +//builder.Services.AddScoped(sp => new HttpClient { BaseAddress = new Uri("https://localhost:7075/api/") }); //farzan -//builder.Services.AddScoped(sp => new HttpClient { BaseAddress = new Uri("http://localhost:5271/api/") }); +builder.Services.AddScoped(sp => new HttpClient { BaseAddress = new Uri("http://localhost:5271/api/") }); CultureInfo.DefaultThreadCurrentCulture = new CultureInfo("fa-Ir");