From 8e733b8453e2c91c26b0e107c168642d20f571e0 Mon Sep 17 00:00:00 2001 From: "Harid Promsri (Bright)" Date: Wed, 6 Sep 2023 12:03:26 +0700 Subject: [PATCH] no message --- .../ApplicationServicesRegistration.cs | 1 + .../Reports/ProbationReportRepository.cs | 501 +++++++++ .../Responses/EvaluateAssignResponse.cs | 101 ++ .../EvaluateChairmanAssignResponse.cs | 133 +++ .../Responses/EvaluateRecordAssignResponse.cs | 106 ++ .../Responses/EvaluateResultAssignResponse.cs | 109 ++ .../Responses/ProbationAssignResponse.cs | 89 ++ .../Controllers/InsigniaReportController.cs | 135 ++- .../Controllers/ProbationReportController.cs | 984 ++++++++++++++++-- ...แบบมอบหมายงานการทดลองปฏิบัติหน้าที่ราชการ-1.trdp | Bin 1776 -> 2583 bytes ...แบบมอบหมายงานการทดลองปฏิบัติหน้าที่ราชการ-2.trdp | Bin 2519 -> 2851 bytes ...แบบมอบหมายงานการทดลองปฏิบัติหน้าที่ราชการ-3.trdp | Bin 2326 -> 2514 bytes ...บบันทึกผลการทดลองปฏิบัติหน้าที่ราชการ สำหรับผู้ดูแล-1.trdp | Bin 4247 -> 6272 bytes ...บบันทึกผลการทดลองปฏิบัติหน้าที่ราชการ สำหรับผู้ดูแล-3.trdp | Bin 6375 -> 7555 bytes ...ันทึกผลการทดลองปฏิบัติหน้าที่ราชการ สำหรับผู้บังคับบัญชา-1.trdp | Bin 2510 -> 6274 bytes ...ันทึกผลการทดลองปฏิบัติหน้าที่ราชการ สำหรับผู้บังคับบัญชา-2.trdp | Bin 4311 -> 7540 bytes ...ะเมินผลการทดลองปฏิบัติหน้าที่ราชการ สำหรับผู้บังคับบัญชา-1.trdp | Bin 3707 -> 7189 bytes ...ะเมินผลการทดลองปฏิบัติหน้าที่ราชการ สำหรับคณะกรรมการ-1.trdp | Bin 3532 -> 4563 bytes ...ะเมินผลการทดลองปฏิบัติหน้าที่ราชการ สำหรับคณะกรรมการ-2.trdp | Bin 3953 -> 3538 bytes ...านการประเมินผลการทดลองปฏิบัติหน้าที่ราชการ สำหรับประธาน-1.trdp | Bin 2231 -> 2264 bytes ...านการประเมินผลการทดลองปฏิบัติหน้าที่ราชการ สำหรับประธาน-2.trdp | Bin 2272 -> 2230 bytes ...งานการประเมินผลการทดลองปฏิบัติหน้าที่ราชการ กรณีขยายเวลา.trdp | Bin 1881 -> 1993 bytes ... บัญชีแสดงจำนวนชั้นตราเครื่องราชฯ ข้าราชการ ชั้นสายสะพาย.trdp | Bin 3167 -> 3542 bytes ...ญชีแสดงจำนวนชั้นตราเครื่องราชฯ ข้าราชการ ชั้นต่ำกว่าสายสะพาย.trdp | Bin 3596 -> 4204 bytes ... ขร3 บัญชีรายชื่อข้าราชการผู้ขอพระราชทานเครื่องราชฯ.trdp | Bin 2582 -> 2583 bytes ...ร4 บัญชีแสดงคุณสมบัติของข้าราชการซึ่งเสนอขอเครื่องราชฯ.trdp | Bin 3105 -> 3440 bytes .../44-บัญชีแสดงจำนวนชั้นตราเครื่องราชฯ.trdp | Bin 2234 -> 2408 bytes ...ัญชีแสดงรายชื่อผู้ขอพระราชทานเหรียญจักรพรรดิมาลา.trdp | Bin 2442 -> 2442 bytes ...วัติสำหรับการเสนอขอพระราชทานเหรียญจักรพรรดิมาลา.trdp | Bin 2272 -> 2172 bytes 29 files changed, 2038 insertions(+), 121 deletions(-) create mode 100644 BMA.EHR.Application/Repositories/Reports/ProbationReportRepository.cs create mode 100644 BMA.EHR.Application/Responses/EvaluateAssignResponse.cs create mode 100644 BMA.EHR.Application/Responses/EvaluateChairmanAssignResponse.cs create mode 100644 BMA.EHR.Application/Responses/EvaluateRecordAssignResponse.cs create mode 100644 BMA.EHR.Application/Responses/EvaluateResultAssignResponse.cs create mode 100644 BMA.EHR.Application/Responses/ProbationAssignResponse.cs diff --git a/BMA.EHR.Application/ApplicationServicesRegistration.cs b/BMA.EHR.Application/ApplicationServicesRegistration.cs index e92d8c5d..33db5abd 100644 --- a/BMA.EHR.Application/ApplicationServicesRegistration.cs +++ b/BMA.EHR.Application/ApplicationServicesRegistration.cs @@ -27,6 +27,7 @@ namespace BMA.EHR.Application services.AddTransient(); services.AddTransient(); services.AddTransient(); + services.AddTransient(); return services; } diff --git a/BMA.EHR.Application/Repositories/Reports/ProbationReportRepository.cs b/BMA.EHR.Application/Repositories/Reports/ProbationReportRepository.cs new file mode 100644 index 00000000..bc186261 --- /dev/null +++ b/BMA.EHR.Application/Repositories/Reports/ProbationReportRepository.cs @@ -0,0 +1,501 @@ +using BMA.EHR.Application.Common.Interfaces; +using BMA.EHR.Domain.Extensions; +using BMA.EHR.Domain.Models.Retirement; +using Microsoft.AspNetCore.Hosting; +using Microsoft.EntityFrameworkCore; +using Microsoft.Extensions.Configuration; +using Newtonsoft.Json; +using System.Configuration; +using System.Net.Http.Headers; +using BMA.EHR.Application.Responses; + +namespace BMA.EHR.Application.Repositories.Reports +{ + public class ProbationReportRepository + { + #region " Fields " + + private readonly IApplicationDBContext _dbContext; + private readonly IWebHostEnvironment _hostingEnvironment; + + #endregion + + #region " Constructor and Destructor " + + public ProbationReportRepository(IApplicationDBContext dbContext, IWebHostEnvironment hostEnvironment) + { + _dbContext = dbContext; + _hostingEnvironment = hostEnvironment; + + } + + #endregion + + #region " Methods " + + #region แบบมอบหมายงาน ฯ + public async Task GetProbationAssignAsync(Guid assign_id, string token) + { + var api_url = $"https://bmaehr.joolsoft.com/nodeapi/v1/assign/probation-assign?assign_id={assign_id}"; + ProbationAssignResponse probation_assign; + using (var client = new HttpClient()) + { + client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", token); + var req = new HttpRequestMessage(HttpMethod.Get, api_url); + var res = await client.SendAsync(req); + var result = await res.Content.ReadAsStringAsync(); + probation_assign = JsonConvert.DeserializeObject(result); + + if(probation_assign.data != null) + { + //Profile ผู้ทดลองงาน + string[] date_start_parts = string.IsNullOrEmpty(probation_assign.data.assign.date_start) ? null : probation_assign.data.assign.date_start.Split('-'); + string[] date_finish_parts = string.IsNullOrEmpty(probation_assign.data.assign.date_finish) ? null : probation_assign.data.assign.date_finish.Split('-'); + //Mentors + string[] date_mentor1_parts = probation_assign.data.mentors.Count > 0 ? probation_assign.data.mentors[0].dated.Split('-') : null ; + string[] date_mentor2_parts = probation_assign.data.mentors.Count > 1 ? probation_assign.data.mentors[1].dated.Split('-') : null; + //Commander + string[] date_commander_parts = string.IsNullOrEmpty(probation_assign.data.commander.dated) ? null : probation_assign.data.commander.dated.Split('-'); + + return new + { + Name = string.IsNullOrEmpty(probation_assign.data.profile.name) ? string.Empty : probation_assign.data.profile.name, + Position = string.IsNullOrEmpty(probation_assign.data.profile.Position) ? string.Empty : probation_assign.data.profile.Position, + Department = string.IsNullOrEmpty(probation_assign.data.profile.Department) ? string.Empty : probation_assign.data.profile.Department, + OrganizationOrganization = string.IsNullOrEmpty(probation_assign.data.profile.OrganizationOrganization) ? string.Empty : probation_assign.data.profile.OrganizationOrganization, + Oc = string.IsNullOrEmpty(probation_assign.data.profile.Oc) ? string.Empty : probation_assign.data.profile.Oc, + DateStart = string.IsNullOrEmpty(date_start_parts[0]) ? $"วันที่ เดือน พ.ศ." : ConvertDateMonthYear(date_start_parts[0], date_start_parts[1], date_start_parts[2]), + DateFinish = string.IsNullOrEmpty(date_finish_parts[0]) ? $"วันที่ เดือน พ.ศ." : ConvertDateMonthYear(date_finish_parts[0], date_finish_parts[1], date_finish_parts[2]), + NameMentor1 = string.IsNullOrEmpty(probation_assign.data.mentors[0].name) ? string.Empty : probation_assign.data.mentors[0].name, + DateMentor1 = string.IsNullOrEmpty(date_mentor1_parts[0]) ? $"วันที่ เดือน พ.ศ." : ConvertDateMonthYear(date_mentor1_parts[0], date_mentor1_parts[1], date_mentor1_parts[2]), + PositionMentor1 = string.IsNullOrEmpty(probation_assign.data.mentors[0].Position) ? string.Empty : probation_assign.data.mentors[0].Position, + NameMentor2 = string.IsNullOrEmpty(probation_assign.data.mentors[1].name) ? string.Empty : probation_assign.data.mentors[1].name, + DateMentor2 = string.IsNullOrEmpty(date_mentor2_parts[0]) ? $"วันที่ เดือน พ.ศ." : ConvertDateMonthYear(date_mentor2_parts[0], date_mentor2_parts[1], date_mentor2_parts[2]), + PositionMentor2 = string.IsNullOrEmpty(probation_assign.data.mentors[1].Position) ? string.Empty : probation_assign.data.mentors[1].Position, + NameCommander = string.IsNullOrEmpty(probation_assign.data.commander.name) ? string.Empty : probation_assign.data.commander.name, + DateCommander = string.IsNullOrEmpty(date_commander_parts[0]) ? $"วันที่ เดือน พ.ศ." : ConvertDateMonthYear(date_commander_parts[0], date_commander_parts[1], date_commander_parts[2]), + PositionCommander = string.IsNullOrEmpty(probation_assign.data.commander.Position) ? string.Empty : probation_assign.data.commander.Position, + Jobs = probation_assign.data.jobs.ToList(), + Knowledge = probation_assign.data.knowledges.ToList(), + Competency = probation_assign.data.competencys.ToList(), + Outputs = probation_assign.data.outputs.ToList(), + OtherDesc = string.IsNullOrEmpty(probation_assign.data.assign.other_desc) ? string.Empty : probation_assign.data.assign.other_desc, + Other4Desc = string.IsNullOrEmpty(probation_assign.data.assign.other4_desc) ? string.Empty : probation_assign.data.assign.other4_desc, + Other5No1Desc = string.IsNullOrEmpty(probation_assign.data.assign.other4_desc) ? string.Empty : probation_assign.data.assign.other4_desc, + Other5No2Desc = string.IsNullOrEmpty(probation_assign.data.assign.other5_no2_desc) ? string.Empty : probation_assign.data.assign.other5_no2_desc, + }; + } + else + { + return null; + } + } + } + #endregion + + #region แบบบันทึกผล (ผู้ดูแล, ผู้บังคับบัญชา) + public async Task GetEvaluateRecordAsync(Guid assign_id, string token) + { + var api_url = $"https://bmaehr.joolsoft.com/nodeapi/v1/evaluate-record?assign_id={assign_id}"; + EvaluateRecordAssignResponse evaluate_record; + using (var client = new HttpClient()) + { + client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", token); + var req = new HttpRequestMessage(HttpMethod.Get, api_url); + var res = await client.SendAsync(req); + var result = await res.Content.ReadAsStringAsync(); + evaluate_record = JsonConvert.DeserializeObject(result); + + if (evaluate_record.data != null) + { + string[] date_start_parts = string.IsNullOrEmpty(evaluate_record.data.assign.date_start) ? null : evaluate_record.data.assign.date_start.Split('-'); + string[] date_finish_parts = string.IsNullOrEmpty(evaluate_record.data.assign.date_finish) ? null : evaluate_record.data.assign.date_finish.Split('-'); + string[] date_start_round_parts; + string[] date_finish_round_parts; + DateTime currentDate = DateTime.Now; + string[] date_curent_parts = currentDate.ToString("yyyy-MM-dd").Split('-'); + string[] achievement_strength_desc = new string[evaluate_record.data.evaluate.Count]; + string[] achievement_improve_desc = new string[evaluate_record.data.evaluate.Count]; + string[] behavior_strength_desc = new string[evaluate_record.data.evaluate.Count]; + string[] behavior_improve_desc = new string[evaluate_record.data.evaluate.Count]; + foreach (var evaluate in evaluate_record.data.evaluate) + { + int inx = 0; + evaluate.no = !string.IsNullOrEmpty(evaluate.no) ? evaluate.no.ToThaiNumber() : null; + date_start_round_parts = !string.IsNullOrEmpty(evaluate.date_start) ? evaluate.date_start.Split('-') : null; + evaluate.date_start = ConvertDateMonthYear(date_start_round_parts[0], date_start_round_parts[1], date_start_round_parts[2]); + date_finish_round_parts = !string.IsNullOrEmpty(evaluate.date_finish) ? evaluate.date_finish.Split('-') : null; + evaluate.date_finish = ConvertDateMonthYear(date_finish_round_parts[0], date_finish_round_parts[1], date_finish_round_parts[2]); + achievement_strength_desc[inx] = !string.IsNullOrEmpty(evaluate.achievement_strength_desc) ? evaluate.achievement_strength_desc : string.Empty; + achievement_improve_desc[inx] = !string.IsNullOrEmpty(evaluate.achievement_improve_desc) ? evaluate.achievement_improve_desc : string.Empty; + behavior_strength_desc[inx] = !string.IsNullOrEmpty(evaluate.behavior_strength_desc) ? evaluate.behavior_strength_desc : string.Empty; + behavior_improve_desc[inx] = !string.IsNullOrEmpty(evaluate.behavior_improve_desc) ? evaluate.behavior_improve_desc : string.Empty; + + inx++; + } + + return new + { + //person or mentor + Name = string.IsNullOrEmpty(evaluate_record.data.person.name) ? string.Empty : evaluate_record.data.person.name, + Position = string.IsNullOrEmpty(evaluate_record.data.person.Position) ? string.Empty : evaluate_record.data.person.Position, + MentorDate = string.IsNullOrEmpty(date_curent_parts[0]) ? $"วันที่ เดือน พ.ศ." : ConvertDateMonthYear(date_curent_parts[0], date_curent_parts[1], date_curent_parts[2]), + //experimentee ผู้ดทดลองงาน + ExperimenteeName = string.IsNullOrEmpty(evaluate_record.data.experimentee.name) ? string.Empty : evaluate_record.data.experimentee.name, + ExperimenteePosition = string.IsNullOrEmpty(evaluate_record.data.experimentee.Position) ? string.Empty : evaluate_record.data.experimentee.Position, + Department = string.IsNullOrEmpty(evaluate_record.data.experimentee.Department) ? string.Empty : evaluate_record.data.experimentee.Department, + OrganizationOrganization = string.IsNullOrEmpty(evaluate_record.data.experimentee.OrganizationOrganization) ? string.Empty : evaluate_record.data.experimentee.OrganizationOrganization, + Oc = string.IsNullOrEmpty(evaluate_record.data.experimentee.Oc) ? string.Empty : evaluate_record.data.experimentee.Oc, + DateStart = string.IsNullOrEmpty(date_start_parts[0]) ? $"วันที่ เดือน พ.ศ." : ConvertDateMonthYear(date_start_parts[0], date_start_parts[1], date_start_parts[2]), + DateFinish = string.IsNullOrEmpty(date_finish_parts[0]) ? $"วันที่ เดือน พ.ศ." : ConvertDateMonthYear(date_finish_parts[0], date_finish_parts[1], date_finish_parts[2]), + Evaluates = evaluate_record.data.evaluate.ToList(), + AchievementStrengthDesc1 = string.IsNullOrEmpty(achievement_strength_desc[0]) ? string.Empty : achievement_strength_desc[0].ToString(), + AchievementStrengthDesc2 = string.IsNullOrEmpty(achievement_strength_desc[1]) ? string.Empty : achievement_strength_desc[1].ToString(), + AchievementStrengthDesc3 = string.IsNullOrEmpty(achievement_strength_desc[2]) ? string.Empty : achievement_strength_desc[2].ToString(), + AchievementImproveDesc1 = string.IsNullOrEmpty(achievement_improve_desc[0]) ? string.Empty : achievement_improve_desc[0].ToString(), + AchievementImproveDesc2 = string.IsNullOrEmpty(achievement_improve_desc[1]) ? string.Empty : achievement_improve_desc[1].ToString(), + AchievementImproveDesc3 = string.IsNullOrEmpty(achievement_improve_desc[2]) ? string.Empty : achievement_improve_desc[2].ToString(), + BehaviorStrengthDesc1 = string.IsNullOrEmpty(behavior_strength_desc[0]) ? string.Empty : behavior_strength_desc[0].ToString(), + BehaviorStrengthDesc2 = string.IsNullOrEmpty(behavior_strength_desc[1]) ? string.Empty : behavior_strength_desc[1].ToString(), + BehaviorStrengthDesc3 = string.IsNullOrEmpty(behavior_strength_desc[2]) ? string.Empty : behavior_strength_desc[2].ToString(), + BehaviorImproveDesc1 = string.IsNullOrEmpty(behavior_improve_desc[0]) ? string.Empty : behavior_improve_desc[0].ToString(), + BehaviorImproveDesc2 = string.IsNullOrEmpty(behavior_improve_desc[1]) ? string.Empty : behavior_improve_desc[1].ToString(), + BehaviorImproveDesc3 = string.IsNullOrEmpty(behavior_improve_desc[2]) ? string.Empty : behavior_improve_desc[2].ToString(), + }; + } + else + { + return null; + } + } + } + #endregion + + #region แบบประเมินผล(ผู้บังคับบัญชา) + public async Task GetEvaluateAssignAsync(Guid id, string no, string token) + { + var api_url = $"https://bmaehr.joolsoft.com/nodeapi/v1/evaluate?assign_id={id}&evaluate_no={no}"; + EvaluateAssignResponse evaluate_assign; + using (var client = new HttpClient()) + { + client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", token); + var req = new HttpRequestMessage(HttpMethod.Get, api_url); + var res = await client.SendAsync(req); + var result = await res.Content.ReadAsStringAsync(); + evaluate_assign = JsonConvert.DeserializeObject(result); + + if (evaluate_assign.data != null) + { + //Assign + string[] date_start_parts = evaluate_assign.data.assign.date_start.Split('-'); + string[] date_finish_parts = evaluate_assign.data.assign.date_finish.Split('-'); + //Evaluate + string[] evaluate_date_start_parts = evaluate_assign.data.evaluate.date_start.Split('-'); + string[] evaluate_date_finish_parts = evaluate_assign.data.evaluate.date_finish.Split('-'); + string[] evaluate_assessor_dated = evaluate_assign.data.evaluate.commander_dated.Split('-'); + + + return new { + No = evaluate_assign.data.evaluate.no, + EvaluateDateStart = ConvertDateMonthYear(evaluate_date_start_parts[0], evaluate_date_start_parts[1], evaluate_date_start_parts[2]), + EvaluateDateFinish = ConvertDateMonthYear(evaluate_date_finish_parts[0], evaluate_date_finish_parts[1], evaluate_date_finish_parts[2]), + Name = string.IsNullOrEmpty(evaluate_assign.data.experimentee.name) ? string.Empty : evaluate_assign.data.experimentee.name, + Position = string.IsNullOrEmpty(evaluate_assign.data.experimentee.Position) ? string.Empty : evaluate_assign.data.experimentee.Position, + Department = string.IsNullOrEmpty(evaluate_assign.data.experimentee.Department) ? string.Empty : evaluate_assign.data.experimentee.Department, + OrganizationOrganization = string.IsNullOrEmpty(evaluate_assign.data.experimentee.OrganizationOrganization) ? string.Empty : evaluate_assign.data.experimentee.OrganizationOrganization, + Oc = string.IsNullOrEmpty(evaluate_assign.data.experimentee.Oc) ? string.Empty : evaluate_assign.data.experimentee.Oc, + DateStart = ConvertDateMonthYear(date_start_parts[0], date_start_parts[1], date_start_parts[2]), + DateFinish = ConvertDateMonthYear(date_finish_parts[0], date_finish_parts[1], date_finish_parts[2]), + //table1 ผลสัมฤทธิ์ + KnowledgeLevel1 = evaluate_assign.data.evaluate.knowledge_level.ToString() == "1" ? "/": string.Empty, + KnowledgeLevel2 = evaluate_assign.data.evaluate.knowledge_level.ToString() == "2" ? "/" : string.Empty, + KnowledgeLevel3 = evaluate_assign.data.evaluate.knowledge_level.ToString() == "3" ? "/" : string.Empty, + KnowledgeLevel4 = evaluate_assign.data.evaluate.knowledge_level.ToString() == "4" ? "/" : string.Empty, + KnowledgeLevel5 = evaluate_assign.data.evaluate.knowledge_level.ToString() == "5" ? "/" : string.Empty, + SkillLevel1 = evaluate_assign.data.evaluate.skill_level.ToString() == "1" ? "/" : string.Empty, + SkillLevel2 = evaluate_assign.data.evaluate.skill_level.ToString() == "2" ? "/" : string.Empty, + SkillLevel3 = evaluate_assign.data.evaluate.skill_level.ToString() == "3" ? "/" : string.Empty, + SkillLevel4 = evaluate_assign.data.evaluate.skill_level.ToString() == "4" ? "/" : string.Empty, + SkillLevel5 = evaluate_assign.data.evaluate.skill_level.ToString() == "5" ? "/" : string.Empty, + CompetencyLevel1 = evaluate_assign.data.evaluate.competency_level.ToString() == "1" ? "/" : string.Empty, + CompetencyLevel2 = evaluate_assign.data.evaluate.competency_level.ToString() == "2" ? "/" : string.Empty, + CompetencyLevel3 = evaluate_assign.data.evaluate.competency_level.ToString() == "3" ? "/" : string.Empty, + CompetencyLevel4 = evaluate_assign.data.evaluate.competency_level.ToString() == "4" ? "/" : string.Empty, + CompetencyLevel5 = evaluate_assign.data.evaluate.competency_level.ToString() == "5" ? "/" : string.Empty, + LearnLevel1 = evaluate_assign.data.evaluate.learn_level.ToString() == "1" ? "/" : string.Empty, + LearnLevel2 = evaluate_assign.data.evaluate.learn_level.ToString() == "2" ? "/" : string.Empty, + LearnLevel3 = evaluate_assign.data.evaluate.learn_level.ToString() == "3" ? "/" : string.Empty, + LearnLevel4 = evaluate_assign.data.evaluate.learn_level.ToString() == "4" ? "/" : string.Empty, + LearnLevel5 = evaluate_assign.data.evaluate.learn_level.ToString() == "5" ? "/" : string.Empty, + ApplyLevel1 = evaluate_assign.data.evaluate.apply_level.ToString() == "1" ? "/" : string.Empty, + ApplyLevel2 = evaluate_assign.data.evaluate.apply_level.ToString() == "2" ? "/" : string.Empty, + ApplyLevel3 = evaluate_assign.data.evaluate.apply_level.ToString() == "3" ? "/" : string.Empty, + ApplyLevel4 = evaluate_assign.data.evaluate.apply_level.ToString() == "4" ? "/" : string.Empty, + ApplyLevel5 = evaluate_assign.data.evaluate.apply_level.ToString() == "5" ? "/" : string.Empty, + SuccessLevel1 = evaluate_assign.data.evaluate.success_level.ToString() == "1" ? "/" : string.Empty, + SuccessLevel2 = evaluate_assign.data.evaluate.success_level.ToString() == "2" ? "/" : string.Empty, + SuccessLevel3 = evaluate_assign.data.evaluate.success_level.ToString() == "3" ? "/" : string.Empty, + SuccessLevel4 = evaluate_assign.data.evaluate.success_level.ToString() == "4" ? "/" : string.Empty, + SuccessLevel5 = evaluate_assign.data.evaluate.success_level.ToString() == "5" ? "/" : string.Empty, + AchievementOtherDesc = evaluate_assign.data.evaluate.achievement_other_desc, + AchievementOtherLevel1 = evaluate_assign.data.evaluate.achievement_other_level.ToString() == "1" ? "/" : string.Empty, + AchievementOtherLevel2 = evaluate_assign.data.evaluate.achievement_other_level.ToString() == "2" ? "/" : string.Empty, + AchievementOtherLevel3 = evaluate_assign.data.evaluate.achievement_other_level.ToString() == "3" ? "/" : string.Empty, + AchievementOtherLevel4 = evaluate_assign.data.evaluate.achievement_other_level.ToString() == "4" ? "/" : string.Empty, + AchievementOtherLevel5 = evaluate_assign.data.evaluate.achievement_other_level.ToString() == "5" ? "/" : string.Empty, + //table2 พฤติกรรม + Conduct1Level1 = evaluate_assign.data.evaluate.conduct1_level.ToString() == "1" ? "/" : string.Empty, + Conduct1Level2 = evaluate_assign.data.evaluate.conduct1_level.ToString() == "2" ? "/" : string.Empty, + Conduct1Level3 = evaluate_assign.data.evaluate.conduct1_level.ToString() == "3" ? "/" : string.Empty, + Conduct1Level4 = evaluate_assign.data.evaluate.conduct1_level.ToString() == "4" ? "/" : string.Empty, + Conduct1Level5 = evaluate_assign.data.evaluate.conduct1_level.ToString() == "5" ? "/" : string.Empty, + Conduct2Level1 = evaluate_assign.data.evaluate.conduct2_level.ToString() == "1" ? "/" : string.Empty, + Conduct2Level2 = evaluate_assign.data.evaluate.conduct2_level.ToString() == "2" ? "/" : string.Empty, + Conduct2Level3 = evaluate_assign.data.evaluate.conduct2_level.ToString() == "3" ? "/" : string.Empty, + Conduct2Level4 = evaluate_assign.data.evaluate.conduct2_level.ToString() == "4" ? "/" : string.Empty, + Conduct2Level5 = evaluate_assign.data.evaluate.conduct2_level.ToString() == "5" ? "/" : string.Empty, + Conduct3Level1 = evaluate_assign.data.evaluate.conduct3_level.ToString() == "1" ? "/" : string.Empty, + Conduct3Level2 = evaluate_assign.data.evaluate.conduct3_level.ToString() == "2" ? "/" : string.Empty, + Conduct3Level3 = evaluate_assign.data.evaluate.conduct3_level.ToString() == "3" ? "/" : string.Empty, + Conduct3Level4 = evaluate_assign.data.evaluate.conduct3_level.ToString() == "4" ? "/" : string.Empty, + Conduct3Level5 = evaluate_assign.data.evaluate.conduct3_level.ToString() == "5" ? "/" : string.Empty, + Conduct4Level1 = evaluate_assign.data.evaluate.conduct4_level.ToString() == "1" ? "/" : string.Empty, + Conduct4Level2 = evaluate_assign.data.evaluate.conduct4_level.ToString() == "2" ? "/" : string.Empty, + Conduct4Level3 = evaluate_assign.data.evaluate.conduct4_level.ToString() == "3" ? "/" : string.Empty, + Conduct4Level4 = evaluate_assign.data.evaluate.conduct4_level.ToString() == "4" ? "/" : string.Empty, + Conduct4Level5 = evaluate_assign.data.evaluate.conduct4_level.ToString() == "5" ? "/" : string.Empty, + Moral1Level1 = evaluate_assign.data.evaluate.moral1_level.ToString() == "1" ? "/" : string.Empty, + Moral1Level2 = evaluate_assign.data.evaluate.moral1_level.ToString() == "2" ? "/" : string.Empty, + Moral1Level3 = evaluate_assign.data.evaluate.moral1_level.ToString() == "3" ? "/" : string.Empty, + Moral1Level4 = evaluate_assign.data.evaluate.moral1_level.ToString() == "4" ? "/" : string.Empty, + Moral1Level5 = evaluate_assign.data.evaluate.moral1_level.ToString() == "5" ? "/" : string.Empty, + Moral2Level1 = evaluate_assign.data.evaluate.moral2_level.ToString() == "1" ? "/" : string.Empty, + Moral2Level2 = evaluate_assign.data.evaluate.moral2_level.ToString() == "2" ? "/" : string.Empty, + Moral2Level3 = evaluate_assign.data.evaluate.moral2_level.ToString() == "3" ? "/" : string.Empty, + Moral2Level4 = evaluate_assign.data.evaluate.moral2_level.ToString() == "4" ? "/" : string.Empty, + Moral2Level5 = evaluate_assign.data.evaluate.moral2_level.ToString() == "5" ? "/" : string.Empty, + Moral3Level1 = evaluate_assign.data.evaluate.moral3_level.ToString() == "1" ? "/" : string.Empty, + Moral3Level2 = evaluate_assign.data.evaluate.moral3_level.ToString() == "2" ? "/" : string.Empty, + Moral3Level3 = evaluate_assign.data.evaluate.moral3_level.ToString() == "3" ? "/" : string.Empty, + Moral3Level4 = evaluate_assign.data.evaluate.moral3_level.ToString() == "4" ? "/" : string.Empty, + Moral3Level5 = evaluate_assign.data.evaluate.moral3_level.ToString() == "5" ? "/" : string.Empty, + Discipline1Level1 = evaluate_assign.data.evaluate.discipline1_level.ToString() == "1" ? "/" : string.Empty, + Discipline1Level2 = evaluate_assign.data.evaluate.discipline1_level.ToString() == "2" ? "/" : string.Empty, + Discipline1Level3 = evaluate_assign.data.evaluate.discipline1_level.ToString() == "3" ? "/" : string.Empty, + Discipline1Level4 = evaluate_assign.data.evaluate.discipline1_level.ToString() == "4" ? "/" : string.Empty, + Discipline1Level5 = evaluate_assign.data.evaluate.discipline1_level.ToString() == "5" ? "/" : string.Empty, + Discipline2Level1 = evaluate_assign.data.evaluate.discipline2_level.ToString() == "1" ? "/" : string.Empty, + Discipline2Level2 = evaluate_assign.data.evaluate.discipline2_level.ToString() == "2" ? "/" : string.Empty, + Discipline2Level3 = evaluate_assign.data.evaluate.discipline2_level.ToString() == "3" ? "/" : string.Empty, + Discipline2Level4 = evaluate_assign.data.evaluate.discipline2_level.ToString() == "4" ? "/" : string.Empty, + Discipline2Level5 = evaluate_assign.data.evaluate.discipline2_level.ToString() == "5" ? "/" : string.Empty, + Discipline3Level1 = evaluate_assign.data.evaluate.discipline3_level.ToString() == "1" ? "/" : string.Empty, + Discipline3Level2 = evaluate_assign.data.evaluate.discipline3_level.ToString() == "2" ? "/" : string.Empty, + Discipline3Level3 = evaluate_assign.data.evaluate.discipline3_level.ToString() == "3" ? "/" : string.Empty, + Discipline3Level4 = evaluate_assign.data.evaluate.discipline3_level.ToString() == "4" ? "/" : string.Empty, + Discipline3Level5 = evaluate_assign.data.evaluate.discipline3_level.ToString() == "5" ? "/" : string.Empty, + Discipline4Level1 = evaluate_assign.data.evaluate.discipline4_level.ToString() == "1" ? "/" : string.Empty, + Discipline4Level2 = evaluate_assign.data.evaluate.discipline4_level.ToString() == "2" ? "/" : string.Empty, + Discipline4Level3 = evaluate_assign.data.evaluate.discipline4_level.ToString() == "3" ? "/" : string.Empty, + Discipline4Level4 = evaluate_assign.data.evaluate.discipline4_level.ToString() == "4" ? "/" : string.Empty, + Discipline4Level5 = evaluate_assign.data.evaluate.discipline4_level.ToString() == "5" ? "/" : string.Empty, + Discipline5Level1 = evaluate_assign.data.evaluate.discipline5_level.ToString() == "1" ? "/" : string.Empty, + Discipline5Level2 = evaluate_assign.data.evaluate.discipline5_level.ToString() == "2" ? "/" : string.Empty, + Discipline5Level3 = evaluate_assign.data.evaluate.discipline5_level.ToString() == "3" ? "/" : string.Empty, + Discipline5Level4 = evaluate_assign.data.evaluate.discipline5_level.ToString() == "4" ? "/" : string.Empty, + Discipline5Level5 = evaluate_assign.data.evaluate.discipline5_level.ToString() == "5" ? "/" : string.Empty, + BehaviorOtherDesc = evaluate_assign.data.evaluate.behavior_other_desc, + BehaviorOtherLevel1 = evaluate_assign.data.evaluate.behavior_other_level.ToString() == "1" ? "/" : string.Empty, + BehaviorOtherLevel2 = evaluate_assign.data.evaluate.behavior_other_level.ToString() == "2" ? "/" : string.Empty, + BehaviorOtherLevel3 = evaluate_assign.data.evaluate.behavior_other_level.ToString() == "3" ? "/" : string.Empty, + BehaviorOtherLevel4 = evaluate_assign.data.evaluate.behavior_other_level.ToString() == "4" ? "/" : string.Empty, + BehaviorOtherLevel5 = evaluate_assign.data.evaluate.behavior_other_level.ToString() == "5" ? "/" : string.Empty, + BehaviorStrengthDesc = evaluate_assign.data.evaluate.behavior_strength_desc, + BehaviorImproveDesc = evaluate_assign.data.evaluate.behavior_improve_desc, + //table3 + Orientation = evaluate_assign.data.evaluate.orientation == 1 ? "[/] ดำเนินการแล้ว [ ] ยังไม่ได้ดำเนินการ" : "[ ] ดำเนินการแล้ว [/] ยังไม่ได้ดำเนินการ", + SelfLearning = evaluate_assign.data.evaluate.self_learning == 1 ? "[/] ดำเนินการแล้ว [ ] ยังไม่ได้ดำเนินการ" : "[ ] ดำเนินการแล้ว [/] ยังไม่ได้ดำเนินการ", + TrainingSeminar = evaluate_assign.data.evaluate.training_seminar == 1 ? "[/] ดำเนินการแล้ว [ ] ยังไม่ได้ดำเนินการ" : "[ ] ดำเนินการแล้ว [/] ยังไม่ได้ดำเนินการ", + OtherTraining = evaluate_assign.data.evaluate.other_training == 1 ? "[/] ดำเนินการแล้ว [ ] ยังไม่ได้ดำเนินการ" : "[ ] ดำเนินการแล้ว [/] ยังไม่ได้ดำเนินการ", + CommanderName = string.IsNullOrEmpty(evaluate_assign.data.person.name) ? string.Empty : evaluate_assign.data.person.name, + CommanderPosition = string.IsNullOrEmpty(evaluate_assign.data.person.Position) ? string.Empty : evaluate_assign.data.person.Position, + AssessorDated = ConvertDateMonthYear(evaluate_assessor_dated[0], evaluate_assessor_dated[1], evaluate_assessor_dated[2]), + + }; + } + else + { + return null; + } + } + } + #endregion + + #region แบบประเมินผล(คณะกรรมการ) + public async Task GetEvaluateChairmanAssignAsync(Guid id, string no, string token) + { + var api_url = $"https://bmaehr.joolsoft.com/nodeapi/v1/evaluate-chairman?assign_id={id}&evaluate_no={no}"; + EvaluateChairmanAssignResponse evaluate_assign; + using (var client = new HttpClient()) + { + client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", token); + var req = new HttpRequestMessage(HttpMethod.Get, api_url); + var res = await client.SendAsync(req); + var result = await res.Content.ReadAsStringAsync(); + evaluate_assign = JsonConvert.DeserializeObject(result); + + if (evaluate_assign.data != null) + { + //Assign + string[] date_start_parts = evaluate_assign.data.assign.date_start.Split('-'); + string[] date_finish_parts = evaluate_assign.data.assign.date_finish.Split('-'); + //Evaluate + string[] evaluate_date_start_parts = evaluate_assign.data.evaluate.date_start.Split('-'); + string[] evaluate_date_finish_parts = evaluate_assign.data.evaluate.date_finish.Split('-'); + string[] date_chiarman_part = string.IsNullOrEmpty(evaluate_assign.data.chairman.dated) ? null : evaluate_assign.data.chairman.dated.ToString().Split('-'); + string[] date_mentor1_part = evaluate_assign.data.mentors[0].dated.ToString().Split('-'); + string[] date_mentor2_part = evaluate_assign.data.mentors[1].dated.ToString().Split('-'); + + return new + { + No = evaluate_assign.data.evaluate.no, + EvaluateDateStart = ConvertDateMonthYear(evaluate_date_start_parts[0], evaluate_date_start_parts[1], evaluate_date_start_parts[2]), + EvaluateDateFinish = ConvertDateMonthYear(evaluate_date_finish_parts[0], evaluate_date_finish_parts[1], evaluate_date_finish_parts[2]), + Name = string.IsNullOrEmpty(evaluate_assign.data.experimentee.name) ? string.Empty : evaluate_assign.data.experimentee.name, + Position = string.IsNullOrEmpty(evaluate_assign.data.experimentee.Position) ? string.Empty : evaluate_assign.data.experimentee.Position, + Department = string.IsNullOrEmpty(evaluate_assign.data.experimentee.Department) ? string.Empty : evaluate_assign.data.experimentee.Department, + OrganizationOrganization = string.IsNullOrEmpty(evaluate_assign.data.experimentee.OrganizationOrganization) ? string.Empty : evaluate_assign.data.experimentee.OrganizationOrganization, + Oc = string.IsNullOrEmpty(evaluate_assign.data.experimentee.Oc) ? string.Empty : evaluate_assign.data.experimentee.Oc, + DateStart = ConvertDateMonthYear(date_start_parts[0], date_start_parts[1], date_start_parts[2]), + DateFinish = ConvertDateMonthYear(date_finish_parts[0], date_finish_parts[1], date_finish_parts[2]), + ChairmanName = string.IsNullOrEmpty(evaluate_assign.data.chairman.profile.name) ? string.Empty : evaluate_assign.data.chairman.profile.name, + ChairmanPosition = string.IsNullOrEmpty(evaluate_assign.data.chairman.profile.Position) ? string.Empty : evaluate_assign.data.chairman.profile.Position, + ChairmanDate = date_chiarman_part != null ? ConvertDateMonthYear(date_chiarman_part[0], date_chiarman_part[1], date_chiarman_part[2]) : ConvertDateMonthYear("", "", ""), + //คณะกรรม ? mentors ? + MentorName1 = string.IsNullOrEmpty(evaluate_assign.data.mentors[0].profile.name) ? string.Empty : evaluate_assign.data.mentors[0].profile.name, + MentorName2 = string.IsNullOrEmpty(evaluate_assign.data.mentors[1].profile.name) ? string.Empty : evaluate_assign.data.mentors[1].profile.name, + MentorPosition1 = string.IsNullOrEmpty(evaluate_assign.data.mentors[0].profile.Position) ? string.Empty : evaluate_assign.data.mentors[0].profile.Position, + MentorPosition2 = string.IsNullOrEmpty(evaluate_assign.data.mentors[1].profile.Position) ? string.Empty : evaluate_assign.data.mentors[1].profile.Position, + MentorDate1 = date_mentor1_part != null ? ConvertDateMonthYear(date_mentor1_part[0], date_mentor1_part[1], date_mentor1_part[2]) : ConvertDateMonthYear("", "", ""), + MentorDate2 = date_mentor2_part != null ? ConvertDateMonthYear(date_mentor2_part[0], date_mentor2_part[1], date_mentor2_part[2]) : ConvertDateMonthYear("", "", ""), + //1 + KnowledgeLevel = evaluate_assign.data.evaluate.knowledge_level.ToString().ToThaiNumber(), + ApplyLevel = evaluate_assign.data.evaluate.apply_level.ToString().ToThaiNumber(), + SuccessLevel = evaluate_assign.data.evaluate.success_level.ToString().ToThaiNumber(), + AchievementOtherDesc = evaluate_assign.data.evaluate.achievement_other_desc, + AchievementOtherLevel = evaluate_assign.data.evaluate.achievement_other_level.ToString().ToThaiNumber(), + //2 + Conduct1Level = evaluate_assign.data.evaluate.conduct1_level.ToString().ToThaiNumber(), + Conduct2Level = evaluate_assign.data.evaluate.conduct2_level.ToString().ToThaiNumber(), + Conduct3Level = evaluate_assign.data.evaluate.conduct3_level.ToString().ToThaiNumber(), + Conduct4Level = evaluate_assign.data.evaluate.conduct4_level.ToString().ToThaiNumber(), + Moral1Level = evaluate_assign.data.evaluate.moral1_level.ToString().ToThaiNumber(), + Moral2Level = evaluate_assign.data.evaluate.moral2_level.ToString().ToThaiNumber(), + Moral3Level = evaluate_assign.data.evaluate.moral3_level.ToString().ToThaiNumber(), + Discipline1Level = evaluate_assign.data.evaluate.discipline1_level.ToString().ToThaiNumber(), + Discipline2Level = evaluate_assign.data.evaluate.discipline2_level.ToString().ToThaiNumber(), + Discipline3Level = evaluate_assign.data.evaluate.discipline3_level.ToString().ToThaiNumber(), + Discipline4Level = evaluate_assign.data.evaluate.discipline4_level.ToString().ToThaiNumber(), + Discipline5Level = evaluate_assign.data.evaluate.discipline4_level.ToString().ToThaiNumber(), + BehaviorOtherDesc = evaluate_assign.data.evaluate.behavior_other_desc, + BehaviorOtherLevel = evaluate_assign.data.evaluate.behavior_other_level.ToString().ToThaiNumber(), + //3 + AchievementScore = evaluate_assign.data.evaluate.achievement_score.ToString().ToThaiNumber(), + AchievementPercent = evaluate_assign.data.evaluate.achievement_percent.ToString().ToThaiNumber(), + AchievementResult = evaluate_assign.data.evaluate.achievement_result.ToString().ToThaiNumber(), + BehaviorScore = evaluate_assign.data.evaluate.behavior_score.ToString().ToThaiNumber(), + BehaviorPercent = evaluate_assign.data.evaluate.behavior_percent.ToString().ToThaiNumber(), + BehaviorResult = evaluate_assign.data.evaluate.behavior_result.ToString().ToThaiNumber(), + AchievementScoretotal = evaluate_assign.data.evaluate.achievement_score_total.ToString().ToThaiNumber(), + BehaviorScoretotal = evaluate_assign.data.evaluate.behavior_score_total.ToString().ToThaiNumber(), + //4 + DevelopOrientationScore = evaluate_assign.data.evaluate.develop_orientation_score.ToString().ToThaiNumber(), + DevelopSelfLearningScore = evaluate_assign.data.evaluate.develop_self_learning_score.ToString().ToThaiNumber(), + DevelopTrainingSeminarScore = evaluate_assign.data.evaluate.develop_training_seminar_score.ToString().ToThaiNumber(), + DevelopOtherTrainingScore = evaluate_assign.data.evaluate.develop_other_training_score.ToString().ToThaiNumber(), + DevelopOrientationPercent = evaluate_assign.data.evaluate.develop_orientation_percent.ToString().ToThaiNumber(), + DevelopSelfLearningPercent = evaluate_assign.data.evaluate.develop_self_learning_percent.ToString().ToThaiNumber(), + DevelopTrainingSeminarPercent = evaluate_assign.data.evaluate.develop_training_seminar_percent.ToString().ToThaiNumber(), + DevelopOtherTrainingPercent = evaluate_assign.data.evaluate.develop_other_training_percent.ToString().ToThaiNumber(), + DevelopResult = evaluate_assign.data.evaluate.develop_result.ToString(), + + + }; + } + else + { + return null; + } + } + } + #endregion + + #region แบบรายงานการประเมินผล + public async Task GetEvaluateResultAssignAsync(Guid id, string token) + { + var api_url = $"https://bmaehr.joolsoft.com/nodeapi/v1/evaluate-result?assign_id={id}"; + EvaluateResultAssignResponse evaluate_assign; + using (var client = new HttpClient()) + { + client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", token); + var req = new HttpRequestMessage(HttpMethod.Get, api_url); + var res = await client.SendAsync(req); + var result = await res.Content.ReadAsStringAsync(); + evaluate_assign = JsonConvert.DeserializeObject(result); + + if (evaluate_assign.data != null) + { + string[] date_start_parts = evaluate_assign.data.assign.date_start.Split('-'); + string[] date_finish_parts = evaluate_assign.data.assign.date_finish.Split('-'); + string[] evaluate_date_start_parts = evaluate_assign.data.evaluate.date_start.Split('-'); + string[] evaluate_date_finish_parts = evaluate_assign.data.evaluate.date_finish.Split('-'); + DateTime currentDate = DateTime.Now; + string[] date_curent_parts = currentDate.ToString("yyyy-MM-dd").Split('-'); + if(string.IsNullOrEmpty(evaluate_assign.data.chairman.Position)) + { + evaluate_assign.data.chairman.Position = string.Empty; + } + return new + { + No = evaluate_assign.data.evaluate.no, + EvaluateDateStart = ConvertDateMonthYear(evaluate_date_start_parts[0], evaluate_date_start_parts[1], evaluate_date_start_parts[2]), + EvaluateDateFinish = ConvertDateMonthYear(evaluate_date_finish_parts[0], evaluate_date_finish_parts[1], evaluate_date_finish_parts[2]), + Position = string.IsNullOrEmpty(evaluate_assign.data.experimentee.Position) ? string.Empty : evaluate_assign.data.experimentee.Position, + Department = string.IsNullOrEmpty(evaluate_assign.data.experimentee.Department) ? string.Empty : evaluate_assign.data.experimentee.Department, + OrganizationOrganization = string.IsNullOrEmpty(evaluate_assign.data.experimentee.OrganizationOrganization) ? string.Empty : evaluate_assign.data.experimentee.OrganizationOrganization, + Oc = string.IsNullOrEmpty(evaluate_assign.data.experimentee.Oc) ? string.Empty : evaluate_assign.data.experimentee.Oc, + DateStart = ConvertDateMonthYear(date_start_parts[0], date_start_parts[1], date_start_parts[2]), + DateFinish = ConvertDateMonthYear(date_finish_parts[0], date_finish_parts[1], date_finish_parts[2]), + Reson = string.IsNullOrEmpty(evaluate_assign.data.evaluate.reson) ? string.Empty : evaluate_assign.data.evaluate.reson, + DevelopComplete = evaluate_assign.data.evaluate.develop_complete.ToString() == "1" ? "/" : " ", + NotDevelopComplete = evaluate_assign.data.evaluate.develop_complete.ToString() == "0" ? "/" : " ", + PassResult = evaluate_assign.data.evaluate.pass_result.ToString() == "1" ? "/" : " ", + NotPassResult = evaluate_assign.data.evaluate.pass_result.ToString() == "0" ? "/" : " ", + ExpandMonth = string.IsNullOrEmpty(evaluate_assign.data.evaluate.expand_month.ToString()) ? string.Empty : evaluate_assign.data.evaluate.expand_month.ToString().ToThaiNumber(), + ChairmanName = string.IsNullOrEmpty(evaluate_assign.data.chairman.name) ? evaluate_assign.data.chairman.name : string.Empty, + ChairmanPosition = string.IsNullOrEmpty(evaluate_assign.data.chairman.Position) ? evaluate_assign.data.chairman.Position : "-", + ChairmanDate = ConvertDateMonthYear(date_curent_parts[0], date_curent_parts[1], date_curent_parts[2]) + }; + } + else + { + return null; + } + } + } + #endregion + + #region ฟังก์ชั่นแปลงวันเดือนปี + public static string ConvertDateMonthYear(string year, string month, string date) + { + year = year.ToInteger().ToThaiYear().ToString().ToThaiNumber(); + month = month.ToInteger().ToThaiMonth(); + date = date.StartsWith("0") ? date.Substring(1).ToThaiNumber(): date.ToThaiNumber(); + + return $"วันที่ {date} เดือน {month} พ.ศ. {year}"; + } + #endregion + + #endregion + } +} diff --git a/BMA.EHR.Application/Responses/EvaluateAssignResponse.cs b/BMA.EHR.Application/Responses/EvaluateAssignResponse.cs new file mode 100644 index 00000000..19dcebf3 --- /dev/null +++ b/BMA.EHR.Application/Responses/EvaluateAssignResponse.cs @@ -0,0 +1,101 @@ +using System; + +namespace BMA.EHR.Application.Responses +{ + public class EvaluateAssignResponse + { + public bool successful { get; set; } + public Data data { get; set; } + + public class Data + { + public Experimentee experimentee { get; set; } + public Person person { get; set; } + public Assign assign { get; set; } + public Evaluate evaluate { get; set; } + } + + public class Experimentee + { + public string personal_id { get; set; } = string.Empty; + public string name { get; set; } = string.Empty; + public string PositionId { get; set; } = string.Empty; + public string PositionLevelId { get; set; } = string.Empty; + public string PositionLineId { get; set; } = string.Empty; + public string OrganizationOrganization { get; set; } = string.Empty; + public string Position { get; set; } = string.Empty; + public string Department { get; set; } = string.Empty; + public string Oc { get; set; } = string.Empty; + } + + public class Person + { + public string personal_id { get; set; } = string.Empty; + public string name { get; set; } = string.Empty; + public string PositionId { get; set; } = string.Empty; + public string PositionLevelId { get; set; } = string.Empty; + public string PositionLineId { get; set; } = string.Empty; + public string OrganizationOrganization { get; set; } = string.Empty; + public string Position { get; set; } = string.Empty; + public string Department { get; set; } = string.Empty; + public string Oc { get; set; } = string.Empty; + } + + public class Assign + { + public string personal_id { get; set; } = string.Empty; + public string round_no { get; set; } = string.Empty; + public string date_start { get; set; } = string.Empty; + public string date_finish { get; set; } = string.Empty; + public string behavior_desc { get; set; } = string.Empty; + public string other_desc { get; set; } = string.Empty; + public string other4_desc { get; set; } = string.Empty; + public string other5_no1_desc { get; set; } = string.Empty; + public string other5_no2_desc { get; set; } = string.Empty; + public string experimenter_dated { get; set; } = string.Empty; + } + + public class Evaluate + { + public string id { get; set; } = string.Empty; + public string director_id { get; set; } = string.Empty; + public string assign_id { get; set; } = string.Empty; + public string no { get; set; } = string.Empty; + public string date_start { get; set; } = string.Empty; + public string date_finish { get; set; } = string.Empty; + public string commander_dated { get; set; } = string.Empty; + public int knowledge_level { get; set; } + public int skill_level { get; set; } + public int competency_level { get; set; } + public int learn_level { get; set; } + public int apply_level { get; set; } + public int success_level { get; set; } + public string achievement_other_desc { get; set; } = string.Empty; + public int? achievement_other_level { get; set; } + public string achievement_strength_desc { get; set; } = string.Empty; + public string achievement_improve_desc { get; set; } = string.Empty; + public int conduct1_level { get; set; } + public int conduct2_level { get; set; } + public int conduct3_level { get; set; } + public int conduct4_level { get; set; } + public int moral1_level { get; set; } + public int moral2_level { get; set; } + public int moral3_level { get; set; } + public int discipline1_level { get; set; } + public int discipline2_level { get; set; } + public int discipline3_level { get; set; } + public int discipline4_level { get; set; } + public int discipline5_level { get; set; } + public string behavior_other_desc { get; set; } = string.Empty; + public int? behavior_other_level { get; set; } + public string behavior_strength_desc { get; set; } = string.Empty; + public string behavior_improve_desc { get; set; } = string.Empty; + public int orientation { get; set; } + public int self_learning { get; set; } + public int training_seminar { get; set; } + public int other_training { get; set; } + public string createdAt { get; set; } = string.Empty; + public string updatedAt { get; set; } = string.Empty; + } + } +} diff --git a/BMA.EHR.Application/Responses/EvaluateChairmanAssignResponse.cs b/BMA.EHR.Application/Responses/EvaluateChairmanAssignResponse.cs new file mode 100644 index 00000000..006c297c --- /dev/null +++ b/BMA.EHR.Application/Responses/EvaluateChairmanAssignResponse.cs @@ -0,0 +1,133 @@ +using System; + +namespace BMA.EHR.Application.Responses +{ + public class EvaluateChairmanAssignResponse + { + public bool successful { get; set; } + public Data data { get; set; } + + public class Data + { + public Experimentee experimentee { get; set; } + public List mentors { get; set; } + public Commander commander { get; set; } + public Chairman chairman { get; set; } + public Assign assign { get; set; } + public Evaluate evaluate { get; set; } + } + + public class Experimentee + { + public string personal_id { get; set; } = string.Empty; + public string name { get; set; } = string.Empty; + public string PositionId { get; set; } = string.Empty; + public string PositionLevelId { get; set; } = string.Empty; + public string PositionLineId { get; set; } = string.Empty; + public string OrganizationOrganization { get; set; } = string.Empty; + public string Position { get; set; } = string.Empty; + public string Department { get; set; } = string.Empty; + public string Oc { get; set; } = string.Empty; + } + + public class Mentor + { + public string dated { get; set; } + public Profile profile { get; set; } + + } + + public class Commander + { + public string personal_id { get; set; } = string.Empty; + public string name { get; set; } = string.Empty; + public string dated { get; set; } = string.Empty; + public string Position { get; set; } = string.Empty; + } + + public class Chairman + { + public string dated { get; set; } + public Profile profile { get; set; } + } + + public class Assign + { + public string personal_id { get; set; } = string.Empty; + public string round_no { get; set; } = string.Empty; + public string date_start { get; set; } = string.Empty; + public string date_finish { get; set; } = string.Empty; + public string behavior_desc { get; set; } = string.Empty; + public string other_desc { get; set; } = string.Empty; + public string other4_desc { get; set; } = string.Empty; + public string other5_no1_desc { get; set; } = string.Empty; + public string other5_no2_desc { get; set; } = string.Empty; + public string experimenter_dated { get; set; } = string.Empty; + } + + public class Evaluate + { + public string id { get; set; } = string.Empty; + public string director_id { get; set; } = string.Empty; + public string assign_id { get; set; } = string.Empty; + public string no { get; set; } = string.Empty; + public string date_start { get; set; } = string.Empty; + public string date_finish { get; set; } = string.Empty; + public string chairman_dated { get; set; } = string.Empty; + public int knowledge_level { get; set; } + public int apply_level { get; set; } + public int success_level { get; set; } + public string achievement_other_desc { get; set; } = string.Empty; + public int? achievement_other_level { get; set; } + public int conduct1_level { get; set; } + public int conduct2_level { get; set; } + public int conduct3_level { get; set; } + public int conduct4_level { get; set; } + public int moral1_level { get; set; } + public int moral2_level { get; set; } + public int moral3_level { get; set; } + public int discipline1_level { get; set; } + public int discipline2_level { get; set; } + public int discipline3_level { get; set; } + public int discipline4_level { get; set; } + public int discipline5_level { get; set; } + public string behavior_other_desc { get; set; } = string.Empty; + public int? behavior_other_level { get; set; } + public int achievement_score { get; set; } + public int achievement_score_total { get; set; } + public int achievement_percent { get; set; } + public int achievement_result { get; set; } + public int behavior_score { get; set; } + public int behavior_score_total { get; set; } + public double behavior_percent { get; set; } + public int behavior_result { get; set; } + public int develop_orientation_score { get; set; } + public int develop_self_learning_score { get; set; } + public int develop_training_seminar_score { get; set; } + public int develop_other_training_score { get; set; } + public int develop_orientation_percent { get; set; } + public int develop_self_learning_percent { get; set; } + public int develop_training_seminar_percent { get; set; } + public int develop_other_training_percent { get; set; } + public int develop_result { get; set; } + public int sum_score { get; set; } + public double sum_percent { get; set; } + public int evaluate_result { get; set; } + public string createdAt { get; set; } = string.Empty; + public string updatedAt { get; set; } = string.Empty; + } + + public class Profile + { + public string personal_id { get; set; } = string.Empty; + public string name { get; set; } = string.Empty; + public string PositionId { get; set; } = string.Empty; + public string PositionLevelId { get; set; } = string.Empty; + public string PositionLineId { get; set; } = string.Empty; + public string OrganizationOrganization { get; set; } = string.Empty; + public string Position { get; set; } = string.Empty; + public string Department { get; set; } = string.Empty; + public string Oc { get; set; } = string.Empty; + } + } +} diff --git a/BMA.EHR.Application/Responses/EvaluateRecordAssignResponse.cs b/BMA.EHR.Application/Responses/EvaluateRecordAssignResponse.cs new file mode 100644 index 00000000..0d91efd6 --- /dev/null +++ b/BMA.EHR.Application/Responses/EvaluateRecordAssignResponse.cs @@ -0,0 +1,106 @@ +using System; + +namespace BMA.EHR.Application.Responses +{ + public class EvaluateRecordAssignResponse + { + public bool successful { get; set; } + public Data data { get; set; } + + public class Data + { + public Experimentee experimentee { get; set; } + public Person person { get; set; } + public Assign assign { get; set; } + public List evaluate { get; set; } + } + + public class Experimentee + { + public string personal_id { get; set; } = string.Empty; + public string name { get; set; } = string.Empty; + public string PositionId { get; set; } = string.Empty; + public string PositionLevelId { get; set; } = string.Empty; + public string PositionLineId { get; set; } = string.Empty; + public string OrganizationOrganization { get; set; } = string.Empty; + public string Position { get; set; } = string.Empty; + public string Department { get; set; } = string.Empty; + public string Oc { get; set; } = string.Empty; + } + + public class Person + { + public string personal_id { get; set; } = string.Empty; + public string name { get; set; } = string.Empty; + public string PositionId { get; set; } = string.Empty; + public string PositionLevelId { get; set; } = string.Empty; + public string PositionLineId { get; set; } = string.Empty; + public string OrganizationOrganization { get; set; } = string.Empty; + public string Position { get; set; } = string.Empty; + public string Department { get; set; } = string.Empty; + public string Oc { get; set; } = string.Empty; + } + + public class Assign + { + public string date_start { get; set; } = string.Empty; + public string date_finish { get; set; } = string.Empty; + public string behavior_desc { get; set; } = string.Empty; + public string other_desc { get; set; } = string.Empty; + public string other4_desc { get; set; } = string.Empty; + public string other5_no1_desc { get; set; } = string.Empty; + public string other5_no2_desc { get; set; } = string.Empty; + public string experimenter_dated { get; set; } = string.Empty; + } + + public class Evaluate + { + public string id { get; set; } = string.Empty; + public string director_id { get; set; } = string.Empty; + public string assign_id { get; set; } = string.Empty; + public string no { get; set; } = string.Empty; + public string date_start { get; set; } = string.Empty; + public string date_finish { get; set; } = string.Empty; + public string assessor_dated { get; set; } = string.Empty; + public int knowledge_level { get; set; } + public int skill_level { get; set; } + public int competency_level { get; set; } + public int learn_level { get; set; } + public int apply_level { get; set; } + public string achievement_other_desc { get; set; } = string.Empty; + public int? achievement_other_level { get; set; } + public string achievement_strength_desc { get; set; } = string.Empty; + public string achievement_improve_desc { get; set; } = string.Empty; + public int conduct1_level { get; set; } + public int conduct2_level { get; set; } + public int conduct3_level { get; set; } + public int conduct4_level { get; set; } + public int moral1_level { get; set; } + public int moral2_level { get; set; } + public int moral3_level { get; set; } + public int discipline1_level { get; set; } + public int discipline2_level { get; set; } + public int discipline3_level { get; set; } + public int discipline4_level { get; set; } + public int discipline5_level { get; set; } + public string behavior_other_desc { get; set; } = string.Empty; + public int? behavior_other_level { get; set; } + public string behavior_strength_desc { get; set; } = string.Empty; + public string behavior_improve_desc { get; set; } = string.Empty; + public int orientation { get; set; } + public int self_learning { get; set; } + public int training_seminar { get; set; } + public int other_training { get; set; } + public string createdAt { get; set; } = string.Empty; + public string updatedAt { get; set; } = string.Empty; + public List achievements { get; set; } + } + public class Achievements + { + public string evaluate_expect_desc { get; set; } = string.Empty; + public int evaluate_expect_level { get; set; } + public string evaluate_output_desc { get; set; } = string.Empty; + public int evaluate_output_level { get; set; } + } + } +} diff --git a/BMA.EHR.Application/Responses/EvaluateResultAssignResponse.cs b/BMA.EHR.Application/Responses/EvaluateResultAssignResponse.cs new file mode 100644 index 00000000..7d269983 --- /dev/null +++ b/BMA.EHR.Application/Responses/EvaluateResultAssignResponse.cs @@ -0,0 +1,109 @@ +using System; + +namespace BMA.EHR.Application.Responses +{ + public class EvaluateResultAssignResponse + { + public bool successful { get; set; } + public Data data { get; set; } + + public class Data + { + public Commander commander { get; set; } + public Chairman chairman { get; set; } + public List mentors { get; set; } + public Experimentee experimentee { get; set; } + public Assign assign { get; set; } + public Evaluate evaluate { get; set; } + } + + public class Commander + { + public string personal_id { get; set; } + public string name { get; set; } + public string PositionId { get; set; } + public string PositionLevelId { get; set; } + public string PositionLineId { get; set; } + public string Position { get; set; } + public string Department { get; set; } + public string OrganizationOrganization { get; set; } + public string Oc { get; set; } + } + + public class Chairman + { + public string personal_id { get; set; } + public string name { get; set; } + public string PositionId { get; set; } + public string PositionLevelId { get; set; } + public string PositionLineId { get; set; } + public string Position { get; set; } + public string Department { get; set; } + public string OrganizationOrganization { get; set; } + public string Oc { get; set; } + } + + public class Mentor + { + public string personal_id { get; set; } + public string name { get; set; } + public string PositionId { get; set; } + public string PositionLevelId { get; set; } + public string PositionLineId { get; set; } + public string Position { get; set; } + public string Department { get; set; } + public string OrganizationOrganization { get; set; } + public string Oc { get; set; } + } + + public class Experimentee + { + public string personal_id { get; set; } + public string name { get; set; } + public string PositionId { get; set; } + public string PositionLevelId { get; set; } + public string PositionLineId { get; set; } + public string Position { get; set; } + public string Department { get; set; } + public string OrganizationOrganization { get; set; } + public string Oc { get; set; } + } + + public class Assign + { + public string id { get; set; } + public string personal_id { get; set; } + public int round_no { get; set; } + public string date_start { get; set; } + public string date_finish { get; set; } + public string behavior_desc { get; set; } + public string other_desc { get; set; } + public string other4_desc { get; set; } + public string other5_no1_desc { get; set; } + public string other5_no2_desc { get; set; } + public string experimenter_dated { get; set; } + public int active { get; set; } + public string createdAt { get; set; } + public string updatedAt { get; set; } + } + + public class Evaluate + { + public string id { get; set; } + public string director_id { get; set; } + public string assign_id { get; set; } + public int no { get; set; } + public string date_start { get; set; } + public string date_finish { get; set; } + public int develop_complete { get; set; } + public int pass_result { get; set; } + public int expand_month { get; set; } + public string reson { get; set; } + public string chairman_dated { get; set; } + public string director1_dated { get; set; } + public string director2_dated { get; set; } + public string createdAt { get; set; } + public string updatedAt { get; set; } + } + } +} diff --git a/BMA.EHR.Application/Responses/ProbationAssignResponse.cs b/BMA.EHR.Application/Responses/ProbationAssignResponse.cs new file mode 100644 index 00000000..73830dee --- /dev/null +++ b/BMA.EHR.Application/Responses/ProbationAssignResponse.cs @@ -0,0 +1,89 @@ +namespace BMA.EHR.Application.Responses +{ + public class ProbationAssignResponse + { + public bool successful { get; set; } + public Data data { get; set; } + + public class Data + { + public Profile profile { get; set; } + public Assign assign { get; set; } + public List mentors { get; set; } + public Commander commander { get; set; } + public List jobs { get; set; } + public List knowledges { get; set; } + public List competencys { get; set; } + public List outputs { get; set; } + } + + public class Profile + { + public string personal_id { get; set; } = string.Empty; + public string name { get; set; } = string.Empty; + public string PositionId { get; set; } = string.Empty; + public string PositionLevelId { get; set; } = string.Empty; + public string PositionLineId { get; set; } = string.Empty; + public string OrganizationOrganization { get; set; } = string.Empty; + public string Position { get; set; } = string.Empty; + public string Department { get; set; } = string.Empty; + public string Oc { get; set; } = string.Empty; + } + + public class Assign + { + public string date_start { get; set; } = string.Empty; + public string date_finish { get; set; } = string.Empty; + public string behavior_desc { get; set; } = string.Empty; + public string other_desc { get; set; } = string.Empty; + public string other4_desc { get; set; } = string.Empty; + public string other5_no1_desc { get; set; } = string.Empty; + public string other5_no2_desc { get; set; } = string.Empty; + public string experimenter_dated { get; set; } = string.Empty; + } + + public class Mentor + { + public string personal_id { get; set; } = string.Empty; + public string name { get; set; } = string.Empty; + public string dated { get; set; } = string.Empty; + public string Position { get; set; } = string.Empty; + } + + public class Commander + { + public string personal_id { get; set; } = string.Empty; + public string name { get; set; } = string.Empty; + public string dated { get; set; } = string.Empty; + public string Position { get; set; } = string.Empty; + } + + public class Job + { + public int id { get; set; } + public string activity_desc { get; set; } = string.Empty; + public string goal_desc { get; set; } = string.Empty; + } + + public class Knowledge + { + public int id { get; set; } + public string title { get; set; } = string.Empty; + public string description { get; set; } = string.Empty; + } + + public class Competency + { + public int id { get; set; } + public string title { get; set; } = string.Empty; + public string description { get; set; } = string.Empty; + } + + public class Output + { + public int id { get; set; } + public string output_desc { get; set; } = string.Empty; + public string indicator_desc { get; set; } = string.Empty; + } + } +} diff --git a/BMA.EHR.Report.Service/Controllers/InsigniaReportController.cs b/BMA.EHR.Report.Service/Controllers/InsigniaReportController.cs index 7fb08d5b..e33bbf2a 100644 --- a/BMA.EHR.Report.Service/Controllers/InsigniaReportController.cs +++ b/BMA.EHR.Report.Service/Controllers/InsigniaReportController.cs @@ -1,8 +1,11 @@ using BMA.EHR.Application.Repositories.Reports; using BMA.EHR.Domain.Common; +using DocumentFormat.OpenXml.Drawing; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; using Swashbuckle.AspNetCore.Annotations; +using Telerik.Reporting; +using Telerik.Reporting.Processing; namespace BMA.EHR.Report.Service.Controllers { @@ -55,7 +58,10 @@ namespace BMA.EHR.Report.Service.Controllers try { var data = await _repository.GetKhr1Report(id); - return Success(data); + var total = await _repository.GetKhr1TotalReport(id); + var YearInsignalPeriod = await _repository.GetYearInsigniaPeriod(id); + var TwoYearInsignalPeriod = await _repository.Get2YearInsigniaPeriod(id); + var Date = await _repository.GetDateInsigniaPeriod(id); var mimeType = ""; switch (exportType.Trim().ToLower()) { @@ -63,12 +69,53 @@ namespace BMA.EHR.Report.Service.Controllers case "docx": mimeType = "application/vnd.openxmlformats-officedocument.wordprocessingml.document"; break; case "xlsx": mimeType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"; break; } - + var rptFile = System.IO.Path.Combine(_hostingEnvironment.ContentRootPath, "Reports", $"39-แบบ ขร1 บัญชีแสดงจำนวนชั้นตราเครื่องราชฯ ข้าราชการ ชั้นสายสะพาย.trdp"); - var contentData = _reportGenerator.GenerateReport(rptFile, exportType); - return File(contentData, mimeType, $"insignia.{exportType.Trim().ToLower()}"); + ReportPackager reportPacker = new ReportPackager(); + Telerik.Reporting.Report? report = null; + using (var sourceStream = System.IO.File.OpenRead(rptFile)) + { + report = (Telerik.Reporting.Report)reportPacker.UnpackageDocument(sourceStream); + } + report.ReportParameters["YearInsigniaPeriod"].Value = YearInsignalPeriod; + report.ReportParameters["TwoYearInsignalPeriod"].Value = TwoYearInsignalPeriod; + report.ReportParameters["EndDate"].Value = Date.GetType().GetProperty("EndDate").GetValue(Date); + + var _Khr1List = new List(); + foreach (var _data in data) + { + _Khr1List.Add(new + { + RowNo = _data.GetType().GetProperty("RowNo").GetValue(_data), + DepartmentName = _data.GetType().GetProperty("DepartmentName").GetValue(_data), + G1Male = _data.GetType().GetProperty("G1Male").GetValue(_data), + G1Female = _data.GetType().GetProperty("G1Female").GetValue(_data), + G2Male = _data.GetType().GetProperty("G2Male").GetValue(_data), + G2Female = _data.GetType().GetProperty("G2Female").GetValue(_data), + G3Male = _data.GetType().GetProperty("G3Male").GetValue(_data), + G3Female = _data.GetType().GetProperty("G3Female").GetValue(_data), + G4Male = _data.GetType().GetProperty("G4Male").GetValue(_data), + G4Female = _data.GetType().GetProperty("G4Female").GetValue(_data), + G5Male = _data.GetType().GetProperty("G5Male").GetValue(_data), + G5Female = _data.GetType().GetProperty("G5Female").GetValue(_data), + reason = string.Empty, + }); + } + var tbl = (Telerik.Reporting.Table)report.Items["detailSection1"].Items["table1"]; + tbl.DataSource = _Khr1List; + var tbl2 = (Telerik.Reporting.Table)report.Items["detailSection1"].Items["table2"]; + tbl2.DataSource = total; + + System.Collections.Hashtable deviceInfo = new System.Collections.Hashtable(); + InstanceReportSource instanceReportSource = new InstanceReportSource() + { + ReportDocument = report, + }; + ReportProcessor reportProcessor = new ReportProcessor(_configuration); + RenderingResult result = reportProcessor.RenderReport($"{exportType}", instanceReportSource, deviceInfo); + return File(result.DocumentBytes, mimeType, $"แบบ ขร1.{exportType.Trim().ToLower()}"); } catch { @@ -93,7 +140,10 @@ namespace BMA.EHR.Report.Service.Controllers try { var data = await _repository.GetKhr2Report(id); - return Success(data); + var total = await _repository.GetKhr2TotalReport(id); + var YearInsignalPeriod = await _repository.GetYearInsigniaPeriod(id); + var TwoYearInsignalPeriod = await _repository.Get2YearInsigniaPeriod(id); + var Date = await _repository.GetDateInsigniaPeriod(id); var mimeType = ""; switch (exportType.Trim().ToLower()) { @@ -103,10 +153,58 @@ namespace BMA.EHR.Report.Service.Controllers } var rptFile = System.IO.Path.Combine(_hostingEnvironment.ContentRootPath, "Reports", $"40-แบบ ขร2 บัญชีแสดงจำนวนชั้นตราเครื่องราชฯ ข้าราชการ ชั้นต่ำกว่าสายสะพาย.trdp"); - var contentData = _reportGenerator.GenerateReport(rptFile, exportType); + ReportPackager reportPacker = new ReportPackager(); + Telerik.Reporting.Report? report = null; + using (var sourceStream = System.IO.File.OpenRead(rptFile)) + { + report = (Telerik.Reporting.Report)reportPacker.UnpackageDocument(sourceStream); + } - return File(contentData, mimeType, $"insignia.{exportType.Trim().ToLower()}"); + report.ReportParameters["YearInsigniaPeriod"].Value = YearInsignalPeriod; + report.ReportParameters["TwoYearInsignalPeriod"].Value = TwoYearInsignalPeriod; + report.ReportParameters["EndDate"].Value = Date.GetType().GetProperty("EndDate").GetValue(Date); + var _Khr2List = new List(); + foreach (var _data in data) + { + _Khr2List.Add(new + { + //RowNo = _data.GetType().GetProperty("RowNo").GetValue(_data), + RowNo = _Khr2List.Count+1, + DepartmentName = _data.GetType().GetProperty("DepartmentName").GetValue(_data), + G1Male = _data.GetType().GetProperty("G1Male").GetValue(_data), + G1Female = _data.GetType().GetProperty("G1Female").GetValue(_data), + G2Male = _data.GetType().GetProperty("G2Male").GetValue(_data), + G2Female = _data.GetType().GetProperty("G2Female").GetValue(_data), + G3Male = _data.GetType().GetProperty("G3Male").GetValue(_data), + G3Female = _data.GetType().GetProperty("G3Female").GetValue(_data), + G4Male = _data.GetType().GetProperty("G4Male").GetValue(_data), + G4Female = _data.GetType().GetProperty("G4Female").GetValue(_data), + G5Male = _data.GetType().GetProperty("G5Male").GetValue(_data), + G5Female = _data.GetType().GetProperty("G5Female").GetValue(_data), + G6Male = _data.GetType().GetProperty("G1Male").GetValue(_data), + G6Female = _data.GetType().GetProperty("G1Female").GetValue(_data), + G7Male = _data.GetType().GetProperty("G1Male").GetValue(_data), + G7Female = _data.GetType().GetProperty("G1Female").GetValue(_data), + G8Male = _data.GetType().GetProperty("G1Male").GetValue(_data), + G8Female = _data.GetType().GetProperty("G1Female").GetValue(_data), + G9Male = _data.GetType().GetProperty("G1Male").GetValue(_data), + G9Female = _data.GetType().GetProperty("G1Female").GetValue(_data), + }); + } + var tbl1 = (Telerik.Reporting.Table)report.Items["detailSection1"].Items["table1"]; + tbl1.DataSource = _Khr2List; + var tbl2 = (Telerik.Reporting.Table)report.Items["detailSection1"].Items["table2"]; + tbl2.DataSource = total; + + System.Collections.Hashtable deviceInfo = new System.Collections.Hashtable(); + InstanceReportSource instanceReportSource = new InstanceReportSource() + { + ReportDocument = report, + }; + ReportProcessor reportProcessor = new ReportProcessor(_configuration); + RenderingResult result = reportProcessor.RenderReport($"{exportType}", instanceReportSource, deviceInfo); + return File(result.DocumentBytes, mimeType, $"แบบ ขร2.{exportType.Trim().ToLower()}"); } catch { @@ -131,7 +229,6 @@ namespace BMA.EHR.Report.Service.Controllers try { var data = await _repository.GetKhr3Report(id); - return Success(data); var mimeType = ""; switch (exportType.Trim().ToLower()) { @@ -143,7 +240,7 @@ namespace BMA.EHR.Report.Service.Controllers var rptFile = System.IO.Path.Combine(_hostingEnvironment.ContentRootPath, "Reports", $"41-แบบ ขร3 บัญชีรายชื่อข้าราชการผู้ขอพระราชทานเครื่องราชฯ.trdp"); var contentData = _reportGenerator.GenerateReport(rptFile, exportType); - return File(contentData, mimeType, $"insignia.{exportType.Trim().ToLower()}"); + return File(contentData, mimeType, $"แบบ ขร3.{exportType.Trim().ToLower()}"); } catch @@ -169,7 +266,6 @@ namespace BMA.EHR.Report.Service.Controllers try { var data = await _repository.GetKhr4Report(id); - return Success(data); var mimeType = ""; switch (exportType.Trim().ToLower()) { @@ -179,9 +275,24 @@ namespace BMA.EHR.Report.Service.Controllers } var rptFile = System.IO.Path.Combine(_hostingEnvironment.ContentRootPath, "Reports", $"42-แบบ ขร4 บัญชีแสดงคุณสมบัติของข้าราชการซึ่งเสนอขอเครื่องราชฯ.trdp"); - var contentData = _reportGenerator.GenerateReport(rptFile, exportType); + ReportPackager reportPacker = new ReportPackager(); + Telerik.Reporting.Report? report = null; + using (var sourceStream = System.IO.File.OpenRead(rptFile)) + { + report = (Telerik.Reporting.Report)reportPacker.UnpackageDocument(sourceStream); + } - return File(contentData, mimeType, $"insignia.{exportType.Trim().ToLower()}"); + var tbl1 = (Telerik.Reporting.Table)report.Items["detailSection1"].Items["table1"]; + tbl1.DataSource = data; + + System.Collections.Hashtable deviceInfo = new System.Collections.Hashtable(); + InstanceReportSource instanceReportSource = new InstanceReportSource() + { + ReportDocument = report, + }; + ReportProcessor reportProcessor = new ReportProcessor(_configuration); + RenderingResult result = reportProcessor.RenderReport($"{exportType}", instanceReportSource, deviceInfo); + return File(result.DocumentBytes, mimeType, $"แบบ ขร4.{exportType.Trim().ToLower()}"); } catch diff --git a/BMA.EHR.Report.Service/Controllers/ProbationReportController.cs b/BMA.EHR.Report.Service/Controllers/ProbationReportController.cs index 4a59d21f..036b15eb 100644 --- a/BMA.EHR.Report.Service/Controllers/ProbationReportController.cs +++ b/BMA.EHR.Report.Service/Controllers/ProbationReportController.cs @@ -10,6 +10,8 @@ using DocumentFormat.OpenXml.Drawing; using Telerik.Reporting; using Telerik.Reporting.Processing; using System.IO; +using Newtonsoft.Json; +using BMA.EHR.Application.Responses; namespace BMA.EHR.Report.Service.Controllers { @@ -17,7 +19,7 @@ namespace BMA.EHR.Report.Service.Controllers [ApiVersion("2.0")] [ApiController] [Produces("application/json")] - [Authorize] + //[Authorize] [SwaggerTag("API รายงานระบทดลองงาน")] public class ProbationReportController : BaseController { @@ -25,20 +27,19 @@ namespace BMA.EHR.Report.Service.Controllers private readonly IWebHostEnvironment _hostingEnvironment; private readonly IConfiguration _configuration; - //private readonly ProbationReportRepository _repository; + private readonly ProbationReportRepository _repository; private readonly GenericReportGenerator _reportGenerator; - #endregion #region " Constuctor and Destructor " - public ProbationReportController(IWebHostEnvironment hostingEnvironment, IConfiguration configuration,/* ProbationReportRepository repository*/ GenericReportGenerator reportGenerator) + public ProbationReportController(IWebHostEnvironment hostingEnvironment, IConfiguration configuration, ProbationReportRepository repository, GenericReportGenerator reportGenerator) { _hostingEnvironment = hostingEnvironment; _configuration = configuration; - //_repository = repository; + _repository = repository; _reportGenerator = reportGenerator; } @@ -50,27 +51,174 @@ namespace BMA.EHR.Report.Service.Controllers /// /// 13-แบบมอบหมายงานการทดลองปฏิบัติหน้าที่ราชการ /// - /// assign id ของแบบมอบหมายงานการทดลองปฏิบัติหน้าที่ราชการ + /// assign id แบบมอบหมายงานการทดลองปฏิบัติหน้าที่ราชการ /// pdf, docx หรือ xlsx /// /// เมื่อทำการอ่านข้อมูลจาก Relational Database สำเร็จ /// ไม่ได้ Login เข้าระบบ /// เมื่อเกิดข้อผิดพลาดในการทำงาน [HttpGet("13/{exportType}/{id}")] - /*public async Task> GetProbationReportAsync(Guid id, string exportType = "pdf") + public async Task> GetProbationReportAsync(Guid id, string exportType = "pdf") { try { string authorizationHeader = Request.Headers["Authorization"]; string token = string.Empty; - id = Guid.Parse("f26581e7-2736-4988-b3c3-13c0bb3b15b3"); // fix ไว้ทดสอบเฉยๆเดี๋ยวมาลบครับ if (!string.IsNullOrEmpty(authorizationHeader) && authorizationHeader.StartsWith("Bearer ")) { token = authorizationHeader.Substring("Bearer ".Length).Trim(); var probation = await _repository.GetProbationAssignAsync(id, token); - return probation != null ? Success(probation) : NotFound(id); + + if(probation != null) + { + var mimeType = ""; + switch (exportType.Trim().ToLower()) + { + case "pdf": mimeType = "application/pdf"; break; + case "docx": mimeType = "application/vnd.openxmlformats-officedocument.wordprocessingml.document"; break; + case "xlsx": mimeType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"; break; + } + + var rptFile = System.IO.Path.Combine(_hostingEnvironment.ContentRootPath, "Reports", $"13-แบบมอบหมายงานการทดลองปฏิบัติหน้าที่ราชการ-1.trdp"); + var rptFile2 = System.IO.Path.Combine(_hostingEnvironment.ContentRootPath, "Reports", $"13-แบบมอบหมายงานการทดลองปฏิบัติหน้าที่ราชการ-2.trdp"); + var rptFile3 = System.IO.Path.Combine(_hostingEnvironment.ContentRootPath, "Reports", $"13-แบบมอบหมายงานการทดลองปฏิบัติหน้าที่ราชการ-3.trdp"); + + ReportPackager reportPacker = new ReportPackager(); + Telerik.Reporting.Report? report = null; + Telerik.Reporting.Report? report2 = null; + Telerik.Reporting.Report? report3 = null; + + using (var sourceStream = System.IO.File.OpenRead(rptFile)) + using (var sourceStream2 = System.IO.File.OpenRead(rptFile2)) + using (var sourceStream3 = System.IO.File.OpenRead(rptFile3)) + { + report = (Telerik.Reporting.Report)reportPacker.UnpackageDocument(sourceStream); + report2 = (Telerik.Reporting.Report)reportPacker.UnpackageDocument(sourceStream2); + report3 = (Telerik.Reporting.Report)reportPacker.UnpackageDocument(sourceStream3); + } + + report.ReportParameters["Name"].Value = probation.GetType().GetProperty("Name").GetValue(probation); + report.ReportParameters["Position"].Value = probation.GetType().GetProperty("Position").GetValue(probation); + report.ReportParameters["Department"].Value = probation.GetType().GetProperty("Department").GetValue(probation); + report.ReportParameters["OrganizationOrganization"].Value = probation.GetType().GetProperty("OrganizationOrganization").GetValue(probation); + report.ReportParameters["Oc"].Value = probation.GetType().GetProperty("Oc").GetValue(probation); + report.ReportParameters["DateStart"].Value = probation.GetType().GetProperty("DateStart").GetValue(probation); + report.ReportParameters["DateFinish"].Value = probation.GetType().GetProperty("DateFinish").GetValue(probation); + report.ReportParameters["NameMentor1"].Value = probation.GetType().GetProperty("NameMentor1").GetValue(probation); + report.ReportParameters["NameMentor2"].Value = probation.GetType().GetProperty("NameMentor2").GetValue(probation); + report.ReportParameters["DateMentor1"].Value = probation.GetType().GetProperty("DateMentor1").GetValue(probation); + report.ReportParameters["DateMentor2"].Value = probation.GetType().GetProperty("DateMentor2").GetValue(probation); + report.ReportParameters["PositionMentor1"].Value = probation.GetType().GetProperty("PositionMentor1").GetValue(probation); + report.ReportParameters["PositionMentor2"].Value = probation.GetType().GetProperty("PositionMentor2").GetValue(probation); + report.ReportParameters["OtherDesc"].Value = probation.GetType().GetProperty("OtherDesc").GetValue(probation); + report2.ReportParameters["Other4Desc"].Value = probation.GetType().GetProperty("Other4Desc").GetValue(probation); + report2.ReportParameters["Other5No1Desc"].Value = probation.GetType().GetProperty("Other5No1Desc").GetValue(probation); + report3.ReportParameters["Name"].Value = probation.GetType().GetProperty("Name").GetValue(probation); + report3.ReportParameters["Position"].Value = probation.GetType().GetProperty("Position").GetValue(probation); + report3.ReportParameters["DateStart"].Value = probation.GetType().GetProperty("DateStart").GetValue(probation); + report3.ReportParameters["NameMentor1"].Value = probation.GetType().GetProperty("NameMentor1").GetValue(probation); + report3.ReportParameters["PositionMentor1"].Value = probation.GetType().GetProperty("PositionMentor1").GetValue(probation); + report3.ReportParameters["DateMentor1"].Value = probation.GetType().GetProperty("DateMentor1").GetValue(probation); + report3.ReportParameters["NameCommander"].Value = probation.GetType().GetProperty("NameCommander").GetValue(probation); + report3.ReportParameters["PositionCommander"].Value = probation.GetType().GetProperty("PositionCommander").GetValue(probation); + report3.ReportParameters["DateCommander"].Value = probation.GetType().GetProperty("DateCommander").GetValue(probation); + report3.ReportParameters["Other5No2Desc"].Value = probation.GetType().GetProperty("Other5No2Desc").GetValue(probation); + + report.ReportParameters["Behave"].Value = + "ความประพฤติ\n" + + " • ให้บริการประชาชนหรือผู้รับบริการด้วยอธัยาศัยดี\n" + + " • มีความรับผิดชอบในการปฏิบัติงาน\n" + + " • ให้บริการประชาชนหรือผู้รับบริการด้วยความรวดเร็ว เอาใจใส่เป็นมาตรฐานเดียวกัน\n" + + " • ตั้งใจปฏิบัติหน้าที่ราชการด้วยความอุตสาหะ ขยันหมั่นเพียร\n" + + "ความมีคุณธรรมจริยธรรม ได้แก่\n" + + " • อุทิศตนและเสียสละเวลาในการปฏิบัติงานอย่างเต็มกำลังความสามารถ\n" + + " • มีจิตสำนึกที่ดี ปฏิบัติงานด้วยความซื่อสัตย์ สุจริต\n" + + " • ยึดมั่นในสถาบันพระมหากษัตริย์ และไม่กระทำการใด ๆ อันจะก่อให้เกิดความเสียหายต่อประเทศชาติ ศาสนา และพระมหากษัตริย์\n" + + "การรักษาวินัย ได้แก่\n" + + " • มีความรับผิดชอบในการรักษาเวลาทำงาน\n" + + " • แต่งกายในการปฏิบัติงานได้อย่างเหมาะสมกับการเป็นข้าราชการ\n" + + " • ไม่กระทำการใด ๆ อันเป็นการเสื่อมเกียรติและศักดิ์ศรีของความเป็นข้าราชการ\n" + + " • ไม่กระทำการใด ๆ อันอาจก่อให้เกิดความเสียหายแก่ชื่อเสียงของหน่วยงาน\n" + + " • ปฏิบัติหน้าที่อย่างตรงไปตรงมาโดยยึกหลักจรรยาบรรณวิชาชีพ\n"; + + var _jobsList = new List(); + dynamic jobs = probation.GetType().GetProperty("Jobs").GetValue(probation); + foreach (var job in jobs) + { + _jobsList.Add(new + { + Id = "-", + Activity_desc = job.activity_desc, + Goal_desc = job.goal_desc, + }); + } + var tblJobsActivity = (Telerik.Reporting.Table)report.Items["detailSection1"].Items["table1"]; + tblJobsActivity.DataSource = _jobsList; + var tblJobsGoal = (Telerik.Reporting.Table)report.Items["detailSection1"].Items["table2"]; + tblJobsGoal.DataSource = _jobsList; + + var _knowledgeList = new List(); + dynamic knowledges = probation.GetType().GetProperty("Knowledge").GetValue(probation); + foreach (var knowledge in knowledges) + { + _knowledgeList.Add(new + { + Title = knowledge.title, + Description =knowledge.description + }); + } + var tblKnowledges = (Telerik.Reporting.Table)report.Items["detailSection1"].Items["table3"]; + tblKnowledges.DataSource = _knowledgeList; + + var _competencysList = new List(); + dynamic competencys = probation.GetType().GetProperty("Competency").GetValue(probation); + foreach (var competency in competencys) + { + _competencysList.Add(new + { + Id = competency.id, + Title = competency.title, + Description = competency.description + }); + } + var tblCompetencys = (Telerik.Reporting.Table)report.Items["detailSection1"].Items["table4"]; + tblCompetencys.DataSource = _competencysList; + + var _OutputsList = new List(); + dynamic Outputs = probation.GetType().GetProperty("Outputs").GetValue(probation); + foreach (var Output in Outputs) + { + _OutputsList.Add(new + { + Output_desc = Output.output_desc, + Indicator_desc = Output.indicator_desc, + }); + } + var tblOutputs = (Telerik.Reporting.Table)report2.Items["detailSection1"].Items["table1"]; + tblOutputs.DataSource = _OutputsList; + + var reportBook = new ReportBook(); + reportBook.Reports.Add(report); + reportBook.Reports.Add(report2); + reportBook.Reports.Add(report3); + + System.Collections.Hashtable deviceInfo = new System.Collections.Hashtable(); + InstanceReportSource instanceReportSource = new InstanceReportSource() + { + ReportDocument = reportBook, + }; + + ReportProcessor reportProcessor = new ReportProcessor(_configuration); + RenderingResult result = reportProcessor.RenderReport($"{exportType}", instanceReportSource, deviceInfo); + var content = result.DocumentBytes; + return File(content, mimeType, $"แบบมอบหมายงาน ฯ.{exportType.Trim().ToLower()}"); + } + else + { + return NotFound(); + } } else { @@ -81,30 +229,6 @@ namespace BMA.EHR.Report.Service.Controllers { throw; } - }*/ - public IActionResult GetProbation13ConvertReportAsync(Guid id, string exportType = "pdf") - { - try - { - - var mimeType = ""; - switch (exportType.Trim().ToLower()) - { - case "pdf": mimeType = "application/pdf"; break; - case "docx": mimeType = "application/vnd.openxmlformats-officedocument.wordprocessingml.document"; break; - case "xlsx": mimeType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"; break; - } - - var rptFile = System.IO.Path.Combine(_hostingEnvironment.ContentRootPath, "Reports", $"13-แบบมอบหมายงานการทดลองปฏิบัติหน้าที่ราชการ.trdp"); - var contentData = _reportGenerator.GenerateReport(rptFile, exportType); - - return File(contentData, mimeType, $"probation.{exportType.Trim().ToLower()}"); - - } - catch - { - throw; - } } #endregion @@ -119,24 +243,151 @@ namespace BMA.EHR.Report.Service.Controllers /// ไม่ได้ Login เข้าระบบ /// เมื่อเกิดข้อผิดพลาดในการทำงาน [HttpGet("14/{exportType}/{id}")] - public IActionResult GetProbation14ConvertReportAsync(Guid id, string exportType = "pdf") + public async Task> GetProbation14ConvertReportAsync(Guid id, string exportType = "pdf") { try { + string authorizationHeader = Request.Headers["Authorization"]; + string token = string.Empty; - var mimeType = ""; - switch (exportType.Trim().ToLower()) + if (!string.IsNullOrEmpty(authorizationHeader) && authorizationHeader.StartsWith("Bearer ")) { - case "pdf": mimeType = "application/pdf"; break; - case "docx": mimeType = "application/vnd.openxmlformats-officedocument.wordprocessingml.document"; break; - case "xlsx": mimeType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"; break; + token = authorizationHeader.Substring("Bearer ".Length).Trim(); + var evaluateRecord = await _repository.GetEvaluateRecordAsync(id, token); + + if (evaluateRecord != null) + { + var mimeType = ""; + switch (exportType.Trim().ToLower()) + { + case "pdf": mimeType = "application/pdf"; break; + case "docx": mimeType = "application/vnd.openxmlformats-officedocument.wordprocessingml.document"; break; + case "xlsx": mimeType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"; break; + } + + var rptFile = System.IO.Path.Combine(_hostingEnvironment.ContentRootPath, "Reports", $"14-แบบบันทึกผลการทดลองปฏิบัติหน้าที่ราชการ สำหรับผู้ดูแล-1.trdp"); + //var rptFile2 = System.IO.Path.Combine(_hostingEnvironment.ContentRootPath, "Reports", $"14-แบบบันทึกผลการทดลองปฏิบัติหน้าที่ราชการ สำหรับผู้ดูแล-2.trdp"); + var rptFile3 = System.IO.Path.Combine(_hostingEnvironment.ContentRootPath, "Reports", $"14-แบบบันทึกผลการทดลองปฏิบัติหน้าที่ราชการ สำหรับผู้ดูแล-3.trdp"); + + ReportPackager reportPacker = new ReportPackager(); + Telerik.Reporting.Report? report = null; + //Telerik.Reporting.Report? report2 = null; + Telerik.Reporting.Report? report3 = null; + + using (var sourceStream = System.IO.File.OpenRead(rptFile)) + //using (var sourceStream2 = System.IO.File.OpenRead(rptFile2)) + using (var sourceStream3 = System.IO.File.OpenRead(rptFile3)) + { + report = (Telerik.Reporting.Report)reportPacker.UnpackageDocument(sourceStream); + //report2 = (Telerik.Reporting.Report)reportPacker.UnpackageDocument(sourceStream2); + report3 = (Telerik.Reporting.Report)reportPacker.UnpackageDocument(sourceStream3); + } + + report.ReportParameters["Name"].Value = evaluateRecord.GetType().GetProperty("Name").GetValue(evaluateRecord); + report.ReportParameters["Position"].Value = evaluateRecord.GetType().GetProperty("Position").GetValue(evaluateRecord); + report.ReportParameters["ExperimenteeName"].Value = evaluateRecord.GetType().GetProperty("ExperimenteeName").GetValue(evaluateRecord); + report.ReportParameters["ExperimenteePosition"].Value = evaluateRecord.GetType().GetProperty("ExperimenteePosition").GetValue(evaluateRecord); + report.ReportParameters["Department"].Value = evaluateRecord.GetType().GetProperty("Department").GetValue(evaluateRecord); + report.ReportParameters["OrganizationOrganization"].Value = evaluateRecord.GetType().GetProperty("OrganizationOrganization").GetValue(evaluateRecord); + report.ReportParameters["Oc"].Value = evaluateRecord.GetType().GetProperty("Oc").GetValue(evaluateRecord); + report.ReportParameters["DateStart"].Value = evaluateRecord.GetType().GetProperty("DateStart").GetValue(evaluateRecord); + report.ReportParameters["DateFinish"].Value = evaluateRecord.GetType().GetProperty("DateFinish").GetValue(evaluateRecord); + report.ReportParameters["AchievementStrengthDesc1"].Value = evaluateRecord.GetType().GetProperty("AchievementStrengthDesc1").GetValue(evaluateRecord); + report.ReportParameters["AchievementStrengthDesc2"].Value = evaluateRecord.GetType().GetProperty("AchievementStrengthDesc2").GetValue(evaluateRecord); + report.ReportParameters["AchievementStrengthDesc3"].Value = evaluateRecord.GetType().GetProperty("AchievementStrengthDesc3").GetValue(evaluateRecord); + report.ReportParameters["AchievementImproveDesc1"].Value = evaluateRecord.GetType().GetProperty("AchievementImproveDesc1").GetValue(evaluateRecord); + report.ReportParameters["AchievementImproveDesc2"].Value = evaluateRecord.GetType().GetProperty("AchievementImproveDesc2").GetValue(evaluateRecord); + report.ReportParameters["AchievementImproveDesc3"].Value = evaluateRecord.GetType().GetProperty("AchievementImproveDesc3").GetValue(evaluateRecord); + report3.ReportParameters["BehaviorStrengthDesc1"].Value = evaluateRecord.GetType().GetProperty("BehaviorStrengthDesc1").GetValue(evaluateRecord); + report3.ReportParameters["BehaviorStrengthDesc2"].Value = evaluateRecord.GetType().GetProperty("BehaviorStrengthDesc2").GetValue(evaluateRecord); + report3.ReportParameters["BehaviorStrengthDesc3"].Value = evaluateRecord.GetType().GetProperty("BehaviorStrengthDesc3").GetValue(evaluateRecord); + report3.ReportParameters["BehaviorImproveDesc1"].Value = evaluateRecord.GetType().GetProperty("BehaviorImproveDesc1").GetValue(evaluateRecord); + report3.ReportParameters["BehaviorImproveDesc2"].Value = evaluateRecord.GetType().GetProperty("BehaviorImproveDesc2").GetValue(evaluateRecord); + report3.ReportParameters["BehaviorImproveDesc3"].Value = evaluateRecord.GetType().GetProperty("BehaviorImproveDesc3").GetValue(evaluateRecord); + report3.ReportParameters["Name"].Value = evaluateRecord.GetType().GetProperty("Name").GetValue(evaluateRecord); + report3.ReportParameters["Position"].Value = evaluateRecord.GetType().GetProperty("Position").GetValue(evaluateRecord); + report3.ReportParameters["MentorDate"].Value = evaluateRecord.GetType().GetProperty("MentorDate").GetValue(evaluateRecord); + + var _evaluateslist = new List(); + dynamic evaluates = evaluateRecord.GetType().GetProperty("Evaluates").GetValue(evaluateRecord); + foreach (var evaluate in evaluates) + { + string Evaluate_expect_desc = string.Empty; + string Evaluate_output_desc = string.Empty; + int Evaluate_expect_level = 0; + int Evaluate_output_level = 0; + string Check_expect1 = string.Empty; + string Check_expect2 = string.Empty; + string Check_expect3 = string.Empty; + string Check_expect4 = string.Empty; + string Check_expect5 = string.Empty; + string Check_output1 = string.Empty; + string Check_output2 = string.Empty; + string Check_output3 = string.Empty; + string Check_output4 = string.Empty; + string Check_output5 = string.Empty; + var achievements = evaluate.achievements; + foreach (var achievement in achievements) + { + Evaluate_expect_desc = achievement.evaluate_expect_desc; + Evaluate_output_desc = achievement.evaluate_output_desc; + Evaluate_expect_level = achievement.evaluate_expect_level; + Evaluate_output_level = achievement.evaluate_output_level; + } + _evaluateslist.Add(new + { + No = evaluate.no, + Date_start = evaluate.date_start, + Date_finish = evaluate.date_finish, + Evaluate_expect_desc = $" - {Evaluate_expect_desc}", + Evaluate_output_desc = $" - {Evaluate_output_desc}", + Check_expect1 = Evaluate_expect_level == 1 ? "/" : string.Empty, + Check_expect2 = Evaluate_expect_level == 2 ? "/" : string.Empty, + Check_expect3 = Evaluate_expect_level == 3 ? "/" : string.Empty, + Check_expect4 = Evaluate_expect_level == 4 ? "/" : string.Empty, + Check_expect5 = Evaluate_expect_level == 5 ? "/" : string.Empty, + Check_output1 = Evaluate_output_level == 1 ? "/" : string.Empty, + Check_output2 = Evaluate_output_level == 2 ? "/" : string.Empty, + Check_output3 = Evaluate_output_level == 3 ? "/" : string.Empty, + Check_output4 = Evaluate_output_level == 4 ? "/" : string.Empty, + Check_output5 = Evaluate_output_level == 5 ? "/" : string.Empty, + ApplyLevel = evaluate.apply_level, + AchievementStrengthDesc = evaluate.achievement_strength_desc, + AchievementImproveDesc = evaluate.achievement_improve_desc, + + }); + } + var tblEvaluate_1 = (Telerik.Reporting.Table)report.Items["detailSection1"].Items["table2"]; + tblEvaluate_1.DataSource = _evaluateslist; + + var tblEvaluate_2 = (Telerik.Reporting.Table)report.Items["detailSection1"].Items["table1"]; + tblEvaluate_2.DataSource = _evaluateslist; + + var reportBook = new ReportBook(); + reportBook.Reports.Add(report); + //reportBook.Reports.Add(report2); + reportBook.Reports.Add(report3); + + System.Collections.Hashtable deviceInfo = new System.Collections.Hashtable(); + InstanceReportSource instanceReportSource = new InstanceReportSource() + { + ReportDocument = reportBook, + }; + + ReportProcessor reportProcessor = new ReportProcessor(_configuration); + RenderingResult result = reportProcessor.RenderReport($"{exportType}", instanceReportSource, deviceInfo); + var content = result.DocumentBytes; + return File(content, mimeType, $"แบบบันทึกผล(สำหรับผู้ดูแล).{exportType.Trim().ToLower()}"); + } + else + { + return NotFound(); + } + } + else + { + return Unauthorized(); } - - var rptFile = System.IO.Path.Combine(_hostingEnvironment.ContentRootPath, "Reports", $"14-แบบบันทึกผลการทดลองปฏิบัติหน้าที่ราชการ สำหรับผู้ดูแล-1.trdp"); - var contentData = _reportGenerator.GenerateReport(rptFile, exportType); - - return File(contentData, mimeType, $"probation.{exportType.Trim().ToLower()}"); - } catch { @@ -156,24 +407,147 @@ namespace BMA.EHR.Report.Service.Controllers /// ไม่ได้ Login เข้าระบบ /// เมื่อเกิดข้อผิดพลาดในการทำงาน [HttpGet("15/{exportType}/{id}")] - public IActionResult GetProbation15ConvertReportAsync(Guid id, string exportType = "pdf") + public async Task> GetProbation15ConvertReportAsync(Guid id, string exportType = "pdf") { try { + string authorizationHeader = Request.Headers["Authorization"]; + string token = string.Empty; - var mimeType = ""; - switch (exportType.Trim().ToLower()) + if (!string.IsNullOrEmpty(authorizationHeader) && authorizationHeader.StartsWith("Bearer ")) { - case "pdf": mimeType = "application/pdf"; break; - case "docx": mimeType = "application/vnd.openxmlformats-officedocument.wordprocessingml.document"; break; - case "xlsx": mimeType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"; break; + token = authorizationHeader.Substring("Bearer ".Length).Trim(); + var evaluateRecord = await _repository.GetEvaluateRecordAsync(id, token); + + if (evaluateRecord != null) + { + var mimeType = ""; + switch (exportType.Trim().ToLower()) + { + case "pdf": mimeType = "application/pdf"; break; + case "docx": mimeType = "application/vnd.openxmlformats-officedocument.wordprocessingml.document"; break; + case "xlsx": mimeType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"; break; + } + + var rptFile = System.IO.Path.Combine(_hostingEnvironment.ContentRootPath, "Reports", $"15-แบบบันทึกผลการทดลองปฏิบัติหน้าที่ราชการ สำหรับผู้บังคับบัญชา-1.trdp"); + var rptFile2 = System.IO.Path.Combine(_hostingEnvironment.ContentRootPath, "Reports", $"15-แบบบันทึกผลการทดลองปฏิบัติหน้าที่ราชการ สำหรับผู้บังคับบัญชา-2.trdp"); + + ReportPackager reportPacker = new ReportPackager(); + Telerik.Reporting.Report? report = null; + Telerik.Reporting.Report? report2 = null; + + using (var sourceStream = System.IO.File.OpenRead(rptFile)) + using (var sourceStream2 = System.IO.File.OpenRead(rptFile2)) + { + report = (Telerik.Reporting.Report)reportPacker.UnpackageDocument(sourceStream); + report2 = (Telerik.Reporting.Report)reportPacker.UnpackageDocument(sourceStream2); + } + + report.ReportParameters["Name"].Value = evaluateRecord.GetType().GetProperty("Name").GetValue(evaluateRecord); + report.ReportParameters["Position"].Value = evaluateRecord.GetType().GetProperty("Position").GetValue(evaluateRecord); + report.ReportParameters["ExperimenteeName"].Value = evaluateRecord.GetType().GetProperty("ExperimenteeName").GetValue(evaluateRecord); + report.ReportParameters["ExperimenteePosition"].Value = evaluateRecord.GetType().GetProperty("ExperimenteePosition").GetValue(evaluateRecord); + report.ReportParameters["Department"].Value = evaluateRecord.GetType().GetProperty("Department").GetValue(evaluateRecord); + report.ReportParameters["OrganizationOrganization"].Value = evaluateRecord.GetType().GetProperty("OrganizationOrganization").GetValue(evaluateRecord); + report.ReportParameters["Oc"].Value = evaluateRecord.GetType().GetProperty("Oc").GetValue(evaluateRecord); + report.ReportParameters["DateStart"].Value = evaluateRecord.GetType().GetProperty("DateStart").GetValue(evaluateRecord); + report.ReportParameters["DateFinish"].Value = evaluateRecord.GetType().GetProperty("DateFinish").GetValue(evaluateRecord); + report.ReportParameters["AchievementStrengthDesc1"].Value = evaluateRecord.GetType().GetProperty("AchievementStrengthDesc1").GetValue(evaluateRecord); + report.ReportParameters["AchievementStrengthDesc2"].Value = evaluateRecord.GetType().GetProperty("AchievementStrengthDesc2").GetValue(evaluateRecord); + report.ReportParameters["AchievementStrengthDesc3"].Value = evaluateRecord.GetType().GetProperty("AchievementStrengthDesc3").GetValue(evaluateRecord); + report.ReportParameters["AchievementImproveDesc1"].Value = evaluateRecord.GetType().GetProperty("AchievementImproveDesc1").GetValue(evaluateRecord); + report.ReportParameters["AchievementImproveDesc2"].Value = evaluateRecord.GetType().GetProperty("AchievementImproveDesc2").GetValue(evaluateRecord); + report.ReportParameters["AchievementImproveDesc3"].Value = evaluateRecord.GetType().GetProperty("AchievementImproveDesc3").GetValue(evaluateRecord); + report2.ReportParameters["BehaviorStrengthDesc1"].Value = evaluateRecord.GetType().GetProperty("BehaviorStrengthDesc1").GetValue(evaluateRecord); + report2.ReportParameters["BehaviorStrengthDesc2"].Value = evaluateRecord.GetType().GetProperty("BehaviorStrengthDesc2").GetValue(evaluateRecord); + report2.ReportParameters["BehaviorStrengthDesc3"].Value = evaluateRecord.GetType().GetProperty("BehaviorStrengthDesc3").GetValue(evaluateRecord); + report2.ReportParameters["BehaviorImproveDesc1"].Value = evaluateRecord.GetType().GetProperty("BehaviorImproveDesc1").GetValue(evaluateRecord); + report2.ReportParameters["BehaviorImproveDesc2"].Value = evaluateRecord.GetType().GetProperty("BehaviorImproveDesc2").GetValue(evaluateRecord); + report2.ReportParameters["BehaviorImproveDesc3"].Value = evaluateRecord.GetType().GetProperty("BehaviorImproveDesc3").GetValue(evaluateRecord); + report2.ReportParameters["Name"].Value = evaluateRecord.GetType().GetProperty("Name").GetValue(evaluateRecord); + report2.ReportParameters["Position"].Value = evaluateRecord.GetType().GetProperty("Position").GetValue(evaluateRecord); + report2.ReportParameters["MentorDate"].Value = evaluateRecord.GetType().GetProperty("MentorDate").GetValue(evaluateRecord); + + var _evaluateslist = new List(); + dynamic evaluates = evaluateRecord.GetType().GetProperty("Evaluates").GetValue(evaluateRecord); + foreach (var evaluate in evaluates) + { + string Evaluate_expect_desc = string.Empty; + string Evaluate_output_desc = string.Empty; + int Evaluate_expect_level = 0; + int Evaluate_output_level = 0; + string Check_expect1 = string.Empty; + string Check_expect2 = string.Empty; + string Check_expect3 = string.Empty; + string Check_expect4 = string.Empty; + string Check_expect5 = string.Empty; + string Check_output1 = string.Empty; + string Check_output2 = string.Empty; + string Check_output3 = string.Empty; + string Check_output4 = string.Empty; + string Check_output5 = string.Empty; + var achievements = evaluate.achievements; + foreach (var achievement in achievements) + { + Evaluate_expect_desc = achievement.evaluate_expect_desc; + Evaluate_output_desc = achievement.evaluate_output_desc; + Evaluate_expect_level = achievement.evaluate_expect_level; + Evaluate_output_level = achievement.evaluate_output_level; + } + _evaluateslist.Add(new + { + No = evaluate.no, + Date_start = evaluate.date_start, + Date_finish = evaluate.date_finish, + Evaluate_expect_desc = $" - {Evaluate_expect_desc}", + Evaluate_output_desc = $" - {Evaluate_output_desc}", + Check_expect1 = Evaluate_expect_level == 1 ? "/" : string.Empty, + Check_expect2 = Evaluate_expect_level == 2 ? "/" : string.Empty, + Check_expect3 = Evaluate_expect_level == 3 ? "/" : string.Empty, + Check_expect4 = Evaluate_expect_level == 4 ? "/" : string.Empty, + Check_expect5 = Evaluate_expect_level == 5 ? "/" : string.Empty, + Check_output1 = Evaluate_output_level == 1 ? "/" : string.Empty, + Check_output2 = Evaluate_output_level == 2 ? "/" : string.Empty, + Check_output3 = Evaluate_output_level == 3 ? "/" : string.Empty, + Check_output4 = Evaluate_output_level == 4 ? "/" : string.Empty, + Check_output5 = Evaluate_output_level == 5 ? "/" : string.Empty, + ApplyLevel = evaluate.apply_level, + AchievementStrengthDesc = evaluate.achievement_strength_desc, + AchievementImproveDesc = evaluate.achievement_improve_desc, + + }); + } + + var tblEvaluate_1 = (Telerik.Reporting.Table)report.Items["detailSection1"].Items["table2"]; + tblEvaluate_1.DataSource = _evaluateslist; + + var tblEvaluate_2 = (Telerik.Reporting.Table)report.Items["detailSection1"].Items["table1"]; + tblEvaluate_2.DataSource = _evaluateslist; + + var reportBook = new ReportBook(); + reportBook.Reports.Add(report); + reportBook.Reports.Add(report2); + + System.Collections.Hashtable deviceInfo = new System.Collections.Hashtable(); + InstanceReportSource instanceReportSource = new InstanceReportSource() + { + ReportDocument = reportBook, + }; + + ReportProcessor reportProcessor = new ReportProcessor(_configuration); + RenderingResult result = reportProcessor.RenderReport($"{exportType}", instanceReportSource, deviceInfo); + var content = result.DocumentBytes; + return File(content, mimeType, $"แบบบันทึกผล(สำหรับผู้บังคับบัญชา).{exportType.Trim().ToLower()}"); + } + else + { + return NotFound(); + } + } + else + { + return Unauthorized(); } - - var rptFile = System.IO.Path.Combine(_hostingEnvironment.ContentRootPath, "Reports", $"15-แบบบันทึกผลการทดลองปฏิบัติหน้าที่ราชการ สำหรับผู้บังคับบัญชา-1.trdp"); - var contentData = _reportGenerator.GenerateReport(rptFile, exportType); - - return File(contentData, mimeType, $"probation.{exportType.Trim().ToLower()}"); - } catch { @@ -186,31 +560,209 @@ namespace BMA.EHR.Report.Service.Controllers /// /// 16-แบบประเมินผลการทดลองปฏิบัติหน้าที่ราชการ สำหรับผู้บังคับบัญชา /// - /// id + /// assign_id แบบมอบหมายทดลองงาน + /// evaluate_no ครั้งที่ประเมินผล /// pdf, docx หรือ xlsx /// /// เมื่อทำการอ่านข้อมูลจาก Relational Database สำเร็จ /// ไม่ได้ Login เข้าระบบ /// เมื่อเกิดข้อผิดพลาดในการทำงาน - [HttpGet("16/{exportType}/{id}")] - public IActionResult GetProbation16ConvertReportAsync(Guid id, string exportType = "pdf") + [HttpGet("16/{exportType}/{id}/{no}")] + public async Task> GetProbation16ConvertReportAsync(Guid id, string no, string exportType = "pdf") { try { + string authorizationHeader = Request.Headers["Authorization"]; + string token = string.Empty; - var mimeType = ""; - switch (exportType.Trim().ToLower()) + if (!string.IsNullOrEmpty(authorizationHeader) && authorizationHeader.StartsWith("Bearer ")) { - case "pdf": mimeType = "application/pdf"; break; - case "docx": mimeType = "application/vnd.openxmlformats-officedocument.wordprocessingml.document"; break; - case "xlsx": mimeType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"; break; + token = authorizationHeader.Substring("Bearer ".Length).Trim(); + var evaluateAssign = await _repository.GetEvaluateAssignAsync(id, no, token); + + if (evaluateAssign != null) + { + var mimeType = ""; + switch (exportType.Trim().ToLower()) + { + case "pdf": mimeType = "application/pdf"; break; + case "docx": mimeType = "application/vnd.openxmlformats-officedocument.wordprocessingml.document"; break; + case "xlsx": mimeType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"; break; + } + + var rptFile = System.IO.Path.Combine(_hostingEnvironment.ContentRootPath, "Reports", $"16-แบบประเมินผลการทดลองปฏิบัติหน้าที่ราชการ สำหรับผู้บังคับบัญชา-1.trdp"); + + ReportPackager reportPacker = new ReportPackager(); + Telerik.Reporting.Report? report = null; + + using (var sourceStream = System.IO.File.OpenRead(rptFile)) + { + report = (Telerik.Reporting.Report)reportPacker.UnpackageDocument(sourceStream); + } + + report.ReportParameters["EvaluateDateStart"].Value = evaluateAssign.GetType().GetProperty("EvaluateDateStart").GetValue(evaluateAssign); + report.ReportParameters["EvaluateDateFinish"].Value = evaluateAssign.GetType().GetProperty("EvaluateDateFinish").GetValue(evaluateAssign); + report.ReportParameters["No"].Value = evaluateAssign.GetType().GetProperty("No").GetValue(evaluateAssign); + report.ReportParameters["Name"].Value = evaluateAssign.GetType().GetProperty("Name").GetValue(evaluateAssign); + report.ReportParameters["Position"].Value = evaluateAssign.GetType().GetProperty("Position").GetValue(evaluateAssign); + report.ReportParameters["Department"].Value = evaluateAssign.GetType().GetProperty("Department").GetValue(evaluateAssign); + report.ReportParameters["OrganizationOrganization"].Value = evaluateAssign.GetType().GetProperty("OrganizationOrganization").GetValue(evaluateAssign); + report.ReportParameters["Oc"].Value = evaluateAssign.GetType().GetProperty("Oc").GetValue(evaluateAssign); + report.ReportParameters["DateStart"].Value = evaluateAssign.GetType().GetProperty("DateStart").GetValue(evaluateAssign); + report.ReportParameters["DateFinish"].Value = evaluateAssign.GetType().GetProperty("DateFinish").GetValue(evaluateAssign); + report.ReportParameters["BehaviorStrengthDesc"].Value = evaluateAssign.GetType().GetProperty("BehaviorStrengthDesc").GetValue(evaluateAssign); + report.ReportParameters["BehaviorImproveDesc"].Value = evaluateAssign.GetType().GetProperty("BehaviorImproveDesc").GetValue(evaluateAssign); + report.ReportParameters["CommanderName"].Value = evaluateAssign.GetType().GetProperty("CommanderName").GetValue(evaluateAssign); + report.ReportParameters["CommanderPosition"].Value = evaluateAssign.GetType().GetProperty("CommanderPosition").GetValue(evaluateAssign); + report.ReportParameters["AssessorDated"].Value = evaluateAssign.GetType().GetProperty("AssessorDated").GetValue(evaluateAssign); + + var _table1 = new List(); + _table1.Add(new + { + Check_Knowledge1 = evaluateAssign.GetType().GetProperty("KnowledgeLevel1").GetValue(evaluateAssign), + Check_Knowledge2 = evaluateAssign.GetType().GetProperty("KnowledgeLevel2").GetValue(evaluateAssign), + Check_Knowledge3 = evaluateAssign.GetType().GetProperty("KnowledgeLevel3").GetValue(evaluateAssign), + Check_Knowledge4 = evaluateAssign.GetType().GetProperty("KnowledgeLevel4").GetValue(evaluateAssign), + Check_Knowledge5 = evaluateAssign.GetType().GetProperty("KnowledgeLevel5").GetValue(evaluateAssign), + Check_SkillLevel1 = evaluateAssign.GetType().GetProperty("SkillLevel1").GetValue(evaluateAssign), + Check_SkillLevel2 = evaluateAssign.GetType().GetProperty("SkillLevel2").GetValue(evaluateAssign), + Check_SkillLevel3 = evaluateAssign.GetType().GetProperty("SkillLevel3").GetValue(evaluateAssign), + Check_SkillLevel4 = evaluateAssign.GetType().GetProperty("SkillLevel4").GetValue(evaluateAssign), + Check_SkillLevel5 = evaluateAssign.GetType().GetProperty("SkillLevel5").GetValue(evaluateAssign), + Check_CompetencyLevel1 = evaluateAssign.GetType().GetProperty("CompetencyLevel1").GetValue(evaluateAssign), + Check_CompetencyLevel2 = evaluateAssign.GetType().GetProperty("CompetencyLevel2").GetValue(evaluateAssign), + Check_CompetencyLevel3 = evaluateAssign.GetType().GetProperty("CompetencyLevel3").GetValue(evaluateAssign), + Check_CompetencyLevel4 = evaluateAssign.GetType().GetProperty("CompetencyLevel4").GetValue(evaluateAssign), + Check_CompetencyLevel5 = evaluateAssign.GetType().GetProperty("CompetencyLevel5").GetValue(evaluateAssign), + Check_LearnLevel1 = evaluateAssign.GetType().GetProperty("LearnLevel1").GetValue(evaluateAssign), + Check_LearnLevel2 = evaluateAssign.GetType().GetProperty("LearnLevel2").GetValue(evaluateAssign), + Check_LearnLevel3 = evaluateAssign.GetType().GetProperty("LearnLevel3").GetValue(evaluateAssign), + Check_LearnLevel4 = evaluateAssign.GetType().GetProperty("LearnLevel4").GetValue(evaluateAssign), + Check_LearnLevel5 = evaluateAssign.GetType().GetProperty("LearnLevel5").GetValue(evaluateAssign), + Check_ApplyLevel1 = evaluateAssign.GetType().GetProperty("ApplyLevel1").GetValue(evaluateAssign), + Check_ApplyLevel2 = evaluateAssign.GetType().GetProperty("ApplyLevel2").GetValue(evaluateAssign), + Check_ApplyLevel3 = evaluateAssign.GetType().GetProperty("ApplyLevel3").GetValue(evaluateAssign), + Check_ApplyLevel4 = evaluateAssign.GetType().GetProperty("ApplyLevel4").GetValue(evaluateAssign), + Check_ApplyLevel5 = evaluateAssign.GetType().GetProperty("ApplyLevel5").GetValue(evaluateAssign), + Check_Success_level1 = evaluateAssign.GetType().GetProperty("SuccessLevel1").GetValue(evaluateAssign), + Check_Success_level2 = evaluateAssign.GetType().GetProperty("SuccessLevel2").GetValue(evaluateAssign), + Check_Success_level3 = evaluateAssign.GetType().GetProperty("SuccessLevel3").GetValue(evaluateAssign), + Check_Success_level4 = evaluateAssign.GetType().GetProperty("SuccessLevel4").GetValue(evaluateAssign), + Check_Success_level5 = evaluateAssign.GetType().GetProperty("SuccessLevel5").GetValue(evaluateAssign), AchievementOtherDesc = evaluateAssign.GetType().GetProperty("AchievementOtherDesc").GetValue(evaluateAssign), + Check_AchievementOtherLevel1 = evaluateAssign.GetType().GetProperty("AchievementOtherLevel1").GetValue(evaluateAssign), + Check_AchievementOtherLevel2 = evaluateAssign.GetType().GetProperty("AchievementOtherLevel2").GetValue(evaluateAssign), + Check_AchievementOtherLevel3 = evaluateAssign.GetType().GetProperty("AchievementOtherLevel3").GetValue(evaluateAssign), + Check_AchievementOtherLevel4 = evaluateAssign.GetType().GetProperty("AchievementOtherLevel4").GetValue(evaluateAssign), + Check_AchievementOtherLevel5 = evaluateAssign.GetType().GetProperty("AchievementOtherLevel5").GetValue(evaluateAssign), + }); + var tblEvaluateAssign1 = (Telerik.Reporting.Table)report.Items["detailSection1"].Items["table1"]; + tblEvaluateAssign1.DataSource = _table1; + + var _table2 = new List(); + _table2.Add(new + { + Check_Conduct1Level1 = evaluateAssign.GetType().GetProperty("Conduct1Level1").GetValue(evaluateAssign), + Check_Conduct1Level2 = evaluateAssign.GetType().GetProperty("Conduct1Level2").GetValue(evaluateAssign), + Check_Conduct1Level3 = evaluateAssign.GetType().GetProperty("Conduct1Level3").GetValue(evaluateAssign), + Check_Conduct1Level4 = evaluateAssign.GetType().GetProperty("Conduct1Level4").GetValue(evaluateAssign), + Check_Conduct1Level5 = evaluateAssign.GetType().GetProperty("Conduct1Level5").GetValue(evaluateAssign), + Check_Conduct2Level1 = evaluateAssign.GetType().GetProperty("Conduct2Level1").GetValue(evaluateAssign), + Check_Conduct2Level2 = evaluateAssign.GetType().GetProperty("Conduct2Level2").GetValue(evaluateAssign), + Check_Conduct2Level3 = evaluateAssign.GetType().GetProperty("Conduct2Level3").GetValue(evaluateAssign), + Check_Conduct2Level4 = evaluateAssign.GetType().GetProperty("Conduct2Level4").GetValue(evaluateAssign), + Check_Conduct2Level5 = evaluateAssign.GetType().GetProperty("Conduct2Level5").GetValue(evaluateAssign), + Check_Conduct3Level1 = evaluateAssign.GetType().GetProperty("Conduct3Level1").GetValue(evaluateAssign), + Check_Conduct3Level2 = evaluateAssign.GetType().GetProperty("Conduct3Level2").GetValue(evaluateAssign), + Check_Conduct3Level3 = evaluateAssign.GetType().GetProperty("Conduct3Level3").GetValue(evaluateAssign), + Check_Conduct3Level4 = evaluateAssign.GetType().GetProperty("Conduct3Level4").GetValue(evaluateAssign), + Check_Conduct3Level5 = evaluateAssign.GetType().GetProperty("Conduct3Level5").GetValue(evaluateAssign), + Check_Conduct4Level1 = evaluateAssign.GetType().GetProperty("Conduct4Level1").GetValue(evaluateAssign), + Check_Conduct4Level2 = evaluateAssign.GetType().GetProperty("Conduct4Level2").GetValue(evaluateAssign), + Check_Conduct4Level3 = evaluateAssign.GetType().GetProperty("Conduct4Level3").GetValue(evaluateAssign), + Check_Conduct4Level4 = evaluateAssign.GetType().GetProperty("Conduct4Level4").GetValue(evaluateAssign), + Check_Conduct4Level5 = evaluateAssign.GetType().GetProperty("Conduct4Level5").GetValue(evaluateAssign), + Check_Moral1Level1 = evaluateAssign.GetType().GetProperty("Moral1Level1").GetValue(evaluateAssign), + Check_Moral1Level2 = evaluateAssign.GetType().GetProperty("Moral1Level2").GetValue(evaluateAssign), + Check_Moral1Level3 = evaluateAssign.GetType().GetProperty("Moral1Level3").GetValue(evaluateAssign), + Check_Moral1Level4 = evaluateAssign.GetType().GetProperty("Moral1Level4").GetValue(evaluateAssign), + Check_Moral1Level5 = evaluateAssign.GetType().GetProperty("Moral1Level5").GetValue(evaluateAssign), + Check_Moral2Level1 = evaluateAssign.GetType().GetProperty("Moral2Level1").GetValue(evaluateAssign), + Check_Moral2Level2 = evaluateAssign.GetType().GetProperty("Moral2Level2").GetValue(evaluateAssign), + Check_Moral2Level3 = evaluateAssign.GetType().GetProperty("Moral2Level3").GetValue(evaluateAssign), + Check_Moral2Level4 = evaluateAssign.GetType().GetProperty("Moral2Level4").GetValue(evaluateAssign), + Check_Moral2Level5 = evaluateAssign.GetType().GetProperty("Moral2Level5").GetValue(evaluateAssign), + Check_Moral3Level1 = evaluateAssign.GetType().GetProperty("Moral3Level1").GetValue(evaluateAssign), + Check_Moral3Level2 = evaluateAssign.GetType().GetProperty("Moral3Level2").GetValue(evaluateAssign), + Check_Moral3Level3 = evaluateAssign.GetType().GetProperty("Moral3Level3").GetValue(evaluateAssign), + Check_Moral3Level4 = evaluateAssign.GetType().GetProperty("Moral3Level4").GetValue(evaluateAssign), + Check_Moral3Level5 = evaluateAssign.GetType().GetProperty("Moral3Level5").GetValue(evaluateAssign), + Check_Discipline1Level1 = evaluateAssign.GetType().GetProperty("Discipline1Level1").GetValue(evaluateAssign), + Check_Discipline1Level2 = evaluateAssign.GetType().GetProperty("Discipline1Level2").GetValue(evaluateAssign), + Check_Discipline1Level3 = evaluateAssign.GetType().GetProperty("Discipline1Level3").GetValue(evaluateAssign), + Check_Discipline1Level4 = evaluateAssign.GetType().GetProperty("Discipline1Level4").GetValue(evaluateAssign), + Check_Discipline1Level5 = evaluateAssign.GetType().GetProperty("Discipline1Level5").GetValue(evaluateAssign), + Check_Discipline2Level1 = evaluateAssign.GetType().GetProperty("Discipline2Level1").GetValue(evaluateAssign), + Check_Discipline2Level2 = evaluateAssign.GetType().GetProperty("Discipline2Level2").GetValue(evaluateAssign), + Check_Discipline2Level3 = evaluateAssign.GetType().GetProperty("Discipline2Level3").GetValue(evaluateAssign), + Check_Discipline2Level4 = evaluateAssign.GetType().GetProperty("Discipline2Level4").GetValue(evaluateAssign), + Check_Discipline2Level5 = evaluateAssign.GetType().GetProperty("Discipline2Level5").GetValue(evaluateAssign), + Check_Discipline3Level1 = evaluateAssign.GetType().GetProperty("Discipline3Level1").GetValue(evaluateAssign), + Check_Discipline3Level2 = evaluateAssign.GetType().GetProperty("Discipline3Level2").GetValue(evaluateAssign), + Check_Discipline3Level3 = evaluateAssign.GetType().GetProperty("Discipline3Level3").GetValue(evaluateAssign), + Check_Discipline3Level4 = evaluateAssign.GetType().GetProperty("Discipline3Level4").GetValue(evaluateAssign), + Check_Discipline3Level5 = evaluateAssign.GetType().GetProperty("Discipline3Level5").GetValue(evaluateAssign), + Check_Discipline4Level1 = evaluateAssign.GetType().GetProperty("Discipline4Level1").GetValue(evaluateAssign), + Check_Discipline4Level2 = evaluateAssign.GetType().GetProperty("Discipline4Level2").GetValue(evaluateAssign), + Check_Discipline4Level3 = evaluateAssign.GetType().GetProperty("Discipline4Level3").GetValue(evaluateAssign), + Check_Discipline4Level4 = evaluateAssign.GetType().GetProperty("Discipline4Level4").GetValue(evaluateAssign), + Check_Discipline4Level5 = evaluateAssign.GetType().GetProperty("Discipline4Level5").GetValue(evaluateAssign), + Check_Discipline5Level1 = evaluateAssign.GetType().GetProperty("Discipline5Level1").GetValue(evaluateAssign), + Check_Discipline5Level2 = evaluateAssign.GetType().GetProperty("Discipline5Level2").GetValue(evaluateAssign), + Check_Discipline5Level3 = evaluateAssign.GetType().GetProperty("Discipline5Level3").GetValue(evaluateAssign), + Check_Discipline5Level4 = evaluateAssign.GetType().GetProperty("Discipline5Level4").GetValue(evaluateAssign), + Check_Discipline5Level5 = evaluateAssign.GetType().GetProperty("Discipline5Level5").GetValue(evaluateAssign), + BehaviorOtherDesc = evaluateAssign.GetType().GetProperty("BehaviorOtherDesc").GetValue(evaluateAssign), + Check_BehaviorOtherLevel1 = evaluateAssign.GetType().GetProperty("BehaviorOtherLevel1").GetValue(evaluateAssign), + Check_BehaviorOtherLevel2 = evaluateAssign.GetType().GetProperty("BehaviorOtherLevel2").GetValue(evaluateAssign), + Check_BehaviorOtherLevel3 = evaluateAssign.GetType().GetProperty("BehaviorOtherLevel3").GetValue(evaluateAssign), + Check_BehaviorOtherLevel4 = evaluateAssign.GetType().GetProperty("BehaviorOtherLevel4").GetValue(evaluateAssign), + Check_BehaviorOtherLevel5 = evaluateAssign.GetType().GetProperty("BehaviorOtherLevel5").GetValue(evaluateAssign), + }); + var tblEvaluateAssign2 = (Telerik.Reporting.Table)report.Items["detailSection1"].Items["table2"]; + tblEvaluateAssign2.DataSource = _table2; + + + var _table3 = new List(); + _table3.Add(new + { + Orientation = evaluateAssign.GetType().GetProperty("Orientation").GetValue(evaluateAssign), + SelfLearning = evaluateAssign.GetType().GetProperty("SelfLearning").GetValue(evaluateAssign), + TrainingSeminar = evaluateAssign.GetType().GetProperty("TrainingSeminar").GetValue(evaluateAssign), + OtherTraining = evaluateAssign.GetType().GetProperty("OtherTraining").GetValue(evaluateAssign), + }); + var tblEvaluateAssign3 = (Telerik.Reporting.Table)report.Items["detailSection1"].Items["table3"]; + tblEvaluateAssign3.DataSource = _table3; + + System.Collections.Hashtable deviceInfo = new System.Collections.Hashtable(); + InstanceReportSource instanceReportSource = new InstanceReportSource() + { + ReportDocument = report, + }; + + ReportProcessor reportProcessor = new ReportProcessor(_configuration); + RenderingResult result = reportProcessor.RenderReport($"{exportType}", instanceReportSource, deviceInfo); + var content = result.DocumentBytes; + return File(content, mimeType, $"แบบประเมินผล(สำหรับผู้บังคับบัญชา).{exportType.Trim().ToLower()}"); + } + else + { + return NotFound(); + } + } + else + { + return Unauthorized(); } - - var rptFile = System.IO.Path.Combine(_hostingEnvironment.ContentRootPath, "Reports", $"16-แบบประเมินผลการทดลองปฏิบัติหน้าที่ราชการ สำหรับผู้บังคับบัญชา-1.trdp"); - var contentData = _reportGenerator.GenerateReport(rptFile, exportType); - - return File(contentData, mimeType, $"probation.{exportType.Trim().ToLower()}"); - } catch { @@ -223,31 +775,159 @@ namespace BMA.EHR.Report.Service.Controllers /// /// 17-แบบประเมินผลการทดลองปฏิบัติหน้าที่ราชการ สำหรับคณะกรรมการ /// - /// id + /// assign_id แบบมอบหมายทดลองงาน + /// evaluate_no ครั้งที่ประเมินผล /// pdf, docx หรือ xlsx /// /// เมื่อทำการอ่านข้อมูลจาก Relational Database สำเร็จ /// ไม่ได้ Login เข้าระบบ /// เมื่อเกิดข้อผิดพลาดในการทำงาน - [HttpGet("17/{exportType}/{id}")] - public IActionResult GetProbation17ConvertReportAsync(Guid id, string exportType = "pdf") + [HttpGet("17/{exportType}/{id}/{no}")] + public async Task> GetProbation17ConvertReportAsync(Guid id, string no, string exportType = "pdf") { try { + string authorizationHeader = Request.Headers["Authorization"]; + string token = string.Empty; - var mimeType = ""; - switch (exportType.Trim().ToLower()) + if (!string.IsNullOrEmpty(authorizationHeader) && authorizationHeader.StartsWith("Bearer ")) { - case "pdf": mimeType = "application/pdf"; break; - case "docx": mimeType = "application/vnd.openxmlformats-officedocument.wordprocessingml.document"; break; - case "xlsx": mimeType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"; break; + token = authorizationHeader.Substring("Bearer ".Length).Trim(); + var evaluateAssign = await _repository.GetEvaluateChairmanAssignAsync(id, no, token); + + if (evaluateAssign != null) + { + var mimeType = ""; + switch (exportType.Trim().ToLower()) + { + case "pdf": mimeType = "application/pdf"; break; + case "docx": mimeType = "application/vnd.openxmlformats-officedocument.wordprocessingml.document"; break; + case "xlsx": mimeType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"; break; + } + + var rptFile = System.IO.Path.Combine(_hostingEnvironment.ContentRootPath, "Reports", $"17-แบบประเมินผลการทดลองปฏิบัติหน้าที่ราชการ สำหรับคณะกรรมการ-1.trdp"); + var rptFile2 = System.IO.Path.Combine(_hostingEnvironment.ContentRootPath, "Reports", $"17-แบบประเมินผลการทดลองปฏิบัติหน้าที่ราชการ สำหรับคณะกรรมการ-2.trdp"); + + ReportPackager reportPacker = new ReportPackager(); + Telerik.Reporting.Report? report = null; + Telerik.Reporting.Report? report2 = null; + + + using (var sourceStream = System.IO.File.OpenRead(rptFile)) + using (var sourceStream2 = System.IO.File.OpenRead(rptFile2)) + { + report = (Telerik.Reporting.Report)reportPacker.UnpackageDocument(sourceStream); + report2 = (Telerik.Reporting.Report)reportPacker.UnpackageDocument(sourceStream2); + } + + report.ReportParameters["EvaluateDateStart"].Value = evaluateAssign.GetType().GetProperty("EvaluateDateStart").GetValue(evaluateAssign); + report.ReportParameters["EvaluateDateFinish"].Value = evaluateAssign.GetType().GetProperty("EvaluateDateFinish").GetValue(evaluateAssign); + report.ReportParameters["No"].Value = evaluateAssign.GetType().GetProperty("No").GetValue(evaluateAssign); + report.ReportParameters["Name"].Value = evaluateAssign.GetType().GetProperty("Name").GetValue(evaluateAssign); + report.ReportParameters["Position"].Value = evaluateAssign.GetType().GetProperty("Position").GetValue(evaluateAssign); + report.ReportParameters["Department"].Value = evaluateAssign.GetType().GetProperty("Department").GetValue(evaluateAssign); + report.ReportParameters["OrganizationOrganization"].Value = evaluateAssign.GetType().GetProperty("OrganizationOrganization").GetValue(evaluateAssign); + report.ReportParameters["Oc"].Value = evaluateAssign.GetType().GetProperty("Oc").GetValue(evaluateAssign); + report.ReportParameters["DateStart"].Value = evaluateAssign.GetType().GetProperty("DateStart").GetValue(evaluateAssign); + report.ReportParameters["DateFinish"].Value = evaluateAssign.GetType().GetProperty("DateFinish").GetValue(evaluateAssign); + report2.ReportParameters["ChairmanName"].Value = evaluateAssign.GetType().GetProperty("ChairmanName").GetValue(evaluateAssign); + report2.ReportParameters["ChairmanPosition"].Value = evaluateAssign.GetType().GetProperty("ChairmanPosition").GetValue(evaluateAssign); + report2.ReportParameters["ChairmanDate"].Value = evaluateAssign.GetType().GetProperty("ChairmanDate").GetValue(evaluateAssign); + report2.ReportParameters["MentorName1"].Value = evaluateAssign.GetType().GetProperty("MentorName1").GetValue(evaluateAssign); + report2.ReportParameters["MentorPosition1"].Value = evaluateAssign.GetType().GetProperty("MentorPosition1").GetValue(evaluateAssign); + report2.ReportParameters["MentorDate1"].Value = evaluateAssign.GetType().GetProperty("MentorDate1").GetValue(evaluateAssign); + report2.ReportParameters["MentorName2"].Value = evaluateAssign.GetType().GetProperty("MentorName2").GetValue(evaluateAssign); + report2.ReportParameters["MentorPosition2"].Value = evaluateAssign.GetType().GetProperty("MentorPosition2").GetValue(evaluateAssign); + report2.ReportParameters["MentorDate2"].Value = evaluateAssign.GetType().GetProperty("MentorDate2").GetValue(evaluateAssign); + + var _page1table1 = new List(); + _page1table1.Add(new + { + KnowledgeLevel = evaluateAssign.GetType().GetProperty("KnowledgeLevel").GetValue(evaluateAssign), + ApplyLevel = evaluateAssign.GetType().GetProperty("ApplyLevel").GetValue(evaluateAssign), + SuccessLevel = evaluateAssign.GetType().GetProperty("SuccessLevel").GetValue(evaluateAssign), + AchievementOtherDesc = evaluateAssign.GetType().GetProperty("AchievementOtherDesc").GetValue(evaluateAssign), + AchievementOtherLevel = evaluateAssign.GetType().GetProperty("AchievementOtherLevel").GetValue(evaluateAssign), + }); + var tblEvaluatChaireAssign1 = (Telerik.Reporting.Table)report.Items["detailSection1"].Items["table2"]; //Design is table2 + tblEvaluatChaireAssign1.DataSource = _page1table1; + + var _page1table2 = new List(); + _page1table2.Add(new + { + Conduct1Level = evaluateAssign.GetType().GetProperty("Conduct1Level").GetValue(evaluateAssign), + Conduct2Level = evaluateAssign.GetType().GetProperty("Conduct2Level").GetValue(evaluateAssign), + Conduct3Level = evaluateAssign.GetType().GetProperty("Conduct3Level").GetValue(evaluateAssign), + Conduct4Level = evaluateAssign.GetType().GetProperty("Conduct4Level").GetValue(evaluateAssign), + Moral1Level = evaluateAssign.GetType().GetProperty("Moral1Level").GetValue(evaluateAssign), + Moral2Level = evaluateAssign.GetType().GetProperty("Moral2Level").GetValue(evaluateAssign), + Moral3Level = evaluateAssign.GetType().GetProperty("Moral3Level").GetValue(evaluateAssign), + Discipline1Level = evaluateAssign.GetType().GetProperty("Discipline1Level").GetValue(evaluateAssign), + Discipline2Level = evaluateAssign.GetType().GetProperty("Discipline2Level").GetValue(evaluateAssign), + Discipline3Level = evaluateAssign.GetType().GetProperty("Discipline3Level").GetValue(evaluateAssign), + Discipline4Level = evaluateAssign.GetType().GetProperty("Discipline4Level").GetValue(evaluateAssign), + Discipline5Level = evaluateAssign.GetType().GetProperty("Discipline5Level").GetValue(evaluateAssign), + BehaviorOtherDesc = evaluateAssign.GetType().GetProperty("BehaviorOtherDesc").GetValue(evaluateAssign), + BehaviorOtherLevel = evaluateAssign.GetType().GetProperty("BehaviorOtherLevel").GetValue(evaluateAssign), + }); + var tblEvaluatChaireAssign2 = (Telerik.Reporting.Table)report.Items["detailSection1"].Items["table1"]; //Design is table1 + tblEvaluatChaireAssign2.DataSource = _page1table2; + + var _page2table1 = new List(); + _page2table1.Add(new + { + AchievementScore = evaluateAssign.GetType().GetProperty("AchievementScore").GetValue(evaluateAssign), + AchievementPercent = evaluateAssign.GetType().GetProperty("AchievementPercent").GetValue(evaluateAssign), + AchievementResult = evaluateAssign.GetType().GetProperty("AchievementResult").GetValue(evaluateAssign), + BehaviorScore = evaluateAssign.GetType().GetProperty("BehaviorScore").GetValue(evaluateAssign), + BehaviorPercent = evaluateAssign.GetType().GetProperty("BehaviorPercent").GetValue(evaluateAssign), + BehaviorResult = evaluateAssign.GetType().GetProperty("BehaviorResult").GetValue(evaluateAssign), + AchievementScoretotal = evaluateAssign.GetType().GetProperty("AchievementScoretotal").GetValue(evaluateAssign), + BehaviorScoretotal = evaluateAssign.GetType().GetProperty("BehaviorScoretotal").GetValue(evaluateAssign), + }); + var tblEvaluateChairAssign3 = (Telerik.Reporting.Table)report2.Items["detailSection1"].Items["table2"]; + tblEvaluateChairAssign3.DataSource = _page2table1; + + var _page2table2 = new List(); + _page2table2.Add(new + { + DevelopOrientationScore = evaluateAssign.GetType().GetProperty("DevelopOrientationScore").GetValue(evaluateAssign), + DevelopSelfLearningScore = evaluateAssign.GetType().GetProperty("DevelopSelfLearningScore").GetValue(evaluateAssign), + DevelopTrainingSeminarScore = evaluateAssign.GetType().GetProperty("DevelopTrainingSeminarScore").GetValue(evaluateAssign), + DevelopOtherTrainingScore = evaluateAssign.GetType().GetProperty("DevelopOtherTrainingScore").GetValue(evaluateAssign), + DevelopOrientationPercent = evaluateAssign.GetType().GetProperty("DevelopOrientationPercent").GetValue(evaluateAssign), + DevelopSelfLearningPercent = evaluateAssign.GetType().GetProperty("DevelopSelfLearningPercent").GetValue(evaluateAssign), + DevelopTrainingSeminarPercent = evaluateAssign.GetType().GetProperty("DevelopTrainingSeminarPercent").GetValue(evaluateAssign), + DevelopOtherTrainingPercent = evaluateAssign.GetType().GetProperty("DevelopOtherTrainingPercent").GetValue(evaluateAssign), + + }); + var tblEvaluateChairAssign4 = (Telerik.Reporting.Table)report2.Items["detailSection1"].Items["table3"]; + tblEvaluateChairAssign4.DataSource = _page2table2; + + var reportBook = new ReportBook(); + reportBook.Reports.Add(report); + reportBook.Reports.Add(report2); + + System.Collections.Hashtable deviceInfo = new System.Collections.Hashtable(); + InstanceReportSource instanceReportSource = new InstanceReportSource() + { + ReportDocument = reportBook, + }; + + ReportProcessor reportProcessor = new ReportProcessor(_configuration); + RenderingResult result = reportProcessor.RenderReport($"{exportType}", instanceReportSource, deviceInfo); + var content = result.DocumentBytes; + return File(content, mimeType, $"แบบประเมินผล(สำหรับคณะกรรมการ).{exportType.Trim().ToLower()}"); + } + else + { + return NotFound(); + } + } + else + { + return Unauthorized(); } - - var rptFile = System.IO.Path.Combine(_hostingEnvironment.ContentRootPath, "Reports", $"17-แบบประเมินผลการทดลองปฏิบัติหน้าที่ราชการ สำหรับคณะกรรมการ-1.trdp"); - var contentData = _reportGenerator.GenerateReport(rptFile, exportType); - - return File(contentData, mimeType, $"probation.{exportType.Trim().ToLower()}"); - } catch { @@ -267,24 +947,68 @@ namespace BMA.EHR.Report.Service.Controllers /// ไม่ได้ Login เข้าระบบ /// เมื่อเกิดข้อผิดพลาดในการทำงาน [HttpGet("18/{exportType}/{id}")] - public IActionResult GetProbation18ConvertReportAsync(Guid id, string exportType = "pdf") + public async Task> GetProbation18ConvertReportAsync(Guid id, string exportType = "pdf") { try { + string authorizationHeader = Request.Headers["Authorization"]; + string token = string.Empty; - var mimeType = ""; - switch (exportType.Trim().ToLower()) + if (!string.IsNullOrEmpty(authorizationHeader) && authorizationHeader.StartsWith("Bearer ")) { - case "pdf": mimeType = "application/pdf"; break; - case "docx": mimeType = "application/vnd.openxmlformats-officedocument.wordprocessingml.document"; break; - case "xlsx": mimeType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"; break; + token = authorizationHeader.Substring("Bearer ".Length).Trim(); + var evaluateAssign = await _repository.GetEvaluateResultAssignAsync(id, token); + + if (evaluateAssign != null) + { + var mimeType = ""; + switch (exportType.Trim().ToLower()) + { + case "pdf": mimeType = "application/pdf"; break; + case "docx": mimeType = "application/vnd.openxmlformats-officedocument.wordprocessingml.document"; break; + case "xlsx": mimeType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"; break; + } + + var rptFile = System.IO.Path.Combine(_hostingEnvironment.ContentRootPath, "Reports", $"18-แบบรายงานการประเมินผลการทดลองปฏิบัติหน้าที่ราชการ สำหรับประธาน-1.trdp"); + + ReportPackager reportPacker = new ReportPackager(); + Telerik.Reporting.Report? report = null; + //Telerik.Reporting.Report? report2 = null; + + + using (var sourceStream = System.IO.File.OpenRead(rptFile)) + //using (var sourceStream2 = System.IO.File.OpenRead(rptFile2)) + { + report = (Telerik.Reporting.Report)reportPacker.UnpackageDocument(sourceStream); + //report2 = (Telerik.Reporting.Report)reportPacker.UnpackageDocument(sourceStream2); + } + + report.ReportParameters["Name"].Value = evaluateAssign.GetType().GetProperty("Name").GetValue(evaluateAssign); + + var reportBook = new ReportBook(); + reportBook.Reports.Add(report); + //reportBook.Reports.Add(report2); + + System.Collections.Hashtable deviceInfo = new System.Collections.Hashtable(); + InstanceReportSource instanceReportSource = new InstanceReportSource() + { + ReportDocument = reportBook, + }; + + ReportProcessor reportProcessor = new ReportProcessor(_configuration); + RenderingResult result = reportProcessor.RenderReport($"{exportType}", instanceReportSource, deviceInfo); + var content = result.DocumentBytes; + return File(content, mimeType, $"แบบรายงานการประเมินผล(สำหรับประธาน).{exportType.Trim().ToLower()}"); + } + else + { + return NotFound(); + } + } + else + { + return Unauthorized(); } - - var rptFile = System.IO.Path.Combine(_hostingEnvironment.ContentRootPath, "Reports", $"18-แบบรายงานการประเมินผลการทดลองปฏิบัติหน้าที่ราชการ สำหรับประธาน-1.trdp"); - var contentData = _reportGenerator.GenerateReport(rptFile, exportType); - - return File(contentData, mimeType, $"probation.{exportType.Trim().ToLower()}"); - } catch { @@ -304,24 +1028,66 @@ namespace BMA.EHR.Report.Service.Controllers /// ไม่ได้ Login เข้าระบบ /// เมื่อเกิดข้อผิดพลาดในการทำงาน [HttpGet("19/{exportType}/{id}")] - public IActionResult GetProbation19ConvertReportAsync(Guid id, string exportType = "pdf") + public async Task> GetProbation19ConvertReportAsync(Guid id, string exportType = "pdf") { try { + string authorizationHeader = Request.Headers["Authorization"]; + string token = string.Empty; - var mimeType = ""; - switch (exportType.Trim().ToLower()) + if (!string.IsNullOrEmpty(authorizationHeader) && authorizationHeader.StartsWith("Bearer ")) { - case "pdf": mimeType = "application/pdf"; break; - case "docx": mimeType = "application/vnd.openxmlformats-officedocument.wordprocessingml.document"; break; - case "xlsx": mimeType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"; break; + token = authorizationHeader.Substring("Bearer ".Length).Trim(); + var evaluateAssign = await _repository.GetEvaluateResultAssignAsync(id, token); + + if (evaluateAssign != null) + { + var mimeType = ""; + switch (exportType.Trim().ToLower()) + { + case "pdf": mimeType = "application/pdf"; break; + case "docx": mimeType = "application/vnd.openxmlformats-officedocument.wordprocessingml.document"; break; + case "xlsx": mimeType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"; break; + } + + var rptFile = System.IO.Path.Combine(_hostingEnvironment.ContentRootPath, "Reports", $"19-แบบรายงานการประเมินผลการทดลองปฏิบัติหน้าที่ราชการ กรณีขยายเวลา.trdp"); + ReportPackager reportPacker = new ReportPackager(); + Telerik.Reporting.Report? report = null; + using (var sourceStream = System.IO.File.OpenRead(rptFile)) + { + report = (Telerik.Reporting.Report)reportPacker.UnpackageDocument(sourceStream); + } + + report.ReportParameters["DateStart"].Value = evaluateAssign.GetType().GetProperty("DateStart").GetValue(evaluateAssign); + report.ReportParameters["DateFinish"].Value = evaluateAssign.GetType().GetProperty("DateFinish").GetValue(evaluateAssign); + report.ReportParameters["Reson"].Value = evaluateAssign.GetType().GetProperty("Reson").GetValue(evaluateAssign); + report.ReportParameters["DevelopComplete"].Value = evaluateAssign.GetType().GetProperty("DevelopComplete").GetValue(evaluateAssign); + report.ReportParameters["NotDevelopComplete"].Value = evaluateAssign.GetType().GetProperty("NotDevelopComplete").GetValue(evaluateAssign); + report.ReportParameters["PassResult"].Value = evaluateAssign.GetType().GetProperty("PassResult").GetValue(evaluateAssign); + report.ReportParameters["NotPassResult"].Value = evaluateAssign.GetType().GetProperty("NotPassResult").GetValue(evaluateAssign); + report.ReportParameters["ExpandMonth"].Value = evaluateAssign.GetType().GetProperty("ExpandMonth").GetValue(evaluateAssign); + report.ReportParameters["ChairmanName"].Value = evaluateAssign.GetType().GetProperty("ChairmanName").GetValue(evaluateAssign); + report.ReportParameters["ChairmanPosition"].Value = evaluateAssign.GetType().GetProperty("ChairmanPosition").GetValue(evaluateAssign); + report.ReportParameters["ChairmanDate"].Value = evaluateAssign.GetType().GetProperty("ChairmanDate").GetValue(evaluateAssign); + + System.Collections.Hashtable deviceInfo = new System.Collections.Hashtable(); + InstanceReportSource instanceReportSource = new InstanceReportSource() + { + ReportDocument = report, + }; + ReportProcessor reportProcessor = new ReportProcessor(_configuration); + RenderingResult result = reportProcessor.RenderReport($"{exportType}", instanceReportSource, deviceInfo); + return File(result.DocumentBytes, mimeType, $"แบบรายงานการประเมินผล(กรณีขยายเวลา).{exportType.Trim().ToLower()}"); + } + else + { + return NotFound(); + } + } + else + { + return Unauthorized(); } - - var rptFile = System.IO.Path.Combine(_hostingEnvironment.ContentRootPath, "Reports", $"19-แบบรายงานการประเมินผลการทดลองปฏิบัติหน้าที่ราชการ กรณีขยายเวลา.trdp"); - var contentData = _reportGenerator.GenerateReport(rptFile, exportType); - - return File(contentData, mimeType, $"probation.{exportType.Trim().ToLower()}"); - } catch { diff --git a/BMA.EHR.Report.Service/Reports/13-แบบมอบหมายงานการทดลองปฏิบัติหน้าที่ราชการ-1.trdp b/BMA.EHR.Report.Service/Reports/13-แบบมอบหมายงานการทดลองปฏิบัติหน้าที่ราชการ-1.trdp index 60512e2dc775a451a327fbbb252e0822a0206da7..586f72aaa63018ba82a68640b82ecacc1f881eb1 100644 GIT binary patch delta 2275 zcmV<92psqD4VM%cP)h>@6aWAK2mpF_9# z_5l@Dwb$M|Y+5y`(pJ4i-2jis-JNEwdhNwK+opXYr6Pp~5WNJF0wN7nMNp+SE#Ukc z{}g7%9$&`etaszWZa``(d+u}2H*-GEeA_&=+B3jSXb*JDoGU0&u>hdiwmQ1GGFKR) z>nG}kQzzejr+F2B_AMKMPxKDz;&Rn?uK+Gx8%PKm(AIBAZL25Sv{l@ftQOUhtVl`$cLqSSg>D;=KH`@} z%S3)>%jZB#v$bnO6I_P33PARX%VGKEc?5d{R`m=-nr^gzU>o82fd$QMb#2|e!A5uv z>MLD@=TMWBa7LYIC4WS;wP@2cVHvKXd25xyQt?`0trjH;(?xilypYFbt51^awNDzk6h=O>%4HCb=P^~I^Vj^8`s%#omZ~&m_GmRI-9ic z9xeZeyMNz*b$00M*RHchA9mPmkT*uP5E(d!aF8fOdZ~2*^Q+$>Tvz+30Ol2g zD)Y@YWgnvhU{i`xDFbfh7-|ni`uAXW>3K}YFE!` zRceU`7+`82yj3bn-W)7y#vmsWYLZ$@B?0SIO$kWwH}NzPpT$tv1D| z)ucu>6}7Tdsf8jRgKUk?d`q~dBTGMj<>JAe;?1@qRV$4Hwp(AGJXgTW^6{N}@3WzW zK8)_RCtPQjg5Y2nftP=L2~VX55q5SZGQCTG&_tH4NVJvXUKv2qeN7qj04Cd}pn)Z8 zpcD5n)(D4oDL=ITafB~2x1;>E^ zUg@R)*Xj)8Dzw|5JkJPkw=#wF89~)|vi$8=4&8vHF`j{a%|<NFG%?;*jJGTHie~C}Gy;G0S!m*wS*Aj~O~;TDfPJOS?-*FtUQ(%iNnMWTl)$|_ z1amK`nO?6P4UHM5p(NhRA2UaHo$eQpF&+ZL*AQ$WZ2LSV8?N&wuIkqST$M%L)CXOm zLFee-O@^d)&42-pWl2$aO)Qntzc6Zl;V}^+4e=h;yw$nQPi6rc#(+y?10i|fs&(tU z*@3IL_X1e3jA73V-*INEuaUz!md9QbP2xtqb2@TRCCE+Mkt!7v9&L2`MWI7Gx2Qv- zGmy@Ac>l628dOL#Al;uf^c6h*1-zL;8@CBRHRro*UgpWOd^>g_~f*Inm(5_o139{ zBmII#nqNS!JQdD2;E%Cq%r~eA46Tt>OO|zH@CO)b@n9V}BC;_hzCc}46LATd={tkH z09)^q!&RO{^*=%4;j}-0SUMxMKVT_e>2FMt^a~7TmZiTup7d98l>X%5wIY=(srO{q z15F0kJi?Ovv+MlI4)>#B9l_!LeR>z>#VD*(<=$l~zC*QtD`R8_b`FA&uYDS8L!E=D zr}2c{QiP-8N_g=)_vn4zL)ZBsGGg!M{tdn22-87ibUP7WWsf$0`i5PhJWY5bIbK%0 zg}{??_AAn2BG?T70ZQXGgJpx_a5(=>ovsL|k^WmH)qhjGK(xs6^DYo z>_J>$I zvrC%2qDQu4mhh1eHAVfZ$3ZmKP^DHkZy{v$@OyM)ZpzU{n{sr#UJ`|*)rAnTDm3Nl zFalJ94?OP<`5Bo%FqHt$1{RlC9`j}k8W>E=j{nx`b|10~KwdD#m>2@|yv7qLDt!+1 z44+D_cdk2se>}nT{Pz$5-w6s0msRA_eM=<&7r<%5ux?!*8U`OVol=VhXpUbqh}oK~ zsu#O8e%(k+^t9)?J z#Qfmc(qV}w{{~P?0|XQR000O8dUqaIi2U?h*fkOkQedUqaIBG=3%S_l9DjyjWf x1}-3acOF-W{PcO10002C0000J0000000000000000HO$!#Req?gb4ru003i}NIn1n delta 1432 zcmV;J1!ww~6z~lgP)h>@6aWAK2mlii8&`*--N!Qp004g)kr*(4&6)3S+e8@0-y`uq zocwCM*g1CM{6NVj3K~U&scH(mHp#8ANbD$aSjQ_e5G}j_(I$m#fLKda7^<{o1)Trp z{uJ(>^EqedN3&r;s-!w!&gZ+&_v`1Lv&%R4T21r`>2w{>t!M_$Xo$EqukN_J6|Lvr zyv zwc*{Xx_0~Rj#IB_JDncU5WBG3t!NG3Z@;eV-CBdR>@N06lXRSqam{P#9k?bNiEd`h ztZraKV?#lxT=nla2^87EEzkACVeD+8s@<_a>bd9+xu+q2T{PFH?aS}@q}7$DzD0c7 zX;w+iXR}9}#My25Y;rkVoKCH-wh0FSC#yX{#SYo?H@rQ`$ifEiMfRG(d4BjVxyuiD zamQ=(YPi-1cC!Z@zr%CY4C^!-_qa`@IIr#5Xy}62pW%} z{hxGlK!a0%IQ*IheJGsD+4y3Nrlt%$0W_+d3wEn|o5|^X$|{X~+t<*B*Ni092MV4pn{)&OL`xE9VLhune|1&d}%Hwf^#Aq z0+l?r5>$i<{imrjL&f!#W;t~TcyhhTMhLN@g zx9ny&B@qhPEG!hkz@{QXL4@D92%!)WgFYY;_#Q}IRB0Y?&+=P)1kSyH!b@2@^^lt) zR<=}sC9qnHuomY+J!CHXjPnSC=hUQh^7#z2*)?ndv%(rPE8@apE5_qNX^s^Sk-T}w z!0J>kUTWnNSrF)skzCcDLS%RbSbt}SJQNIN<1l7$pJV>BuF&uatVEjP6vi#TYuhgbA_AlceybwZ_7m zaot%+DwXD?AVyZ?i!s%Q2x7HZZCOh9CBH$AWpv_zXIPZhn1zM2tHv6cKF4qzA#n76 zW9g95zYQ7L)DyK-lY~-!A*~#?3e(M3jMTC%tdf$YzoSUT?>J+P}Bk687CNSQNtjqN2M#d_GS1K8P`arFDsp& zV4Pw)lL}+=1$=5IqGb%natc==7U|{*|Ic&WbC7JD#zHo}axF_St4c+ZEH+k_B%6r7 zL-{OV9|FM;5S#;}>64l%d4N6O;RYTX%oB%g0@(MrxLn6H_zQGMx$A^7DekR*UtF28 z9(xY2#~#Fo5ACNd%3Jm>sS=;R3h1IOyG=T`9hW6GZ{(PAwp;JkSY4DuzR3pdxIM4e zg{HDzUhF-)v+KCiC-<`A{m=vu6}N>u)OEy!&EA@(08Zn5s+|4tm2* zX5aH#Z~CofC}ra6iOYrKiKZ7GO8{kEyiU6D4^T@31QY-O00;mR5gU`Q2;mMB5gS*B mqTR@6aWAK2mk&vSRBJJC5C~n572pYzSzS zw4?qFv0t)#&*dR6FG;=FGD^5WVu+Xb^?A-Y_ndPtEAMSJ4e}Sg(`}fo)l^1Fr-Q*YKE1Mkl6vpmpZ~0KM{k=Qi~ONcw>D|LVy&4Xx3#8Df9I}bQ>40S-mA8> z_WPYieKmEr)6-LgcHQc(rZz3B{To&7);9H~)>SOs&^wJkDK)dHcA!@}mYPjxb81G( zr08ITR6eluW*2_aha0-3HH@lWv*;wrExoa^X|1NRStaX#&!R5YaeINrVoy+TSKqSM z%q?#zY2FQXn^s_LAL*aMLy0}yHQV$z`}KRx=+V)f$uq^7JSUF*(y?FR-?xsv=hzP% zd*s-U;osP?4;*{nvA=gFJC6MjN_HLl)Ul5p`!%aG=|kJ^pzUiYe**RYigk9O;W4y5 za_kewe&bAkwjF!uOz03h;SmuNi?1{zzySzUt^0-^D58Zo&6ef1yL*dNwT|{lueDzN zkW$}cs4TAZ&|2vNmkRmlF!X$CiDD-psCK}pJWbVw?U8p3+Ro2p;JKh zh@lm*fJ0YKS(82jK7a~+!1xeJ;lefWEThWA!!13St>%SG!AOBy*Z?C>1xEN@!ayD% zD%=e0;wCfzQ9pp1o)RyStUjpKDbxr3bW4VRsF{a2y+benhxp?qOxWB1_FY|{No?_w z5W5m0_L-<^qKP~Ku#Zslg2vaS;y@;rDeEh+r?kSq(0+-k%uOh5@(r59NE_*i&sX5I zMChJiJE@`kUS@3NQZQCj@&aS4@BF!ET30!7yK%&gkPZsqBLSso3kRLNao^gz8X<+ z%K%c(Bc0BK5ZuQ+#DBn&Er?E{BhCfUDMp}kf|A8$=KvF*T&5(jlv!vcI*eNgt&Eb5 zKx?YvNeQ#qC>{d?xBecakNZOW@K}a5(f#2WqbK`WpQ=e!j-Z z3GJMTk7om^rHqn`C#4)n4|7WBl79f%6anF8=sCc5h@gFq>c;POj4`3&(Kc`qohW6~>RhagSbq>9y%7T*UxMv~dT?w2UiQCu?9vnj$$)NiI;0YWPlNh!3 z;>$S2{hM&eeS!_SRIz6p#^(g=N$BSj9Xc(Beh7PR(Dq^B-{QG_UpUS2wBST2#G6wQ zPQ?^%Mu50?L2Da-6zVaa)V;wwU5}^dY-DyWPxw)y;m7p+mFMu;aNPMq2>5n<`@sy1 zTRuBD$uB)LJ{Nx4Cx$LW#@RwCxCLdo40HT4{$*W7xS?#ZPGqrIGwb)|RbAH&qbn8S zB-lH0$GrDJtFCX+0aE0;Y4n;c|Czq5wl#K(8sFh#s7u;^DZfz7ZYM{)4NFc*$>cJU z;H1k@R~^KA%BwdUx>4^cANQUkzX@$`)M81)h+hDS(mJ9ZN2khqea(zEl*k2TJ>&?mU;f_ zb&6V})iZltsEXw{*l)GYMnkajSnxYnU?5d;$Nf~z_vxtz%O2KD%QBm;$Etb@5Ie1? z;(U335#V3l)O8D+K*^n+2ujGYUf1gEdp@%R(G}+USs(s698m_!Zqf5iN^YNDFKKlT;I_{r*VneCim45%CbBbIu4D;UY zo?*x`Kdmhusm3-(aSzN03*Y@eP)h>@6aWAR00;m8d>&Vma0uWI0DK--_K^s^W(fcQ gZaI@)2`&Txd>&VmkO>+Bt_hQ@2_*)Q3IG5A08+c?iU0rr delta 2183 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 E0CXP|vH$=8 delta 1998 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 n#~GxI4>efDO_J>rimAi2*=V{&nTIC$&^RW(_ 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 UM2>_<5!(P_Ks%yF$=0mTm#5@8Emy z$MeD%c{dW1C*8RZ^9 zzos3k_}QNJ3dkwk^4`3UIps4==wPFSO6@owvcS-|;cr!Md^eAWd`>s*@6Li2<<>+q zuI@Z}7H!DN-K$p=JuLE$&wc=!r$)!kg14LRfRoDmuU9eEyr0>~?nNkBDF5Div)EeJ z&w1K5?Amb)UjRZE{Vr5q2U?jvn~fvF7o&T3VPkf7qVSgQ!p{$GO++Z|xerJ1;T9eD z-P?DXrz<8^7mnoQ*Mj&Niz|M%D~j-|%Zu`ixr1(s*1_)~xYhO_$Yp>5tG^ecR(5yL zmA!+GocoonVH3VgJ3&G0`z3Nmfi-k|QeCC$#ht~4dB%k>L$u&}QYvNm?kB$v^6KqC z>_wouN*Ip6ESSo(1YNoSIxq44N{tU$(xan4E7(a@5;pQ%HHi8;uIh<$Hc!=~?+tfm zkS!(~yJ`jT2@s>n}oKD68;GNOL|g=8v~W`Vww#xa0e!LGW7a z=F+{?_Ppc!qND8JmHp8Xyo%8`w_78bE~DwLZ+JaUwfwqKdZYE35vMsNAfnrD@OqPa3q8UTPHypAPmP3^U9m^yv19alKaTaMM2Mva%w;eP3YnuA>%m+vTZU>k{b6n8BPBwwuaE zvSvILgS(pJTA@x^VOpXJ3)8rk3J)7^)HoT9_0s0V1+G~pH1UWqh`we|xP*%cpDq+- z`m8iAdmqeXUh|F!pD!G?6fCcF>iVs+h?)QgIrTy@$92D9X^ZprXNobDU4KKjF-1?y z=O$m){8Bi2ay$9nVc1`Gv

13SgZz_kC31#U0UqkEUK z)oQfv4rC#nf497`2wI`#f{279zoX&2Mkc%8Ze*j;Y(~}jzVSql#*YxfZ|9#86u!J) z>9m)1`&cBiTI2wKJe-V#8)hxmQh~y>DJIRIJ*&GO_FG}Y+tn9Mat$?fTw%IhW?9Fz z^W)=>nf@5x{1)i=d>F2+uDQgl{G}et7ClADUk7+&gcKtM{#vDetLTu*eExYu(0Y(I zVeNZw0<0tt%Eg;JoMb&z78GJLW|T0Epx%lv8)I@3tQSP%n&0Ax)|?EdPkNdpCN8N{ zP#zR&!!(pF{bRQ8#cquQ+F_3d#QK&JQKOESuTs&pwl&Jhl_6Je$qi}9M~pFH^#9Q^ zE&$R(f^_r8bBP$O7)xv1Mpc|wt<_t!6MOR!6MxUYj4M{}xMHeVk2i8^%#&#s7mp1- zvgTUQi|3xtc4eL0lrO8nW64lRDS3`-o>YfNRuYO{;=W3h<~oCt(!$yHa>VF~MY__! z_(Xxt+m2b}3hq%A)uK5KALj_gCV}!mByS*xWHvQtx(HtBikLrUFPxnIAt_xxUG&Xw z-7eC)77JN9;{dBBUHaM7Gqu_^W5v?)pfH;cLpBrByuEWI6E+);TH{qwd&D&F#8`st zYX3tr^^ZjJ%Er;;y)uuRZL9J_-s1($@wlgz`ddOfT

    R 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 diff --git a/BMA.EHR.Report.Service/Reports/15-แบบบันทึกผลการทดลองปฏิบัติหน้าที่ราชการ สำหรับผู้บังคับบัญชา-1.trdp b/BMA.EHR.Report.Service/Reports/15-แบบบันทึกผลการทดลองปฏิบัติหน้าที่ราชการ สำหรับผู้บังคับบัญชา-1.trdp index 4ec234449155a344c82130237d32bdcd7d752787..61d14ed0095b43cbdd95a4411893f2ffe6e7d0ce 100644 GIT binary patch delta 5989 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 delta 3990 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 T{eQ1qszg;n7VJRkhoS!g23MxG delta 3380 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 K2Ivg{0000r8DYx+ diff --git a/BMA.EHR.Report.Service/Reports/17-แบบประเมินผลการทดลองปฏิบัติหน้าที่ราชการ สำหรับคณะกรรมการ-1.trdp b/BMA.EHR.Report.Service/Reports/17-แบบประเมินผลการทดลองปฏิบัติหน้าที่ราชการ สำหรับคณะกรรมการ-1.trdp index 67f391b6d761ec4703f8744169bbb4fc67017290..671c67c615e97fc291d6dceffcc6cba780a3a62a 100644 GIT binary patch delta 4262 zcmV;X5Lxfc8`C2gP)h>@6aWAK2mmy%Bv-xfV*(Zs008&dkr*<6ZExE~68?U`{Rct^ z6e)^IqTY3tTg36DE!w6*oV)w1N~}$k7F~%>lYXjGqjqz}-8HeBy6F|LbA@{j475(# zO8-Vb<#uOx$>nlMk(Mn}(gLvq@C{%*FNRaCChTFYoRnrjBSuD+^gG(@J;Tga?B z&ibEoxn674SZnsOj$s*H^P_CbUdwfX0-~EMV)RI#)s%8k1ucA z>-6exO=|-^X*k#%_P=9)zYP2P!~Wx8|F>ZurGG!{{|FbS!~Ro9--VQuVSjtre=_X< zYuJCmD(=DcGfZLdB~(G>e;p2Xpf0+7;F5ajPj{DILqAtvyE5z_5Btxd-culhh;0q~ zkB0r9q4-mO_&ea<;tBlzJRE!m=`Y}w&;K1?W_{t17Up^Z8h+WiXBir9{;QU`f{=C1 z=r~3fHLQU!&}v#V8MU~-CaQbg?l_eC?YFe$X1DplM(5`8I~i@+{1gMOvhHNGMcZnl z0^JQGqviY$&%x7q9ONhvBCt`-Rx1S_9{FsAg9pKX3IL=`GF*s!oz)l^j-eee&!zbAx_D30m~{5^qgc+YINE#uO9qWJ-ON5-RN($p^NXDh{;ydx^v z0?DE+fXNhu?_adr_r%Y-W>{8FNMx^p^R!#`CvSJ!#$EKdjCReoHr6`y9!WZsxxC)& zz%|K#W48g4h$xYpSTIR)gD9+ItL3tQ!hC(Cn8HHg2=H(KAS4$AY2OS7pZlZ$77b4^ zocf25j;;p)vu!A_FCt3%VIH_bGGoIh7fxW&?zW9Cg)si;H@mid$H0(t9DB{XCym4I zZjq*Aw<8~bdeQEZ2P|66)<+(FdP~UD8%mvj-i;&<9ZQJogj)z{xFLk$l9JV)kqLSBsx3hHA(J&j|-!b=}-*v@Mp)PIN7 zbfoxyp_C2cG1-^pm;-z zxnf!f=Z*4t@J2OTDJEYrU7&D(r(=I&8SNG0T?Bed+zpVvAiRXa_B>)+Ttm79Y>$@v zOpvdyTlZwBt|?F}P)AI3(+uk6jaJL(^<=QFDp)I6N9gEjhP9}4%kW)S_?}OHd^d73 z8=eLMu*9^7WCT`8f?p$)bSIf3OX}HjHFim2XcnhrF>c9Hr52Z_tQ=}kY1=iBe2}y! zN)65}B+vGj3u~WqD}~S`zHTEIumD3X((M>s(N;|cV7Z{sZWy1qk|OV!z+G=zJqcG| zkg&J_5piyUK_(7x2cmD;SPx)-47eP!dxoJi z5|u7WA)br+s0O5)ofYZ#vP>!2u$olBLblL<^3I~dBxW}{ZbCuQfswjIoQ3T|_=<*q zizY-(h*T2BR1q#%LAXHm;M|piaMd7OF^EtLLNObSz~ZMAkf`^jU@KkhhXbX z%<@l|?d@)~-M(ntRf&Re3|o6@j7jR7QvugMs|)o>Fsz#eS0 zJO`{F!S$(skA4d-c43qK2zK7L*>3x$c4avDT0Cr0jI%d6&Jh%shT?%4-~pnZjje*X z^R|iLe+x>UfPu<=wmIp4=Zl8{zKCQ0n{>xs@xbixz}QNVyCRW{2e4A}1PrkD!OH3h zoN#l|AH@k6=#K(GuPUG`pljhkm#khV1v*_&ODOD*v2{5;=y|Tfeplpy(pXB6;sGh? zS>gf7bTP58pBM*Fq$8m31%MvMN?iec)`8A;C<1Gbv<9DY=A-?8b)VMq5FhOS0S@z% z1NmVd7lKFkN1W2H3Io*iAJf&(Xei2);{~jc+|$sg&a3TRf9osHuYl3hZMTOJDp!f|_4Dh$qZ_ zIxXA1;j{(Mi_@!ra1!|$%B&bO6h}(v~OK) zU4xUKgl7)<430@P;G8}j2Ymr-vj@wSo7~RrG26L4<`R#8;QCbNi6A&Ha1WiHU^;Ym zybW~rV1bm(ES>{RSpSUne-O&h#Uy9D6?aDxpFQrbT(&|PWeDt_DJMBtH%sbcI)O6r zVIYRZI2PT9;FNP0L?gKAq|*2pAMM1#(skeY1Jkz-K+QS@dHX*mqS+WR_)6nM{}wKd zh4m(@{Fv>3=n{{5pMwhag~qh6eHd`SM<-d?cQrsP={MmayFSV88(y9Z1pra&I2{YelY`i_s$;ELNQY7UR?!G7BLnItBa^AG3Ip;a8_z zb&U7DL}oDGGY)t_9c+lolm98annhWUDpH~PPhGNq*G=1FxJ zX1@`C!@PRRO(#%NDXk{E%P)w;Bgl3A+#YG{q$$~#+=1U?@N&zY#h@FBWF`3DbZZh9 z*kvoxN6b%pxWp{Xg$LYpFv8^h$(~hWmXe@CNz97|N-8C$2BPN|8heV!sWBpMz7NHIVUid&4(W>PXRvWbB%o-2x?P%!U=Zm*ad~RQU9F1S7GyzThp7L9?Hir2V3d2zoB`kWIYYQTamO^y>2W34 z&IPZvsS#{?UMoJA;9!PhjyDhPw#O&mDS*Y=!Sa4@I(3N0iI+m17a+ptHU#OUHi|*1-HOCi|dXl+=5|bAWl^K$g zWD}#mGp;Q?mYIaY15d#EN^Wy9lPoxY?y&jw=v`yADmXc`Pmz^NqPSp6FkU!RQYsi@ z?s^DQW4dv>&H2=O>UmQd+y}XM2!Fpbk4rx?g>i?Svp8huqsZ+ecBaGKsYcKJAzbn$ zGL2Ah7AmGaj$FCs^YRnRH3Ey^a?S3vH(HJ^i`=5CFmlRr^>V|=3D8aunur2_yC4O2 zh?jN+>^TMY4t0;*I*io*JCJyXau8$bB z-?O_-ORi(9sJ05&QC3oEme>GmsfJxpiim=Bl#im+!&<6e%VHML=POvxBdkTQ3~7e- zlG$sS>z3Iuq?(8<76E+;h3$EN#I|VFI33uQsv|{(ZH4V9o3-h{wp1r6su`rhcI1Bg zbbz}o19xde;0*=tNa8aH?n~cZKNGm6i`pf%sI9;q=>;v#;P$z*l)}5N;60!4ZscTf z!5Rd6vQ)3eEm^6@EvZX?zlcTF3p6T{ z50Vx|sX==%$vvWygr1rZpY{fwK4rS#dwX75r|pZ zHk_tudC8LCrPo$Xt1TrbC%J;JYjVjIQd%!2D_%-gyqu_bJsI&zvf}w<#r0&xtI3Kd z?4@KaQ%Lx!1u3iKqTttmfONC7B1I<4l#&gr84(Co&Q*<&_^9$vb)q;eQJ7%K>4-`` zJW#NIV<2Rj5~;-nRj_5-GTWXSLvP9B=?zt7=v}BXqXO^7iZJb=N3w{L3_g+*6H)MS z15!L?F;d(>Tqo=x*RI6z9xiY|VpWJ344F%Wp2>+9mDeS6-jSw%71)KG$$?!mF-{y( zy`Df;x?m@+HJ+a>sJeD#IQUwOs$PzBVmCGmpjTFr*5#yUg9kt}k{Dhkg+HADPXzv3 z%!>l=>%h+z4@I^p#&KJj^t7g8ftg`}a~J{W%1$yC;2n2(r#)TpM==7%`J({N<3yHF zIGU>p1=wrt-+^=P_76#mZ4bB7Wutg7Rqpo#xx*azL}F-7Qyf) z!p)k2aMsJ-u(MECKyO9Rx#9vfCO{W$tBneDHv(u1_KU24KhD@xb-t;%M)=Del-6{N zCG@}SG`kLIlUGP{X%No%H`I{9=HqK#H#=r;Rof z8;xI;HU1_+e2()uPTT;6H`n{!m1f8Mw28ZdzZSd2N08Fde1uxk_AZZ<>(kKQrED=T zh5NZl8o$#{;x+G(ZE4V`*xGRLjm9GPkbpv%7oNa>jtC!PgRmc7Pm}P6f5;KpV>WuL zF7K_-QFX*@6aWAK2mmy%Bv+GV4B!qluOwH! z?_&ZM5C8!8*^^TZE+90oBv*+1^m&y4006cC000vJ000000000000000UJ#R^4J8IZ I5dZ)H0AW=;ssI20 delta 3202 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 delta 3626 zcmV+_4%P9}8}S|(P)h>@6aWAK2mm00^;RZto>jCB004UDkr*<6Z*SW+8h?MleFwn@ z9BwZvTk_xB+zm~OUWaXmqUm<8y;w_(Id;UBv<4vL4mbf zulBdmM>+DLC`%M2Q?eAvHjALJDC!|8{`io5_&h%~-@mufRlYO^Tb+LIYC%&=1;yyC z_S>D_+SS6g`T3Q9M&bSUe*e4X9b>aUFqOY`+U7dSS5?ca8wKUBtqtR9!5aR{8osuM zyVme$Yj|W0&#d8&-ngO{6ePX3b+xc=nwx(v7PnT{jg8ipY8qW*(D_1L?QawZAQ%-_ z)JuA~sHs{3m8U4p4@_fY3x1-D8;05HbXSa36V+3>Wpvhm)=g9mO|6Zq(RSytrNF~( zNsw^2^;y?&+EP(#OG{V`6|1YIDkOYle2y+ls#e$W<=y@!zH+tP#DZK!f%N5m`@Say zrCm3=-7O}ORs`Qu?)3luL9cDxL-i>r*ZbY=jo$bg-CWsh^<4MprB5UhO1cU+nsXNy zYTPrI`}b&n`>SfBs=1qAQfno5^T$oczdmhsx1rB>pwCa??-gAB7gA8?{{|>Pi6?*j z!@V2tqW`YFdquH^$JX!-z~l^a9@A%^0dUY$ht}|+HGGLvMqh)FfKo?;}r%Bb5KKHQI-}MAV5-@=wwI z8x}Y?+bJMu7bMV20;SOdXv+!wy@lTw&^@GM_UTYK0cp?Z0XNa@oBf`ttaSc?WNEd3O|zgBgYz!;2W?{j0*U_k%b?%?(kLj) zebel3jIW8Fp;vc^7NVCE3qT67KOhAxcU!ApjOE*xM7(`rOSi8k3I`oYglo9DR5V-= z!SK@-tA)LiW-<8XHjB1a<|*`Ih(<>b(m5pF^rELcy=ZDxUlN~Qyf|%0oJyRM>vH;k zIMr%#ak^Ac;GL0F30etSa$QLsw3S9&(3W)xS_xVXXshXiRwf-1KLvhpe@&{*nj9o#d63P(P9_N1YDq#?LY4#B46J0L zkkuq)C1g2}&A>(`3R!8^m5}8@HUkTpC}gEkS3=e{BIMVo;63q8%Z89HF!R~X8F)BO zv>jppt`lqcKXAc1rfzn`bMV|6KB4|s#6|5n^=3P!{$|8c@fG#&`VD-*zEj43-gdEE z;r1clbbfHQL*z^FK7)dBwx{6iN8HD-Bbx%(ui<%A@M~Aigm`5)4Y+#O$4m6NvO#YUdjIn zZyfB{5F88jj-m?wW4E8l*rla^6@(FaxyWu7d0~M~0$onDAi3c)Uie$XO9EoG%OXnnTbyS?&Z!D9+t?swZ)3pZQcEzW>{O-T==F!~c4 z^SqIc`wz8cd(#IV7{GAL6KXt8=FBk7>+79vn=6kma}EF2`N}CEccjc37qi8%YBnLg z(_7=VfZpVa4SLenhH#td5&rA9N4{Xkm`;Mu>5|YXU%)tA5#4PC#I1$S$7!$H(wmDD zpNWI#;ow;~WDX9*TsVS%%F`l-Yn5RlW3oMVZu2_5J0<|?`2G0;@~_C^BB?xK1ho= zQAkJ!ik>G(R}+9VdyFEYz|XDWh>}Aks=yC@XcuvRkZ2DSJx^$_C4hGJfGIt++o(pM ze(VFai2sKKb)e{f*#k8-u>0(B_7mG$oMz7H~y278af<*4w9aN&U-=A#d!Tj`+l;2Lk52nLgoW*M$v$&>%dgC zUNpe%4)fr0#p1#*-?2#M+t;q#B` z46GXhHr(fbV9y{ni5<%Sf9$eq{EUsf*iey{Rilzjkb)dA^EO~IuyF`FWNOL8N=eAh z8)P#ucZfn(YFP={Y`!VrGj@nVR&r8G$VU940LODPI%IWKFU4CJ=#rCCLN;R9e_D_g zHz`ZLGzr>lNZ2FT;k-73D3FzeX&G}J#IsE8f-}~C4tT{Lffeb@8XmJih{7%u-2fZx zedWo!h@i=@b*3WOiSo<#9@l>wixD*(}Gu{JNrTR^rn#W!zPb9K& zR$2m-H}>=@l2a3<(Xkc5#GEBm&x)W-op|{tO3gDB>5f<~NzEgvc>-jvB}29ooLh49 zM2&xcV+;|Rsx4_^(_L9)4U-*HPd=zarVcUpnGnKzD0%XmvdEEtT1+^?wul9Q($p+8 zx>~ES%$p5eGzu&VWJHeKBS*8&P!GqQ8Uwt8Cv9PbY)C=@e;(5#d&DQUXN{l?LimF~ zPK1M%)b~xUBGNfrNpR)o5gM}J3*YfgKzOKs9)sI_jB{f4A$J^%M~Q%P&5YPj^QAL6 zvM?9h#m6zNOGwW&q{H?RS+Eb4)kclADT~bK=P-c}VJ43}w^vf(&su=Fy`G%jixfoX zTE^K#B}bS)ol9ZDsz${cJ+VeVuxuq|F=rpCA{S0Y2BJTR$Tu?jBl`O|K}^n9!o0(O zfJ;0mIt;|ZsO2!2$6+vW8h|YP!B7sdWAL9?3ZC31Oh$<>Xr>@8((Dt1Al@Q!G6J1n zQ#H@>8fJ%{+KN94PDE&@3=?8+69MaJ}qes}M}HR$)!3-r<$)6GoMC)K?Mg^F4& zh4fyXAy8r#yE90jRAwo+MAlsHh4l}Au%tc$_9Xj5k?hu!dw@MgOt7AlE~vBaf_m9J zM`g8Kioj~%#VKd&YL_B$>JdKwI8EDeuB_^na$KAy<2olnJ8z)94FCR0j7{nxhcc!z zfmBYCYlH}&KPYEG8N)zXfHLNgLm5+vLf|D)9U^@GQJuklP9QLc?&k3J?UZ_d(~t-q z!W44||DQqnV=xpDzneXFD9DA0#C;abFPvSUsB^od(U6eMg87BB0ThL-q|uO&wd25M zM9bD>Tv*&r&95G+$+)mQ6EVcw-5#*c08y6ol9(ZTVumU9e|SsxjPiv#Uq?Bn2hpc+ zCVU1dJ8;+cLE&WBk`@seIi9_I zP5GVg>&b9oFJh=Dm#Vn zr^b}ji(-D>Eru>qUL=y*1wLGgNZ}%s2NV$lenkyCI{a&@S@5a^p z?p36I8LLPEE~Suwc~1-)yQ-Y>NNBM&`}E9_VmynEIcZ`}N68E1v^B@9aX02Qm*kX` zoRR@D*HY$`tVEMtN`SC`GB~>)Eju^RT+(5>giSnBYAn?S&B5ZNcR>^E46)#3NQcQD z{)F{V5QkydvaK$%Ba?)e>4Rlz!poXk75?Tze74Jmh>L(^#7dFvl4E@-iztOKw#&xU z99NR+V*WOx1Y0g&v zIs$H|x82{~f~+*1R_x=}V6Eda;?RUo?CynuddF2&0tQuw^@oE8x22<5bPH`3-Ss6& z0E3lv!!YS1kaA~R+x=R7)K0fs?Ka-9k&5Xq-05E2u{dk47+v&2`vXrm-o3wR&>ITA zK=T>`Ab!!yE!IfF%YDn-=-QBFN@t3*>*F-fzNRmLLi@e{15ir?1QY-O00;meg7sFD wYYgBHAcFN)CU2fqv<(0Ndgqf_4K4&Ag7sFDiwznA{0)<*4J8KN4gdfE0AhX=pa1{> diff --git a/BMA.EHR.Report.Service/Reports/18-แบบรายงานการประเมินผลการทดลองปฏิบัติหน้าที่ราชการ สำหรับประธาน-1.trdp b/BMA.EHR.Report.Service/Reports/18-แบบรายงานการประเมินผลการทดลองปฏิบัติหน้าที่ราชการ สำหรับประธาน-1.trdp index de44fb3d418d553bb67c8ac684b732f9ecac0940..cf1790c11f08e6a814ddef9d7139cb6fb4b9eb56 100644 GIT binary patch delta 1910 zcmV-+2Z{K%5!ewJP)h>@6aWAK2mpn)Bv%9tZ{8aR000;(kr+LHK#^jrE_UqLtKFhW z(F?kEL7cYFs?FNMWXYA~CEZig1xVWg#V++Wx7&cMC^EDNuqC_5|3*J$g=g)okL1_)O z9M_X>n>DY2%jK(oOO&01MrcRNUyuxqCA>WVJo#w4k9)kDoTB=N&V9&b%abK_ z;6jc2h;uA$kb~Yn)GDN(GnHx7lS0dxTV3~ESpcQ0$$c>j82Ks8{ zS{(Cb$BM+G#v4)-JgOA+sSy!oQ7RS!|8?LW0!l9dwC4ll{hv8fUc&G0NfC5fU}$lE z8Pb&u$58pyy^iCZ4g7~8hzkHSnKYlU)XpFUbmGK+-f1bU_wgzoViRE~+6o!A0&WE` zbK}4y-JBID^Fv|OA_y~z&aXE_Xa^utsxRejeuDlsQ8Q8ME^*^;!_0Y2q)a5cGuk~& z16*bgq~AMAUj(}H?^XN9NYYYlQ+NO?Nta>S1zaCP8YBG!tVk!n5J4-y1^$1KyAN&; z!PsMeO;5RF0{ctz!G2cB#-`|G;2(7re5;B6PCo)$g?VACsKuAmZvy{cI#mbjViZC| zd_89q7MJwd9DhY8#jyF_|C;E5q+xQA>S2LHRx4Bssdy5k7UzT1MI|SY`YT{crj-gD zz5>!7!RkdLbTvv%h#fd0b5>=sW)D=d#k)*@&j70NjPFj1I9;0$=5mTIFc$;xt>HSx zACVb-UYJ?Z60v8ruJKFWxHu4sJ|lq!nLT4?8xBhF-yfp!N3u+h2sao%F zL_#yOPiR&tO!!WgkH@OB6_7^T@A0A75!s#~wV+Db+(MWI8 zkd?k>QV6A>|DA}?aUGG|v}?$6u`3DWGV7`9*#TWFs1jN@>V(A@>U@xhe7$Mz1Nk zOsa(WONP%S7HA#9DiEo77yfra;NP+X?r8DcVyEFf*i_+Fv%kX@i#^zHqqoz4efZsi zm)ipt3yiu~(2H0Zg#FN(22Q&EV0DphA=fjjhDD9n&05V$ED@trHOL!50j|hMpG*(h z$?G9om_QFCP}&8Srz?yo5Q~H{#UQIo&lySQUkGx_q{2DN3M#2->r5$>NXqgPW{AX# z-Njy09h9&PQ=DRJQaecq#B$+(nv-lh(MU;6EUJFF(vE@TT3 zr{hUAIw8_tWJnB`sW{<@c4<_ACoYJ?FBdhXSmf^)*>P%@9QDELiMVHfjlFPqhtT)E zguBHsl4WSnn}!gLMWx82!6UK2Zs?vww>w9>KRET#=Ebx4--WXa;|rf2l%B%THt#HX zeLq8|6?{jB#`)tS{Ncepjy4Q3fi}wWCBtfCK@n}-c8ykKi0`23hZVQXwuxt4%*iy~ z1UR`<&(qL*VdQzn;MG8X&&9s|U=eK?`fLM-LS*xh5su~1=Wf3D*=h3u#J>C$c>Ka= zaP!VbR|hy2!*R{`M`kPiHf;o3(^;CP$W=c4nu~Fj;knB5T+xDawl>Ycluy5CnB^H? zQe)oPsJW4?5(APa-(xbd$Y@3#=kkjMk(852W*UN%G`(@J0Q znii!}XkBQI_9q%C9(^7FKwpptpK`H^f}P5d{AVq)_q14DW<2*lP)h>@6aWAK2mpn) wB$H1E;SPniBv%9tZ{8aR000;(lRgM81BJFElWzzc0b`Sk2qp$a2mk;80E_&JZ2$lO delta 1895 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 S003bOlQaw^215-10001c5-M!~ delta 2832 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 K2H6h)0002P1BaRb delta 3299 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 diff --git a/BMA.EHR.Report.Service/Reports/41-แบบ ขร3 บัญชีรายชื่อข้าราชการผู้ขอพระราชทานเครื่องราชฯ.trdp b/BMA.EHR.Report.Service/Reports/41-แบบ ขร3 บัญชีรายชื่อข้าราชการผู้ขอพระราชทานเครื่องราชฯ.trdp index 69cadd262fb27e01b924d438054bdda60408b49e..9335984d49f6da60dc4bddf4b6a92a09f4178640 100644 GIT binary patch delta 2205 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 diff --git a/BMA.EHR.Report.Service/Reports/42-แบบ ขร4 บัญชีแสดงคุณสมบัติของข้าราชการซึ่งเสนอขอเครื่องราชฯ.trdp b/BMA.EHR.Report.Service/Reports/42-แบบ ขร4 บัญชีแสดงคุณสมบัติของข้าราชการซึ่งเสนอขอเครื่องราชฯ.trdp index 14bfefbd9a80e78fc8cd7d60e00eeb3eb5082d2f..1b78a9ce0cd30c7eacee24efe7553d315ff2d334 100644 GIT binary patch delta 3107 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 diff --git a/BMA.EHR.Report.Service/Reports/44-บัญชีแสดงจำนวนชั้นตราเครื่องราชฯ.trdp b/BMA.EHR.Report.Service/Reports/44-บัญชีแสดงจำนวนชั้นตราเครื่องราชฯ.trdp index c5e1ee1c726a9b18da5ebe9e8bae1ed8e5961945..3a4b8c9428325369a61ee9904a80802ac49b9e1a 100644 GIT binary patch delta 2089 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 R05+2l2`>YZjU|&p2}lm9!Ri12 delta 2035 zcmV@6aWAK2mtZ{8&{(a?|RJ#0020V7c&KIZxc5hkxw>%u-$zd zYoBEH-}aq-xsbxH8f{fYw$Beg|NalQ|MvLBg<=8yU{tDR$(o2IwBZ;stl3iDwB{ya zHT(8ZCU)_{r=N`9G|HuljlMJU_B^RKrj5=PV<>mWEKe15>&~=3XH+L*GnJYVLpSuI zF%cV0k?-@RyE#iQe^oK_;wu?{&>~gmZM*zsJYJohH;Q^yvyFmLG4E)zrDD7SV-W=L zlGpprfmXIX7=l#F7auLy<8IdASbn1sdn< zdj-SGl7cHG%jS({uA-b?(Z8=*=!S8ZOv3!ppi?f}F%SO=u%D`?YbKWJa_xnwcq;Ct|}i^{rm0kwLN3!OmOkJjTvL>>Ocd3p@MR*@W!h z*j>iXE9@*{cLmDXSMsSYvd^&N!q-Kp`5X%0NHyD#*ud_6>?}dK*KI?pMzV+4*@cor z06@xrhwK`5AASDW!sYXSOSrV&DZmj~fWz8YGA)ZR?TL`f z))QhKC~+vIl;<`GqKln9PChUnBq4GRuGxCQoSleW(F;{#hqtVMyiqBbmLUxDWH{=_ zP&S02Zk*~ERlgmerB|Q#xQY^m5VHvR*|fc#U*$Q3}cFK%(ssKjVr0~?lB5x$}bg>ZjGk#RMUDvIVk zh?*)D^8X7*qgqnoXf-;HM$QgL8HJ;@=r|fZ%^YR5;Z#<#woz4+$POnuqB3WPs2-EU zZaX@n(r1aNOpvH2C_1K6rDFxoy@s^Eup0|nRj^VgdZA7s%AxlLkDnRe*&?$4hsPWX*khM;)%qH5-Fx7f{`qn zcPJxi^)Rbp_W=zAxGNA5SQKF(7RTI%5{M1aFae7l)aAedcA5|c*@0F~;B^BO?G;qp zhVV%P3ilyYw+pcoM|93&D(?uqwxM!eirD%iqA#d_5kP%Xrzr8X z8EuIPHefmo(l+QtQ$%`Nkk|oiZ(-<{q#+rmK7^e=5irn#>2E`L_93lCAq@=vz9xVJ zpn~Qq53(&L+7g|~WXr}ZS}D)Qji6*I2l>szmE2_hw^&Uu}7Y?2ZN;<@)x{rjNG0Om5bC+ms(wK5lXV%7-07dwu zY!Se39t#KU?J0H}thZIBed~lklKKg;vH6XEL!V(}Is#@Eur4lfZ~5Y#vZ!g7exzJ( zco2jzS$zLzk=|5Igb#WMxVj=X8{)+fk16g zIDo_}?oPSGWRqiT?MU*Za67{J21Xss8YhjZcF$}j=*+a21-KnSW?NvY1JDg5^|&X0 zKCs3Czv93I+7c9B>w2_g$&=P`{7P8wv{TP5FM*D%C`0;Gg*M+3Q`+&}mEWW-I&XM> zQZ|8>raH<+@M6roy~T4!SO~i}WS)qrmvlR$v<-0+azmM}-XT|dYxi*ylqSabzF6Tr zuKU1OAcw&e_9ib!5=IG^OyoMf0?D3#7dw+CK--ntFhiFCdcM022?Ddhti9u9_$3+Y zj}*2XY^wvNCSz)IOo0tkaG}{0fWm#dqVNdrfSFZ12#5?xYl>ozD6n}L3hW8sj+$Rl zbph?N&~JHR@wRu~Ro636hNif$?nrvVdT$_Eirz}eTE7?nE#Hp(ZPlK#{&SdrzX>zk zJm%%4s$RqcJVm{ib72>JOWYY!a|pTYgY1EDfF0kt_)K;|AYI?D`mVeo?P&e!^}oSC z(bN0MoY0Pcy`Kz3i0%u~GI2fzg?}sbg}u4h632|L*cR;vuhpV|^$`7y|9D(^gA-RC z;jl+KQjKx?EGTE#^es;nP3vWUqjKG}h#)6N39q`9ug;P(58ov+5!0%bYE`Hz%Ee&c z=#@Fs@}JmP$wG=Y+v zHTmgJ4{y_Yp1z>sz>@UkkN`H|6;aM85Hd>@^(E20vLQYonjr!tf}un#Pw7GZ537CE zE*7{b1EU9q<9NL3@w^~lJkH*MUHBJJO9KQH000080P+DFlOhP=4e|jSSECN^dd&v_ R063En2`>Zk0UMJ-2}mPV$6x>e diff --git a/BMA.EHR.Report.Service/Reports/46-ประวัติสำหรับการเสนอขอพระราชทานเหรียญจักรพรรดิมาลา.trdp b/BMA.EHR.Report.Service/Reports/46-ประวัติสำหรับการเสนอขอพระราชทานเหรียญจักรพรรดิมาลา.trdp index 19364fbf3eb4a1bf6cacceb2985ede7f52161ace..433a030499c5b90a79b7510b1cb908b2f7896853 100644 GIT binary patch delta 1850 zcmV-A2gUf{5&RGsP)h>@6aWAK2ml(6C07mbGH1UA000;)l{~$CN z8)T9#$BwhwElEmW=-P!iYd@>j)fSN@Bg;#=Pt7Q}8w}FcN$R~6n$UH$6xMBJ@_%#m zFWKF5Cs{hlFU?EI5`zhPp1XVW-0yzRb1%A-E^IU`>09KsOvf(EStTP&$gVnuY1hhf z+q?5cQND2glIsXUUp3*C?&76N!7aNHNRBVR<({AdQ0(;gF>bid4~E{dU`yZlHD23G+KdJKXeSNgbF_<2GW>fnpVHc#FtH#gOlRqz>PwpKM$_NB%6F`z%tv8;s<3 zFi_icko%i3L_P4O^ZB6dfgPp3Qj>4MCuW;D{TtXJ4}0p68lfjIfG-`!qr-GamX>t; zvg@puON8^Eg= zS6}^yxWB`=@QjT19_7U&+~3CiF79tdCgc7?iG(Amaz9q(u}~%5(33HSXsz*vc1Xd0 zpw{3iIm5=2qn3tmI(O42(ikgT1G&5%MYG~qra@Wkc}^n~8RlGAVFSV?b)0cR4aa51 z$-bkyHZaabW}FM$IG4s62e$B}K^OahX%LuUc;sfY@eP4sG7+B9vSgqR%0_UTGz_BY zV1brBp@9}%JV#fYJS}7Y3HE(hNb;S34&nVn)ehI7X%+Z3sTXW%I+1P9b6BIZmi~w~ z!M@7B4{eCDGcKTJrvY__0!llX0Y!5r8Bu}={5ncU=&GMcB_d+>Bh$`eS+lA3lLRbs45Ii+F+iB)&9Hy@y8xYQY2 zGn^eJu*suCtVw`M#iT@nH3cVsqD=-^(q^J@NlhFX5)WM)x#F=VX-WdK-Ap(HLk&f- zkGlhPGE7ULH|<)oCy~N5^weQ3Ipv^O=wZ6&d>|(5lQ*h2BQxUIonuBR=H|xl9Ql#B zcmyuNx4pMg zDRy{*9iCoCB-f!lAI;j7q5d$mP5Brm(l9rr;V{#ujfN>-H9iatU$R4DNQLB~D{?SD z<=`;Wr-OsFqnNuBhg}o0?=`zHf_-1)-P{BlnkflS6$uYL6(`P~CSxI8H+JBHMNe2m zilm&MlJcyP^3W4=;+SWD!qoUGxWu{_+w8RQy@OaG*2dhEuON$n>A3N`@^_mkD3GX7mg(qIpci%V@>^Q%D_+Cmd=cI*ypH=5 zc8|*e00Fno{|8V@0|XQR000O88jdBCcn9GQ8jdAb4e&B&zXkvR7%`J)2reHQjwM%! o{PcO10002C0000J00000000000000000)z_2qp&U2LJ#70AB)an*aa+ delta 1951 zcmV;Q2VnU85a1CQP)h>@6aWAK2mtv38&~Md=Qkq<003k(kr*<6TWj1#6n-!CKL`~{ z3#qiLy?EWM6YPXsNE3|LO`etA$y!(|En02u^eHX|r-ec;cAQPyfF07b34x|dx7#0<&qQNF5W7=9F@| zLw7PK?;qcLg;gMY z;(Kep_ctwn_U~YA&-Y&Y-VgZyR9JY1IzRc|HeU2lnHhQOd%M2(v+vzSgKMG{{5J89 zJJ{qo{0nql*1>#Ej&xgqE79)Hnnn|7b&gmrapGEoFrTkoiNc%(HI;C1hvHp`;;kv= z5bctZD+OpzE7LK&p^F;`(tmy*z=*Zr1^mZVK@vn67{F}4QMsTx(AY++vEE4=7 z8FPw%7DhhHs{t3o!Idzi`Pi_ljqnOX9xh&tNq_`|+9(96rym1;c^32mej%fWfT1WV zCOjIjdx9;0)M4Y3VK6x|bh2QJr@%FgSdS8mX0>gc40bSXaoX_KK_Qxof>|h-VZ?OA z=Z$r|ej@q(2Y!D`!Zh(V0cYW;!&zpKWwNk;!m!PZ;*7jEey$cAm8Ds$X@b360=DvT zfh`%lY>m@n>yfqCaS&ykaOsHfVdOX4q)f#Po2ncyU)C#ZC3)c9WK+A$Ro4?uX(ikb6261>h zie}9=jRs}1>)NfL$S~)H1vVhOq>eHU%&;A19Cq^c<+V?pd%- zqp4f9f*oC!LVP|BRq4&1280`<;;A@^rxO%U+L4T>y>5u!-T8IT zg;8-(p2Wckii5%-$3b2xm&*H?SRN$SPEdXnEkBH{ny|bbEyMC`a}?7nvV=pzq!Zeo zAlerXo%WStejl{oJOw<4ElOg4m-6To${r-dy;Hb@c$nPNz}5t6dRTcc88uMz7=QQ1 zo)fg(BvP`CAOA=x9sUGSDU2T}!+EOhfu|Ev9zjx8)vU9qDq~&75f!UQF1pj5IdsKf zoim0epBl!o$wDKk2`FU(QiVv(012e&=t|p6HLj|u!$R=Tv51pA)r6*h5S86_${`$Q ztctxU5sK3>T1B~GHPbzbRA!;44r&3IawWMN^#!a=5w8w)cYXM7MAzGSDvmuC3Ez7nPMtc9$3nVl+`uIHNFzB^zDkb$G6gHQp-;mc}y884mnbraNZ(+kW|&!_Zn*KgAJ5M zHLCOzk{WU8cOM;TUT+iUieWWoh($wg3PC6951J0000000000003)~PzWXlO$Y!0007dXwEX}8