From 8ef340b75b5c2686f7f309a7d682dad5bfe81002 Mon Sep 17 00:00:00 2001 From: Bright Date: Wed, 9 Oct 2024 16:18:11 +0700 Subject: [PATCH] =?UTF-8?q?=E0=B8=AD=E0=B8=AD=E0=B8=81=E0=B8=84=E0=B8=B3?= =?UTF-8?q?=E0=B8=AA=E0=B8=B1=E0=B9=88=E0=B8=87=2001=2002?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Controllers/PlacementController.cs | 305 ++++++++++++++++++ 1 file changed, 305 insertions(+) diff --git a/BMA.EHR.Placement.Service/Controllers/PlacementController.cs b/BMA.EHR.Placement.Service/Controllers/PlacementController.cs index 3bb2f8ce..56d6394a 100644 --- a/BMA.EHR.Placement.Service/Controllers/PlacementController.cs +++ b/BMA.EHR.Placement.Service/Controllers/PlacementController.cs @@ -1759,6 +1759,158 @@ namespace BMA.EHR.Placement.Service.Controllers return Success(); } + /// + /// ออกคำสั่ง C-PM-01 บรรจุและแต่งตั้งผู้สอบแข่งขันได้ (NEW) + /// + /// + /// + /// ค่าตัวแปรที่ส่งมาไม่ถูกต้อง + /// ไม่ได้ Login เข้าระบบ + /// เมื่อเกิดข้อผิดพลาดในการทำงาน + [HttpPost("recruit/report/excecute-new")] + public async Task> PostReportExecuteRecruitNew([FromBody] ReportExecuteRequest req) + { + try + { + var placementProfile = await _context.PlacementProfiles + .Include(x => x.PlacementCertificates) + .Include(x => x.PlacementEducations) + .ThenInclude(x => x.EducationLevel) + .Where(x => req.refIds.Select(x => x.refId).Contains(x.Id.ToString())) + .ToListAsync(); + + if (placementProfile == null) + return NotFound(); + + var resultData = (from p in placementProfile + join r in req.refIds + on p.Id.ToString() equals r.refId + select new + { + bodyProfile = new + { + rank = string.Empty, + prefix = p.Prefix == null ? string.Empty : p.Prefix, + firstName = p.Firstname == null ? string.Empty : p.Firstname, + lastName = p.Lastname == null ? string.Empty : p.Lastname, + citizenId = p.CitizenId == null ? string.Empty : p.CitizenId, + position = p.positionName == null ? string.Empty : p.positionName, + posLevelId = p.posLevelId == null ? string.Empty : p.posLevelId, + posTypeId = p.posTypeId == null ? string.Empty : p.posTypeId, + email = p.Email == null ? string.Empty : p.Email, + phone = p.MobilePhone == null ? string.Empty : p.MobilePhone, + keycloak = string.Empty, + isProbation = true, + isLeave = false, + dateRetire = (DateTime?)null, + dateAppoint = r.commandAffectDate, + dateStart = r.commandAffectDate, + govAgeAbsent = 0, + govAgePlus = 0, + birthDate = p.DateOfBirth == null ? (DateTime?)null : p.DateOfBirth, + reasonSameDate = (DateTime?)null, + ethnicity = p.Race == null ? string.Empty : p.Race, + telephoneNumber = p.Telephone == null ? string.Empty : p.Telephone, + nationality = p.Nationality == null ? string.Empty : p.Nationality, + gender = p.Gender == null ? string.Empty : p.Gender, + relationship = p.Relationship == null ? string.Empty : p.Relationship, + religion = p.Religion == null ? string.Empty : p.Religion, + bloodGroup = string.Empty, + registrationAddress = p.RegistAddress == null ? string.Empty : p.RegistAddress, + registrationProvinceId = (String?)null, + registrationDistrictId = (String?)null, + registrationSubDistrictId = (String?)null, + registrationZipCode = p.RegistZipCode == null ? string.Empty : p.RegistZipCode, + currentAddress = p.CurrentAddress == null ? string.Empty : p.CurrentAddress, + currentProvinceId = (String?)null, + currentDistrictId = (String?)null, + currentSubDistrictId = (String?)null, + currentZipCode = p.CurrentZipCode == null ? string.Empty : p.CurrentZipCode + }, + bodyEducations = p.PlacementEducations.Select(e => new + { + profileId = string.Empty, + country = e.Country ?? string.Empty, + degree = e.Degree ?? string.Empty, + duration = e.Duration ?? string.Empty, + durationYear = e.DurationYear ?? null, + field = e.Field ?? string.Empty, + finishDate = e.FinishDate ?? null, + fundName = e.FundName ?? string.Empty, + gpa = e.Gpa ?? string.Empty, + institute = e.Institute ?? string.Empty, + other = e.Other ?? string.Empty, + startDate = e.StartDate ?? null, + endDate = e.EndDate ?? null, + educationLevel = e.EducationLevel?.Name ?? string.Empty, + educationLevelId = e.EducationLevel?.Id.ToString() ?? string.Empty, + positionPath = e.PositionPath?.Name ?? string.Empty, + positionPathId = e.PositionPath?.Id.ToString() ?? string.Empty, + isDate = e.IsDate ?? false, + isEducation = e.IsEducation ?? false, + note = e.Other ?? string.Empty + }).ToList(), + bodyCertificates = p.PlacementCertificates.Select(e => new + { + profileId = string.Empty, + expireDate = e.ExpireDate ?? null, + issueDate = e.IssueDate ?? null, + certificateNo = e.CertificateNo ?? string.Empty, + certificateType = e.CertificateType ?? string.Empty, + issuer = e.Issuer ?? string.Empty + }).ToList(), + bodySalarys = new + { + profileId = string.Empty, + date = r.commandAffectDate, + amount = p.Amount, + positionSalaryAmount = p.PositionSalaryAmount, + mouthSalaryAmount = p.MouthSalaryAmount, + posNo = p.posMasterNo == null ? "" : + p.node == 4 ? $"{p.child4ShortName}{p.posMasterNo}" : + p.node == 3 ? $"{p.child3ShortName}{p.posMasterNo}" : + p.node == 2 ? $"{p.child2ShortName}{p.posMasterNo}" : + p.node == 1 ? $"{p.child1ShortName}{p.posMasterNo}" : + p.node == 0 ? $"{p.rootShortName}{p.posMasterNo}" : "", + position = p.positionName == null ? string.Empty : p.positionName, + positionLine = string.Empty, + positionPathSide = string.Empty, + positionExecutive = string.Empty, + positionType = p.posTypeName == null ? string.Empty : p.posTypeName, + positionLevel = p.posLevelName == null ? string.Empty : p.posLevelName, + refCommandNo = $"{r.commandNo}/{r.commandYear.ToThaiYear()}", + templateDoc = r.templateDoc + }, + bodyPosition = new + { + posmasterId = p.posmasterId, + positionId = p.positionId + } + }).ToList(); + + var apiUrl = $"{_configuration["API"]}/org/command/excexute/create-officer-profile"; + using (var client = new HttpClient()) + { + client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", token.Replace("Bearer ", "")); + client.DefaultRequestHeaders.Add("api_key", _configuration["API_KEY"]); + var _req = new HttpRequestMessage(HttpMethod.Post, apiUrl); + var _res = await client.PostAsJsonAsync(apiUrl, new + { + data = resultData + }); + var _result = await _res.Content.ReadAsStringAsync(); + } + + // update placementstatus + placementProfile.ForEach(profile => profile.PlacementStatus = "DONE"); + await _context.SaveChangesAsync(); + return Success(); + } + catch + { + throw; + } + } /// /// ส่งรายชื่อออกคำสั่ง C-PM-02 @@ -2052,6 +2204,159 @@ namespace BMA.EHR.Placement.Service.Controllers return Success(); } + /// + /// ออกคำสั่ง C-PM-02 บรรจุและแต่งตั้งผู้ได้รับคัดเลือก (NEW) + /// + /// + /// + /// ค่าตัวแปรที่ส่งมาไม่ถูกต้อง + /// ไม่ได้ Login เข้าระบบ + /// เมื่อเกิดข้อผิดพลาดในการทำงาน + [HttpPost("candidate/report/excecute-new")] + public async Task> PostReportExecuteCandidateNew([FromBody] ReportExecuteRequest req) + { + try + { + var placementProfile = await _context.PlacementProfiles + .Include(x => x.PlacementCertificates) + .Include(x => x.PlacementEducations) + .ThenInclude(x => x.EducationLevel) + .Where(x => req.refIds.Select(x => x.refId).Contains(x.Id.ToString())) + .ToListAsync(); + + if (placementProfile == null) + return NotFound(); + + var resultData = (from p in placementProfile + join r in req.refIds + on p.Id.ToString() equals r.refId + select new + { + bodyProfile = new + { + rank = string.Empty, + prefix = p.Prefix == null ? string.Empty : p.Prefix, + firstName = p.Firstname == null ? string.Empty : p.Firstname, + lastName = p.Lastname == null ? string.Empty : p.Lastname, + citizenId = p.CitizenId == null ? string.Empty : p.CitizenId, + position = p.positionName == null ? string.Empty : p.positionName, + posLevelId = p.posLevelId == null ? string.Empty : p.posLevelId, + posTypeId = p.posTypeId == null ? string.Empty : p.posTypeId, + email = p.Email == null ? string.Empty : p.Email, + phone = p.MobilePhone == null ? string.Empty : p.MobilePhone, + keycloak = string.Empty, + isProbation = true, + isLeave = false, + dateRetire = (DateTime?)null, + dateAppoint = r.commandAffectDate, + dateStart = r.commandAffectDate, + govAgeAbsent = 0, + govAgePlus = 0, + birthDate = p.DateOfBirth == null ? (DateTime?)null : p.DateOfBirth, + reasonSameDate = (DateTime?)null, + ethnicity = p.Race == null ? string.Empty : p.Race, + telephoneNumber = p.Telephone == null ? string.Empty : p.Telephone, + nationality = p.Nationality == null ? string.Empty : p.Nationality, + gender = p.Gender == null ? string.Empty : p.Gender, + relationship = p.Relationship == null ? string.Empty : p.Relationship, + religion = p.Religion == null ? string.Empty : p.Religion, + bloodGroup = string.Empty, + registrationAddress = p.RegistAddress == null ? string.Empty : p.RegistAddress, + registrationProvinceId = (String?)null, + registrationDistrictId = (String?)null, + registrationSubDistrictId = (String?)null, + registrationZipCode = p.RegistZipCode == null ? string.Empty : p.RegistZipCode, + currentAddress = p.CurrentAddress == null ? string.Empty : p.CurrentAddress, + currentProvinceId = (String?)null, + currentDistrictId = (String?)null, + currentSubDistrictId = (String?)null, + currentZipCode = p.CurrentZipCode == null ? string.Empty : p.CurrentZipCode + }, + bodyEducations = p.PlacementEducations.Select(e => new + { + profileId = string.Empty, + country = e.Country ?? string.Empty, + degree = e.Degree ?? string.Empty, + duration = e.Duration ?? string.Empty, + durationYear = e.DurationYear ?? null, + field = e.Field ?? string.Empty, + finishDate = e.FinishDate ?? null, + fundName = e.FundName ?? string.Empty, + gpa = e.Gpa ?? string.Empty, + institute = e.Institute ?? string.Empty, + other = e.Other ?? string.Empty, + startDate = e.StartDate ?? null, + endDate = e.EndDate ?? null, + educationLevel = e.EducationLevel?.Name ?? string.Empty, + educationLevelId = e.EducationLevel?.Id.ToString() ?? string.Empty, + positionPath = e.PositionPath?.Name ?? string.Empty, + positionPathId = e.PositionPath?.Id.ToString() ?? string.Empty, + isDate = e.IsDate ?? false, + isEducation = e.IsEducation ?? false, + note = e.Other ?? string.Empty + }).ToList(), + bodyCertificates = p.PlacementCertificates.Select(e => new + { + profileId = string.Empty, + expireDate = e.ExpireDate ?? null, + issueDate = e.IssueDate ?? null, + certificateNo = e.CertificateNo ?? string.Empty, + certificateType = e.CertificateType ?? string.Empty, + issuer = e.Issuer ?? string.Empty + }).ToList(), + bodySalarys = new + { + profileId = string.Empty, + date = r.commandAffectDate, + amount = p.Amount, + positionSalaryAmount = p.PositionSalaryAmount, + mouthSalaryAmount = p.MouthSalaryAmount, + posNo = p.posMasterNo == null ? "" : + p.node == 4 ? $"{p.child4ShortName}{p.posMasterNo}" : + p.node == 3 ? $"{p.child3ShortName}{p.posMasterNo}" : + p.node == 2 ? $"{p.child2ShortName}{p.posMasterNo}" : + p.node == 1 ? $"{p.child1ShortName}{p.posMasterNo}" : + p.node == 0 ? $"{p.rootShortName}{p.posMasterNo}" : "", + position = p.positionName == null ? string.Empty : p.positionName, + positionLine = string.Empty, + positionPathSide = string.Empty, + positionExecutive = string.Empty, + positionType = p.posTypeName == null ? string.Empty : p.posTypeName, + positionLevel = p.posLevelName == null ? string.Empty : p.posLevelName, + refCommandNo = $"{r.commandNo}/{r.commandYear.ToThaiYear()}", + templateDoc = r.templateDoc + }, + bodyPosition = new + { + posmasterId = p.posmasterId, + positionId = p.positionId + } + }).ToList(); + + var apiUrl = $"{_configuration["API"]}/org/command/excexute/create-officer-profile"; + using (var client = new HttpClient()) + { + client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", token.Replace("Bearer ", "")); + client.DefaultRequestHeaders.Add("api_key", _configuration["API_KEY"]); + var _req = new HttpRequestMessage(HttpMethod.Post, apiUrl); + var _res = await client.PostAsJsonAsync(apiUrl, new + { + data = resultData + }); + var _result = await _res.Content.ReadAsStringAsync(); + } + + // update placementstatus + placementProfile.ForEach(profile => profile.PlacementStatus = "DONE"); + await _context.SaveChangesAsync(); + return Success(); + } + catch + { + throw; + } + } + /// /// ส่งรายชื่อออกคำสั่ง C-PM-03 ///