From c8f4d2317c5f22bdccbca5f39bd512acd3138cd0 Mon Sep 17 00:00:00 2001 From: "LAPTOP-KB8JC2K2\\acer" Date: Tue, 6 Apr 2021 09:03:11 +0700 Subject: [PATCH] =?UTF-8?q?=E0=B8=9B=E0=B8=A3=E0=B8=B1=E0=B8=9A=E0=B8=9B?= =?UTF-8?q?=E0=B8=A3=E0=B8=B8=E0=B8=87=E0=B8=A3=E0=B8=B2=E0=B8=A2=E0=B8=87?= =?UTF-8?q?=E0=B8=B2=E0=B8=99=E0=B8=9B=E0=B8=A3=E0=B8=B0=E0=B8=A7=E0=B8=B1?= =?UTF-8?q?=E0=B8=95=E0=B8=B4=E0=B8=81=E0=B8=B2=E0=B8=A3=E0=B9=80=E0=B8=A5?= =?UTF-8?q?=E0=B8=B7=E0=B9=88=E0=B8=AD=E0=B8=99=E0=B9=80=E0=B8=87=E0=B8=B4?= =?UTF-8?q?=E0=B8=99=E0=B9=80=E0=B8=94=E0=B8=B7=E0=B8=AD=E0=B8=99=E0=B8=A3?= =?UTF-8?q?=E0=B8=B2=E0=B8=A2=E0=B8=9A=E0=B8=B8=E0=B8=84=E0=B8=84=E0=B8=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../rep_eva_self_reviewControllers.cs | 166 +++++++++++++++--- .../rep_eva_self_reviewReportRequestModel.cs | 2 + Views/home/index2.cshtml | 3 + 3 files changed, 143 insertions(+), 28 deletions(-) diff --git a/ApiControllers/rep_eva_self_reviewControllers.cs b/ApiControllers/rep_eva_self_reviewControllers.cs index b48698a..ff099ff 100644 --- a/ApiControllers/rep_eva_self_reviewControllers.cs +++ b/ApiControllers/rep_eva_self_reviewControllers.cs @@ -16,6 +16,8 @@ using System.Data; using Microsoft.Extensions.Configuration; using System.IO; using System.Net; +using iTextSharp.text; +using iTextSharp.text.pdf; namespace TodoAPI2.Controllers { @@ -96,43 +98,39 @@ namespace TodoAPI2.Controllers { if (!MyHelper.checkAuth(Configuration, HttpContext)) return Unauthorized(); var httpclient = new WebClient(); - string mainurl = MyHelper.GetConfig(Configuration, "JasperReportServer:MainURL"); - string reportsite = MyHelper.GetConfig(Configuration, "JasperReportServer:reportsite"); - string username = MyHelper.GetConfig(Configuration, "JasperReportServer:username"); - string password = MyHelper.GetConfig(Configuration, "JasperReportServer:password"); - var temp = (from x in _repository.GetContext().eva_adjust_postponement_detail - join y in _repository.GetContext().eva_adjust_postponement - on x.adjust_postponement_id equals y.id - where x.id == model.detail_id - select y).FirstOrDefault(); - if(temp != null) + var stream = new MemoryStream(); + Document document = new Document(); + PdfCopy writer = new PdfCopy(document, stream); + document.Open(); + + var data1 = GetReport01(model); + PdfReader reader1 = new PdfReader(data1); + reader1.ConsolidateNamedDestinations(); + for (int i = 1; i <= reader1.NumberOfPages; i++) { - model.theround = temp.theRound.ToString(); - model.theyear = temp.fiscal_year.ToString(); + PdfImportedPage page = writer.GetImportedPage(reader1, i); + writer.AddPage(page); } + reader1.Close(); - var temp2 = (from x in _repository.GetContext().eva_adjust_postponement_detail - where x.id == model.detail_id - select x).FirstOrDefault(); - - if(temp2 != null && temp2.promoted_percentage.HasValue) + var data2 = GetReport02(model); + PdfReader reader2 = new PdfReader(data2); + reader2.ConsolidateNamedDestinations(); + for (int i = 1; i <= reader2.NumberOfPages; i++) { - model.x1 = temp2.promoted_percentage.Value > 0 ? "X" : ""; - model.x2 = temp2.promoted_percentage.Value <= 0 ? "X" : ""; + PdfImportedPage page = writer.GetImportedPage(reader2, i); + writer.AddPage(page); } + reader2.Close(); - string url = $"{mainurl}{reportsite}/rep_eva_self_review.{model.filetype}?{MyHelper.GetParameterForJasperReport(model)}&j_username={username}&j_password={password}"; + writer.Close(); + document.Close(); - if (model.filetype == "xlsx") - { - url += "&ignorePagination=true"; - } + var datax = stream.ToArray(); + var streamx = new MemoryStream(datax); - var data = httpclient.DownloadData(url); - var stream = new MemoryStream(data); - - return File(stream, model.contentType); + return File(streamx, model.contentType); } catch (Exception ex) { @@ -141,6 +139,118 @@ namespace TodoAPI2.Controllers } } + private byte[] GetReport01(rep_eva_self_reviewReportRequestModel model) + { + var httpclient = new WebClient(); + string mainurl = MyHelper.GetConfig(Configuration, "JasperReportServer:MainURL"); + string reportsite = MyHelper.GetConfig(Configuration, "JasperReportServer:reportsite"); + string username = MyHelper.GetConfig(Configuration, "JasperReportServer:username"); + string password = MyHelper.GetConfig(Configuration, "JasperReportServer:password"); + + var temp = (from x in _repository.GetContext().eva_adjust_postponement_detail + join y in _repository.GetContext().eva_adjust_postponement + on x.adjust_postponement_id equals y.id + where x.id == model.detail_id + select y).FirstOrDefault(); + if (temp != null) + { + model.theround = temp.theRound.ToString(); + model.theyear = temp.fiscal_year.ToString(); + + var all_eva = (from x in _repository.GetContext().eva_performance_plan + where x.fiscal_year == temp.fiscal_year + orderby x.theTime + select x).ToList(); + foreach (var x2 in all_eva) + { + var start = (from n in _repository.GetContext().eva_performance_plan_detail + where n.performance_plan_id == x2.id + select n.start_date).Min(); + var end = (from n in _repository.GetContext().eva_performance_plan_detail + where n.performance_plan_id == x2.id + select n.end_date).Min(); + model.thedesc = "ตั้งแต่วันที่ " + MyHelper.GetDateStringForReport(start) + " ถึงวันที่ " + MyHelper.GetDateStringForReport(end); + } + } + + var temp2 = (from x in _repository.GetContext().eva_adjust_postponement_detail + where x.id == model.detail_id + select x).FirstOrDefault(); + + if (temp2 != null && temp2.promoted_percentage.HasValue) + { + model.x1 = temp2.promoted_percentage.Value > 0 ? "/" : ""; + model.x2 = temp2.promoted_percentage.Value <= 0 ? "/" : ""; + } + + + + string url = $"{mainurl}{reportsite}/rep_eva_self_review.{model.filetype}?{MyHelper.GetParameterForJasperReport(model)}&j_username={username}&j_password={password}"; + + if (model.filetype == "xlsx") + { + url += "&ignorePagination=true"; + } + + var data = httpclient.DownloadData(url); + return data; + } + + private byte[] GetReport02(rep_eva_self_reviewReportRequestModel model) + { + var httpclient = new WebClient(); + + string mainurl = MyHelper.GetConfig(Configuration, "JasperReportServer:MainURL"); + string reportsite = MyHelper.GetConfig(Configuration, "JasperReportServer:reportsite"); + string username = MyHelper.GetConfig(Configuration, "JasperReportServer:username"); + string password = MyHelper.GetConfig(Configuration, "JasperReportServer:password"); + + var temp = (from x in _repository.GetContext().eva_adjust_postponement_detail + join y in _repository.GetContext().eva_adjust_postponement + on x.adjust_postponement_id equals y.id + where x.id == model.detail_id + select y).FirstOrDefault(); + if (temp != null) + { + model.theround = temp.theRound.ToString(); + model.theyear = temp.fiscal_year.ToString(); + + var all_eva = (from x in _repository.GetContext().eva_performance_plan + where x.fiscal_year == temp.fiscal_year + orderby x.theTime + select x).ToList(); + foreach (var x2 in all_eva) + { + var start = (from n in _repository.GetContext().eva_performance_plan_detail + where n.performance_plan_id == x2.id + select n.start_date).Min(); + var end = (from n in _repository.GetContext().eva_performance_plan_detail + where n.performance_plan_id == x2.id + select n.end_date).Min(); + model.thedesc = "ตั้งแต่วันที่ " + MyHelper.GetDateStringForReport(start) + " ถึงวันที่ " + MyHelper.GetDateStringForReport(end); + } + } + + var temp2 = (from x in _repository.GetContext().eva_adjust_postponement_detail + where x.id == model.detail_id + select x).FirstOrDefault(); + + if (temp2 != null && temp2.promoted_percentage.HasValue) + { + model.x1 = temp2.promoted_percentage.Value > 0 ? "/" : ""; + model.x2 = temp2.promoted_percentage.Value <= 0 ? "/" : ""; + } + + string url = $"{mainurl}{reportsite}/rep_eva_self_review_cover.{model.filetype}?{MyHelper.GetParameterForJasperReport(model)}&j_username={username}&j_password={password}"; + + if (model.filetype == "xlsx") + { + url += "&ignorePagination=true"; + } + + var data = httpclient.DownloadData(url); + return data; + } } } diff --git a/Models/rep_eva_self_review/rep_eva_self_reviewReportRequestModel.cs b/Models/rep_eva_self_review/rep_eva_self_reviewReportRequestModel.cs index 44b3da7..b104b59 100644 --- a/Models/rep_eva_self_review/rep_eva_self_reviewReportRequestModel.cs +++ b/Models/rep_eva_self_review/rep_eva_self_reviewReportRequestModel.cs @@ -24,6 +24,8 @@ namespace TodoAPI2.Models public string x1 { get; set; } public string x2 { get; set; } + + public string thedesc { get; set; } } } diff --git a/Views/home/index2.cshtml b/Views/home/index2.cshtml index bcccc3b..893c8c9 100644 --- a/Views/home/index2.cshtml +++ b/Views/home/index2.cshtml @@ -85,6 +85,9 @@ +