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 @@
+