From e1b5abe91f9ab7816d5692a7531c87999f60323f Mon Sep 17 00:00:00 2001 From: Kittapath Date: Mon, 16 Oct 2023 18:03:39 +0700 Subject: [PATCH] =?UTF-8?q?=E0=B9=81=E0=B8=81=E0=B9=89=20excwl=20=E0=B8=AA?= =?UTF-8?q?=E0=B8=A3=E0=B8=B8=E0=B8=9B=E0=B8=82=E0=B9=89=E0=B8=AD=E0=B8=A1?= =?UTF-8?q?=E0=B8=B9=E0=B8=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Services/PeriodExamService.cs | 514 +++++++++++++++++++--------------- 1 file changed, 284 insertions(+), 230 deletions(-) diff --git a/Services/PeriodExamService.cs b/Services/PeriodExamService.cs index c989cbd..af2b18c 100644 --- a/Services/PeriodExamService.cs +++ b/Services/PeriodExamService.cs @@ -14,6 +14,7 @@ using Newtonsoft.Json.Linq; using OfficeOpenXml; using BMA.EHR.Domain.Models.Placement; using OfficeOpenXml.Style; +using System.Text; namespace BMA.EHR.Recurit.Exam.Service.Services { @@ -1406,6 +1407,12 @@ namespace BMA.EHR.Recurit.Exam.Service.Services OccupationPositionType = c.OccupationPositionType, OccupationTelephone = c.OccupationTelephone, RegisterDate = c.RegisterDate, + PositionName = c.PositionExam.PositionName, + PositionLevelName = c.PositionExam.PositionLevelName, + + ContactFullName = $"{c.ContactPrefixName}{c.ContactFirstname} {c.ContactLastname}", + ContactRelations = c.ContactRelations, + ContactTel = c.ContactTel, Number = c.Number, ExamIdenNumber = c.ExamIdenNumber, @@ -1440,67 +1447,122 @@ namespace BMA.EHR.Recurit.Exam.Service.Services summarySheet.TabColor = System.Drawing.Color.Black; // summarySheet.DefaultRowHeight = 17; summarySheet.Row(1).Style.Font.Bold = true; - summarySheet.Cells[1, 1].Value = "สถานะสอบคัดเลือก"; - summarySheet.Cells[1, 2].Value = "เลขบัตรประชาชน"; - summarySheet.Cells[1, 3].Value = "ชื่อ-สกุล"; - summarySheet.Cells[1, 4].Value = "สัญชาติ"; - summarySheet.Cells[1, 5].Value = "วันเกิด"; - summarySheet.Cells[1, 6].Value = "อายุ"; - summarySheet.Cells[1, 7].Value = "ศาสนา"; - summarySheet.Cells[1, 8].Value = "โทรศัพท์"; - summarySheet.Cells[1, 9].Value = "โทรศัพท์มือถือ"; - summarySheet.Cells[1, 10].Value = "อีเมล"; - summarySheet.Cells[1, 11].Value = "ความรู้ความสามารถพิเศษ"; - summarySheet.Cells[1, 12].Value = "ที่อยู่ตามทะเบียนบ้าน"; - summarySheet.Cells[1, 13].Value = "จังหวัดที่อยู่ตามทะเบียนบ้าน"; - summarySheet.Cells[1, 14].Value = "เขต/อำเภอที่อยู่ตามทะเบียนบ้าน"; - summarySheet.Cells[1, 15].Value = "ตำบล/แขวงที่อยู่ตามทะเบียนบ้าน"; - summarySheet.Cells[1, 16].Value = "รหัสไปรษณีย์ที่อยู่ตามทะเบียนบ้าน"; - summarySheet.Cells[1, 17].Value = "ที่อยู่ปัจจุบัน"; - summarySheet.Cells[1, 18].Value = "จังหวัดที่อยู่ปัจจุบัน"; - summarySheet.Cells[1, 19].Value = "เขต/อำเภอที่อยู่ปัจจุบัน"; - summarySheet.Cells[1, 20].Value = "ตำบล/แขวงที่อยู่ปัจจุบัน"; - summarySheet.Cells[1, 21].Value = "รหัสไปรษณีย์ที่อยู่ปัจจุบัน"; + summarySheet.Cells[1, 1, 2, 1].Value = "ลำดับ"; + summarySheet.Cells[1, 1, 2, 1].Merge = true; + summarySheet.Cells[1, 2, 2, 2].Value = "ตำแหน่งที่สมัครสอบ"; + summarySheet.Cells[1, 2, 2, 2].Merge = true; + summarySheet.Cells[1, 3, 2, 3].Value = "ชื่อ-สกุล"; + summarySheet.Cells[1, 3, 2, 3].Merge = true; + summarySheet.Cells[1, 4, 2, 4].Value = "สัญชาติ"; + summarySheet.Cells[1, 4, 2, 4].Merge = true; + summarySheet.Cells[1, 5, 2, 5].Value = "ศาสนา"; + summarySheet.Cells[1, 5, 2, 5].Merge = true; + summarySheet.Cells[1, 6, 2, 6].Value = "วันเดือนปีเกิด"; + summarySheet.Cells[1, 6, 2, 6].Merge = true; + summarySheet.Cells[1, 7, 2, 7].Value = "อายุ"; + summarySheet.Cells[1, 7, 2, 7].Merge = true; + summarySheet.Cells[1, 8, 2, 8].Value = "โทรศัพท์"; + summarySheet.Cells[1, 8, 2, 8].Merge = true; + summarySheet.Cells[1, 9, 2, 9].Value = "อีเมล"; + summarySheet.Cells[1, 9, 2, 9].Merge = true; + summarySheet.Cells[1, 10, 2, 10].Value = "เลขบัตรประจำตัวประชาชน"; + summarySheet.Cells[1, 10, 2, 10].Merge = true; + summarySheet.Cells[1, 11, 2, 11].Value = "วุฒิที่ใช้ในการสมัคร"; + summarySheet.Cells[1, 11, 2, 11].Merge = true; + summarySheet.Cells[1, 12, 2, 12].Value = "ชื่อปริญญา"; + summarySheet.Cells[1, 12, 2, 12].Merge = true; + summarySheet.Cells[1, 13, 2, 13].Value = "สาขาวิชา/วิชาเอก"; + summarySheet.Cells[1, 13, 2, 13].Merge = true; + summarySheet.Cells[1, 14, 2, 14].Value = "สถานศึกษา"; + summarySheet.Cells[1, 14, 2, 14].Merge = true; + summarySheet.Cells[1, 15, 2, 15].Value = "วันที่สำเร็จการศึกษา"; + summarySheet.Cells[1, 15, 2, 15].Merge = true; + summarySheet.Cells[1, 16, 2, 16].Value = "คะแนนเฉลี่ยสะสม"; + summarySheet.Cells[1, 16, 2, 16].Merge = true; + summarySheet.Cells[1, 17, 2, 17].Value = "ประเภทสถานศึกษา"; + summarySheet.Cells[1, 17, 2, 17].Merge = true; + summarySheet.Cells[1, 18, 2, 18].Value = "วุฒิการศึกษาสูงสุด"; + summarySheet.Cells[1, 18, 2, 18].Merge = true; + summarySheet.Cells[1, 19, 2, 19].Value = "ประเภทตำแหน่งปัจจุบัน"; + summarySheet.Cells[1, 19, 2, 19].Merge = true; + summarySheet.Cells[1, 20, 2, 20].Value = "ชื่อตำแหน่ง"; + summarySheet.Cells[1, 20, 2, 20].Merge = true; + summarySheet.Cells[1, 21, 2, 21].Value = "เงินเดือน"; + summarySheet.Cells[1, 21, 2, 21].Merge = true; + summarySheet.Cells[1, 22, 2, 22].Value = "กลุ่ม/ฝ่าย"; + summarySheet.Cells[1, 22, 2, 22].Merge = true; + summarySheet.Cells[1, 23, 2, 23].Value = "กอง"; + summarySheet.Cells[1, 23, 2, 23].Merge = true; + summarySheet.Cells[1, 24, 2, 24].Value = "สังกัด"; + summarySheet.Cells[1, 24, 2, 24].Merge = true; + summarySheet.Cells[1, 25, 2, 25].Value = "เบอร์โทรที่ทำงาน"; + summarySheet.Cells[1, 25, 2, 25].Merge = true; - summarySheet.Cells[1, 22].Value = "ประเภทตำแหน่งปัจจุบัน"; - summarySheet.Cells[1, 23].Value = "ชื่อตำแหน่งปัจจุบัน"; - summarySheet.Cells[1, 24].Value = "เงินเดือน ตำแหน่งปัจจุบัน"; - summarySheet.Cells[1, 25].Value = "กลุ่ม/ฝ่าย ตำแหน่งปัจจุบัน"; - summarySheet.Cells[1, 26].Value = "กอง ตำแหน่งปัจจุบัน"; - summarySheet.Cells[1, 27].Value = "สังกัด ตำแหน่งปัจจุบัน"; - summarySheet.Cells[1, 28].Value = "เบอร์ที่ทำงาน ตำแหน่งปัจจุบัน"; + summarySheet.Cells[1, 26, 1, 31].Value = "ประวัติการทำงาน (ตั้งแต่เริ่มปฏิบัติงานกับกรุงเทพฯ - ปัจจุบัน)"; + summarySheet.Cells[1, 26, 1, 31].Merge = true; + summarySheet.Cells[2, 26].Value = "ตำแหน่ง"; + summarySheet.Cells[2, 27].Value = "ประเภท"; + summarySheet.Cells[2, 28].Value = "เริ่ม"; + summarySheet.Cells[2, 29].Value = "สิ้นสุด"; + summarySheet.Cells[2, 30].Value = "ระยะเวลา"; + summarySheet.Cells[2, 31].Value = "ระยะเวลารวม"; - summarySheet.Cells[1, 29].Value = "วุฒิที่ใช้สมัครสอบ"; - summarySheet.Cells[1, 30].Value = "ชื่อปริญญา"; - summarySheet.Cells[1, 31].Value = "สาขาวิชา/วิชาเอก"; - summarySheet.Cells[1, 32].Value = "ชื่อสถานศึกษา"; - summarySheet.Cells[1, 33].Value = "ประเภทสถานศึกษา"; - summarySheet.Cells[1, 34].Value = "วันที่สำเร็จการศึกษา"; - summarySheet.Cells[1, 35].Value = "คะแนนเฉลี่ยสะสม"; - summarySheet.Cells[1, 36].Value = "วุฒิการศึกษาสูงสุด"; + summarySheet.Cells[1, 32, 1, 36].Value = "ที่อยู่ที่สามารถติดต่อได้"; + summarySheet.Cells[1, 32, 1, 36].Merge = true; + summarySheet.Cells[2, 32].Value = "เลขที่"; + summarySheet.Cells[2, 33].Value = "ตำบล"; + summarySheet.Cells[2, 34].Value = "อำเภอ"; + summarySheet.Cells[2, 35].Value = "จังหวัด"; + summarySheet.Cells[2, 36].Value = "รหัสไปรษณีย์"; - summarySheet.Cells[1, 37].Value = "ประวัติการทำงาน ชื่อตำแหน่ง"; - summarySheet.Cells[1, 38].Value = "ประวัติการทำงาน ประเภท"; - summarySheet.Cells[1, 39].Value = "ประวัติการทำงาน เริ่ม"; - summarySheet.Cells[1, 40].Value = "ประวัติการทำงาน สิ้นสุด"; - summarySheet.Cells[1, 41].Value = "ประวัติการทำงาน ระยะเวลา"; + summarySheet.Cells[1, 37, 1, 41].Value = "ที่อยู่ตามทะเบียนบ้าน"; + summarySheet.Cells[1, 37, 1, 41].Merge = true; + summarySheet.Cells[2, 37].Value = "เลขที่"; + summarySheet.Cells[2, 38].Value = "ตำบล"; + summarySheet.Cells[2, 39].Value = "อำเภอ"; + summarySheet.Cells[2, 40].Value = "จังหวัด"; + summarySheet.Cells[2, 41].Value = "รหัสไปรษณีย์"; - summarySheet.Cells[1, 42].Value = "ลำดับที่สอบได้"; - summarySheet.Cells[1, 43].Value = "เลขประจำตัวสอบ"; - summarySheet.Cells[1, 44].Value = "เลขที่นั่งสอบ"; - summarySheet.Cells[1, 45].Value = "คะแนนเต็มภาค ก"; - summarySheet.Cells[1, 46].Value = "คะแนนภาค ก"; - summarySheet.Cells[1, 47].Value = "ผลสอบภาค ก"; - summarySheet.Cells[1, 48].Value = "คะแนนเต็มภาค ข"; - summarySheet.Cells[1, 49].Value = "คะแนนภาค ข"; - summarySheet.Cells[1, 50].Value = "ผลสอบภาค ข"; - summarySheet.Cells[1, 51].Value = "คะแนนเต็มภาค ค"; - summarySheet.Cells[1, 52].Value = "คะแนนภาค ค"; - summarySheet.Cells[1, 53].Value = "ผลสอบภาค ค"; - summarySheet.Cells[1, 54].Value = "ผลการสอบ"; - summarySheet.Cells[1, 55].Value = "วันที่สมัคร"; - summarySheet.Cells[1, 56].Value = "วันและเวลาที่สมัคร"; - int row = 2; + summarySheet.Cells[1, 42, 2, 42].Value = "บุคคลที่สามารถติดต่อได้"; + summarySheet.Cells[1, 42, 2, 42].Merge = true; + summarySheet.Cells[1, 43, 2, 43].Value = "เกี่ยวข้องเป็น"; + summarySheet.Cells[1, 43, 2, 43].Merge = true; + summarySheet.Cells[1, 44, 2, 44].Value = "โทรศัพท์"; + summarySheet.Cells[1, 44, 2, 44].Merge = true; + summarySheet.Cells[1, 45, 2, 45].Value = "สถานะสอบคัดเลือก"; + summarySheet.Cells[1, 45, 2, 45].Merge = true; + summarySheet.Cells[1, 46, 2, 46].Value = "ลำดับที่สอบได้"; + summarySheet.Cells[1, 46, 2, 46].Merge = true; + summarySheet.Cells[1, 47, 2, 47].Value = "เลขประจำตัวสอบ"; + summarySheet.Cells[1, 47, 2, 47].Merge = true; + summarySheet.Cells[1, 48, 2, 48].Value = "เลขที่นั่งสอบ"; + summarySheet.Cells[1, 48, 2, 48].Merge = true; + summarySheet.Cells[1, 49, 2, 49].Value = "คะแนนเต็มภาค ก"; + summarySheet.Cells[1, 49, 2, 49].Merge = true; + summarySheet.Cells[1, 50, 2, 50].Value = "คะแนนภาค ก"; + summarySheet.Cells[1, 50, 2, 50].Merge = true; + summarySheet.Cells[1, 51, 2, 51].Value = "ผลสอบภาค ก"; + summarySheet.Cells[1, 51, 2, 51].Merge = true; + summarySheet.Cells[1, 52, 2, 52].Value = "คะแนนเต็มภาค ข"; + summarySheet.Cells[1, 52, 2, 52].Merge = true; + summarySheet.Cells[1, 53, 2, 53].Value = "คะแนนภาค ข"; + summarySheet.Cells[1, 53, 2, 53].Merge = true; + summarySheet.Cells[1, 54, 2, 54].Value = "ผลสอบภาค ข"; + summarySheet.Cells[1, 54, 2, 54].Merge = true; + summarySheet.Cells[1, 55, 2, 55].Value = "คะแนนเต็มภาค ค"; + summarySheet.Cells[1, 55, 2, 55].Merge = true; + summarySheet.Cells[1, 56, 2, 56].Value = "คะแนนภาค ค"; + summarySheet.Cells[1, 56, 2, 56].Merge = true; + summarySheet.Cells[1, 57, 2, 57].Value = "ผลสอบภาค ค"; + summarySheet.Cells[1, 57, 2, 57].Merge = true; + summarySheet.Cells[1, 58, 2, 58].Value = "ผลการสอบ"; + summarySheet.Cells[1, 58, 2, 58].Merge = true; + summarySheet.Cells[1, 59, 2, 59].Value = "วันที่สมัคร"; + summarySheet.Cells[1, 59, 2, 59].Merge = true; + summarySheet.Cells[1, 60, 2, 60].Value = "วันและเวลาที่สมัคร"; + summarySheet.Cells[1, 60, 2, 60].Merge = true; + int row = 3; + int num = 1; foreach (var item in candidates) { @@ -1510,194 +1572,124 @@ namespace BMA.EHR.Recurit.Exam.Service.Services .Where(x => x.Candidate.Id == item.Id) .FirstOrDefaultAsync(); - // foreach (var education in educations) - // { - // summarySheet.Cells[row, 1].Value = GenerateStatusCandidate(item.Status); - // summarySheet.Cells[row, 2].Value = item.CitizenId; - // summarySheet.Cells[row, 3].Value = item.FullName; - // summarySheet.Cells[row, 4].Value = item.Nationality; - // summarySheet.Cells[row, 5].Value = item.DateOfBirth; - // summarySheet.Cells[row, 6].Value = item.Age; - // summarySheet.Cells[row, 7].Value = item.ReligionName; - // summarySheet.Cells[row, 8].Value = item.Telephone; - // summarySheet.Cells[row, 9].Value = item.MobilePhone; - // summarySheet.Cells[row, 10].Value = item.Email; - // summarySheet.Cells[row, 11].Value = item.Knowledge; - // summarySheet.Cells[row, 12].Value = item.RegistAddress; - // summarySheet.Cells[row, 13].Value = item.RegistProvinceName; - // summarySheet.Cells[row, 14].Value = item.RegistDistrictName; - // summarySheet.Cells[row, 15].Value = item.RegistSubDistrictName; - // summarySheet.Cells[row, 16].Value = item.RegistZipCode; - // summarySheet.Cells[row, 17].Value = item.CurrentAddress; - // summarySheet.Cells[row, 18].Value = item.CurrentProvinceName; - // summarySheet.Cells[row, 19].Value = item.CurrentDistrictName; - // summarySheet.Cells[row, 20].Value = item.CurrentSubDistrictName; - // summarySheet.Cells[row, 21].Value = item.CurrentZipCode; + summarySheet.Cells[row, 1].Value = num; + summarySheet.Cells[row, 2].Value = item.PositionName + item.PositionLevelName; + summarySheet.Cells[row, 3].Value = item.FullName; + summarySheet.Cells[row, 4].Value = item.Nationality; + summarySheet.Cells[row, 5].Value = item.ReligionName; + summarySheet.Cells[row, 6].Value = item.DateOfBirth; + summarySheet.Cells[row, 7].Value = item.Age; + summarySheet.Cells[row, 8].Value = item.Telephone; + summarySheet.Cells[row, 9].Value = item.Email; + summarySheet.Cells[row, 10].Value = item.CitizenId; - // summarySheet.Cells[row, 22].Value = item.OccupationPosition; - // summarySheet.Cells[row, 23].Value = item.OccupationSalary; - // summarySheet.Cells[row, 24].Value = item.OccupationGroup; - // summarySheet.Cells[row, 25].Value = item.OccupationPile; - // summarySheet.Cells[row, 26].Value = item.OccupationOrg; - // summarySheet.Cells[row, 27].Value = item.OccupationPositionType == null ? null : GenerateStatusOccupation(item.OccupationPositionType); - // summarySheet.Cells[row, 28].Value = item.OccupationTelephone; + summarySheet.Cells[row, 11].Value = education == null ? "-" : education.EducationLevelExamName; + summarySheet.Cells[row, 12].Value = education == null ? "-" : education.EducationName; + summarySheet.Cells[row, 13].Value = education == null ? "-" : education.EducationMajor; + summarySheet.Cells[row, 14].Value = education == null ? "-" : education.EducationLocation; + summarySheet.Cells[row, 15].Value = education == null ? "-" : (education.EducationEndDate == null ? "-" : education.EducationEndDate.Value.Date.ToThaiShortDate()); + summarySheet.Cells[row, 16].Value = education == null ? "-" : education.EducationScores; + summarySheet.Cells[row, 17].Value = education == null ? "-" : education.EducationType; + summarySheet.Cells[row, 18].Value = education == null ? "-" : education.EducationLevelHighName; - // summarySheet.Cells[row, 29].Value = education.EducationLevelExamName; - // summarySheet.Cells[row, 30].Value = education.EducationName; - // summarySheet.Cells[row, 31].Value = education.EducationMajor; - // summarySheet.Cells[row, 32].Value = education.EducationLocation; - // summarySheet.Cells[row, 33].Value = education.EducationType; - // summarySheet.Cells[row, 34].Value = education.EducationEndDate == null ? "-" : education.EducationEndDate.Value.Date.ToThaiShortDate(); - // summarySheet.Cells[row, 35].Value = education.EducationScores; - // summarySheet.Cells[row, 36].Value = education.EducationLevelHighName; + summarySheet.Cells[row, 19].Value = item.OccupationPositionType == null ? null : GenerateStatusOccupation(item.OccupationPositionType); + summarySheet.Cells[row, 20].Value = item.OccupationPosition; + summarySheet.Cells[row, 21].Value = item.OccupationSalary; + summarySheet.Cells[row, 22].Value = item.OccupationGroup; + summarySheet.Cells[row, 23].Value = item.OccupationPile; + summarySheet.Cells[row, 24].Value = item.OccupationOrg; + summarySheet.Cells[row, 25].Value = item.OccupationTelephone; + + summarySheet.Cells[row, 32].Value = item.CurrentAddress; + summarySheet.Cells[row, 33].Value = item.CurrentProvinceName; + summarySheet.Cells[row, 34].Value = item.CurrentDistrictName; + summarySheet.Cells[row, 35].Value = item.CurrentSubDistrictName; + summarySheet.Cells[row, 36].Value = item.CurrentZipCode; + + summarySheet.Cells[row, 37].Value = item.RegistAddress; + summarySheet.Cells[row, 38].Value = item.RegistProvinceName; + summarySheet.Cells[row, 39].Value = item.RegistDistrictName; + summarySheet.Cells[row, 40].Value = item.RegistSubDistrictName; + summarySheet.Cells[row, 41].Value = item.RegistZipCode; + + summarySheet.Cells[row, 42].Value = item.ContactFullName; + summarySheet.Cells[row, 43].Value = item.ContactRelations; + summarySheet.Cells[row, 44].Value = item.ContactTel; + summarySheet.Cells[row, 45].Value = GenerateStatusCandidate(item.Status); + + summarySheet.Cells[row, 46].Value = item.Number; + summarySheet.Cells[row, 47].Value = item.ExamIdenNumber; + summarySheet.Cells[row, 48].Value = item.SeatNumber; + summarySheet.Cells[row, 49].Value = item.PointTotalA; + summarySheet.Cells[row, 50].Value = item.PointA; + summarySheet.Cells[row, 51].Value = item.ResultA; + summarySheet.Cells[row, 52].Value = item.PointTotalB; + summarySheet.Cells[row, 53].Value = item.PointB; + summarySheet.Cells[row, 54].Value = item.ResultB; + summarySheet.Cells[row, 55].Value = item.PointTotalC; + summarySheet.Cells[row, 56].Value = item.PointC; + summarySheet.Cells[row, 57].Value = item.ResultC; + summarySheet.Cells[row, 58].Value = item.Pass; + summarySheet.Cells[row, 59].Value = item.CreatedAt.Date.ToThaiShortDate(); + summarySheet.Cells[row, 60].Value = item.RegisterDate == null ? "-" : item.RegisterDate.Value.ToThaiShortDateTime(); - // summarySheet.Cells[row, 42].Value = item.Number; - // summarySheet.Cells[row, 43].Value = item.ExamIdenNumber; - // summarySheet.Cells[row, 44].Value = item.SeatNumber; - // summarySheet.Cells[row, 45].Value = item.PointTotalA; - // summarySheet.Cells[row, 46].Value = item.PointA; - // summarySheet.Cells[row, 47].Value = item.ResultA; - // summarySheet.Cells[row, 48].Value = item.PointTotalB; - // summarySheet.Cells[row, 49].Value = item.PointB; - // summarySheet.Cells[row, 50].Value = item.ResultB; - // summarySheet.Cells[row, 51].Value = item.PointTotalC; - // summarySheet.Cells[row, 52].Value = item.PointC; - // summarySheet.Cells[row, 53].Value = item.ResultC; - // summarySheet.Cells[row, 54].Value = item.Pass; - // summarySheet.Cells[row, 55].Value = item.CreatedAt.Date.ToThaiShortDate(); - // summarySheet.Cells[row, 56].Value = item.RegisterDate; - // row++; - // } var careers = await _context.Careers .AsQueryable() .OrderBy(x => x.DurationStart) .Where(x => x.Candidate.Id == item.Id) .ToListAsync(); + var yearDiff = 0; + var monthDiff = 0; + var dayDiff = 0; + var sb = new StringBuilder(); foreach (var career in careers) { - summarySheet.Cells[row, 1].Value = GenerateStatusCandidate(item.Status); - summarySheet.Cells[row, 2].Value = item.CitizenId; - summarySheet.Cells[row, 3].Value = item.FullName; - summarySheet.Cells[row, 4].Value = item.Nationality; - summarySheet.Cells[row, 5].Value = item.DateOfBirth; - summarySheet.Cells[row, 6].Value = item.Age; - summarySheet.Cells[row, 7].Value = item.ReligionName; - summarySheet.Cells[row, 8].Value = item.Telephone; - summarySheet.Cells[row, 9].Value = item.MobilePhone; - summarySheet.Cells[row, 10].Value = item.Email; - summarySheet.Cells[row, 11].Value = item.Knowledge; - summarySheet.Cells[row, 12].Value = item.RegistAddress; - summarySheet.Cells[row, 13].Value = item.RegistProvinceName; - summarySheet.Cells[row, 14].Value = item.RegistDistrictName; - summarySheet.Cells[row, 15].Value = item.RegistSubDistrictName; - summarySheet.Cells[row, 16].Value = item.RegistZipCode; - summarySheet.Cells[row, 17].Value = item.CurrentAddress; - summarySheet.Cells[row, 18].Value = item.CurrentProvinceName; - summarySheet.Cells[row, 19].Value = item.CurrentDistrictName; - summarySheet.Cells[row, 20].Value = item.CurrentSubDistrictName; - summarySheet.Cells[row, 21].Value = item.CurrentZipCode; - - summarySheet.Cells[row, 22].Value = item.OccupationPosition; - summarySheet.Cells[row, 23].Value = item.OccupationSalary; - summarySheet.Cells[row, 24].Value = item.OccupationGroup; - summarySheet.Cells[row, 25].Value = item.OccupationPile; - summarySheet.Cells[row, 26].Value = item.OccupationOrg; - summarySheet.Cells[row, 27].Value = item.OccupationPositionType == null ? null : GenerateStatusOccupation(item.OccupationPositionType); - summarySheet.Cells[row, 28].Value = item.OccupationTelephone; - - summarySheet.Cells[row, 29].Value = education == null ? "-" : education.EducationLevelExamName; - summarySheet.Cells[row, 30].Value = education == null ? "-" : education.EducationName; - summarySheet.Cells[row, 31].Value = education == null ? "-" : education.EducationMajor; - summarySheet.Cells[row, 32].Value = education == null ? "-" : education.EducationLocation; - summarySheet.Cells[row, 33].Value = education == null ? "-" : education.EducationType; - summarySheet.Cells[row, 34].Value = education == null ? "-" : (education.EducationEndDate == null ? "-" : education.EducationEndDate.Value.Date.ToThaiShortDate()); - summarySheet.Cells[row, 35].Value = education == null ? "-" : education.EducationScores; - summarySheet.Cells[row, 36].Value = education == null ? "-" : education.EducationLevelHighName; - - summarySheet.Cells[row, 37].Value = career.Position; - summarySheet.Cells[row, 38].Value = career.Type; - // summarySheet.Cells[row, 39].Value = career.Pile; - // summarySheet.Cells[row, 40].Value = career.Org; - summarySheet.Cells[row, 39].Value = career.DurationStart == null ? "-" : career.DurationStart.Date.ToThaiShortDate(); - summarySheet.Cells[row, 40].Value = career.DurationEnd == null ? "-" : career.DurationEnd.Date.ToThaiShortDate(); - summarySheet.Cells[row, 41].Value = career.RangeDate; - - summarySheet.Cells[row, 42].Value = item.Number; - summarySheet.Cells[row, 43].Value = item.ExamIdenNumber; - summarySheet.Cells[row, 44].Value = item.SeatNumber; - summarySheet.Cells[row, 45].Value = item.PointTotalA; - summarySheet.Cells[row, 46].Value = item.PointA; - summarySheet.Cells[row, 47].Value = item.ResultA; - summarySheet.Cells[row, 48].Value = item.PointTotalB; - summarySheet.Cells[row, 49].Value = item.PointB; - summarySheet.Cells[row, 50].Value = item.ResultB; - summarySheet.Cells[row, 51].Value = item.PointTotalC; - summarySheet.Cells[row, 52].Value = item.PointC; - summarySheet.Cells[row, 53].Value = item.ResultC; - summarySheet.Cells[row, 54].Value = item.Pass; - summarySheet.Cells[row, 55].Value = item.CreatedAt.Date.ToThaiShortDate(); - summarySheet.Cells[row, 56].Value = item.RegisterDate; - row++; + if (career.DurationEnd < career.DurationStart) + { + var rangeObj = CalculateBetweenDateV2Value(career.DurationEnd, career.DurationStart); + yearDiff = yearDiff + rangeObj.years; + monthDiff = monthDiff + rangeObj.months; + dayDiff = dayDiff + rangeObj.days; + } + else + { + var rangeObj = CalculateBetweenDateV2Value(career.DurationStart, career.DurationEnd); + yearDiff = yearDiff + rangeObj.years; + monthDiff = monthDiff + rangeObj.months; + dayDiff = dayDiff + rangeObj.days; + } + if (dayDiff >= 30) + { + monthDiff = monthDiff + (int)(dayDiff / 30); + dayDiff = dayDiff % 30; + } + if (monthDiff >= 12) + { + yearDiff = yearDiff + (int)(monthDiff / 12); + monthDiff = monthDiff % 12; + } + sb.Clear(); + sb.Append(yearDiff == 0 ? "" : $"{yearDiff} ปี "); + sb.Append(monthDiff == 0 ? "" : $"{monthDiff} เดือน "); + sb.Append(dayDiff == 0 ? "" : $"{dayDiff} วัน "); } - if (careers.Count() == 0) + var _career = false; + foreach (var career in careers) { - summarySheet.Cells[row, 1].Value = GenerateStatusCandidate(item.Status); - summarySheet.Cells[row, 2].Value = item.CitizenId; - summarySheet.Cells[row, 3].Value = item.FullName; - summarySheet.Cells[row, 4].Value = item.Nationality; - summarySheet.Cells[row, 5].Value = item.DateOfBirth; - summarySheet.Cells[row, 6].Value = item.Age; - summarySheet.Cells[row, 7].Value = item.ReligionName; - summarySheet.Cells[row, 8].Value = item.Telephone; - summarySheet.Cells[row, 9].Value = item.MobilePhone; - summarySheet.Cells[row, 10].Value = item.Email; - summarySheet.Cells[row, 11].Value = item.Knowledge; - summarySheet.Cells[row, 12].Value = item.RegistAddress; - summarySheet.Cells[row, 13].Value = item.RegistProvinceName; - summarySheet.Cells[row, 14].Value = item.RegistDistrictName; - summarySheet.Cells[row, 15].Value = item.RegistSubDistrictName; - summarySheet.Cells[row, 16].Value = item.RegistZipCode; - summarySheet.Cells[row, 17].Value = item.CurrentAddress; - summarySheet.Cells[row, 18].Value = item.CurrentProvinceName; - summarySheet.Cells[row, 19].Value = item.CurrentDistrictName; - summarySheet.Cells[row, 20].Value = item.CurrentSubDistrictName; - summarySheet.Cells[row, 21].Value = item.CurrentZipCode; - - summarySheet.Cells[row, 22].Value = item.OccupationPosition; - summarySheet.Cells[row, 23].Value = item.OccupationSalary; - summarySheet.Cells[row, 24].Value = item.OccupationGroup; - summarySheet.Cells[row, 25].Value = item.OccupationPile; - summarySheet.Cells[row, 26].Value = item.OccupationOrg; - summarySheet.Cells[row, 27].Value = item.OccupationPositionType == null ? null : GenerateStatusOccupation(item.OccupationPositionType); - summarySheet.Cells[row, 28].Value = item.OccupationTelephone; - - summarySheet.Cells[row, 29].Value = education == null ? "-" : education.EducationLevelExamName; - summarySheet.Cells[row, 30].Value = education == null ? "-" : education.EducationName; - summarySheet.Cells[row, 31].Value = education == null ? "-" : education.EducationMajor; - summarySheet.Cells[row, 32].Value = education == null ? "-" : education.EducationLocation; - summarySheet.Cells[row, 33].Value = education == null ? "-" : education.EducationType; - summarySheet.Cells[row, 34].Value = education == null ? "-" : (education.EducationEndDate == null ? "-" : education.EducationEndDate.Value.Date.ToThaiShortDate()); - summarySheet.Cells[row, 35].Value = education == null ? "-" : education.EducationScores; - summarySheet.Cells[row, 36].Value = education == null ? "-" : education.EducationLevelHighName; - - summarySheet.Cells[row, 42].Value = item.Number; - summarySheet.Cells[row, 43].Value = item.ExamIdenNumber; - summarySheet.Cells[row, 44].Value = item.SeatNumber; - summarySheet.Cells[row, 45].Value = item.PointTotalA; - summarySheet.Cells[row, 46].Value = item.PointA; - summarySheet.Cells[row, 47].Value = item.ResultA; - summarySheet.Cells[row, 48].Value = item.PointTotalB; - summarySheet.Cells[row, 49].Value = item.PointB; - summarySheet.Cells[row, 50].Value = item.ResultB; - summarySheet.Cells[row, 51].Value = item.PointTotalC; - summarySheet.Cells[row, 52].Value = item.PointC; - summarySheet.Cells[row, 53].Value = item.ResultC; - summarySheet.Cells[row, 54].Value = item.Pass; - summarySheet.Cells[row, 55].Value = item.CreatedAt.Date.ToThaiShortDate(); - summarySheet.Cells[row, 56].Value = item.RegisterDate; + summarySheet.Cells[row, 26].Value = career.Position; + summarySheet.Cells[row, 27].Value = career.Type; + summarySheet.Cells[row, 28].Value = career.DurationStart == null ? "-" : career.DurationStart.Date.ToThaiShortDate(); + summarySheet.Cells[row, 29].Value = career.DurationEnd == null ? "-" : career.DurationEnd.Date.ToThaiShortDate(); + summarySheet.Cells[row, 30].Value = career.RangeDate; + if (_career == false) + { + summarySheet.Cells[row, 31].Value = sb.ToString(); + _career = true; + } row++; } + num = num + 1; } summarySheet.Cells[summarySheet.Dimension.Address].AutoFitColumns(); package.Save(); @@ -2279,6 +2271,68 @@ namespace BMA.EHR.Recurit.Exam.Service.Services } await _contextMetadata.SaveChangesAsync(); } + + + public CalculateBetweenDateV2ValueObj CalculateBetweenDateV2Value(DateTime startDate, DateTime endDate) + { + // if (startDate == null || endDate == null) + // return null; + DateTime today = endDate.AddDays(1); + DateTime birthDate = startDate; + int years = new DateTime(endDate.Subtract(birthDate).Ticks).Year - 1; + DateTime pastYearDate = birthDate.AddYears(years); + int months = 0; + for (int i = 1; i <= 12; i++) + { + if (pastYearDate.AddMonths(i) == today) + { + months = i; + break; + } + else if (pastYearDate.AddMonths(i) >= today) + { + months = i - 1; + break; + } + } + int days = today.Subtract(pastYearDate.AddMonths(months)).Days; + if (today.Day < pastYearDate.Day) + { + if (System.DateTime.DaysInMonth(pastYearDate.Year, pastYearDate.Month) > System.DateTime.DaysInMonth(pastYearDate.AddMonths(months).Year, pastYearDate.AddMonths(months).Month)) + { + days += 1; + } + if (System.DateTime.DaysInMonth(pastYearDate.Year, pastYearDate.Month) < System.DateTime.DaysInMonth(pastYearDate.AddMonths(months).Year, pastYearDate.AddMonths(months).Month)) + { + days -= 1; + } + } + if (days >= 30) + { + months = months + 1; + days = 0; + if (months >= 12) + { + years = years + 1; + months = 0; + } + } + + var sb = new StringBuilder(); + sb.Clear(); + sb.Append(years == 0 ? "" : $"{years} ปี "); + sb.Append(months == 0 ? "" : $"{months} เดือน "); + sb.Append(days == 0 ? "" : $"{days} วัน "); + return new CalculateBetweenDateV2ValueObj { years = years, months = months, days = days }; + } + public class CalculateBetweenDateV2ValueObj + { + public int years { get; set; } + + public int months { get; set; } + + public int days { get; set; } + } #endregion } }