diff --git a/.gitignore b/.gitignore
index 3b4a194..a479b56 100644
--- a/.gitignore
+++ b/.gitignore
@@ -475,5 +475,3 @@ $RECYCLE.BIN/
# Windows shortcuts
*.lnk
-
-.claude
\ No newline at end of file
diff --git a/Controllers/DisableController.cs b/Controllers/DisableController.cs
index cb6804a..c982f03 100644
--- a/Controllers/DisableController.cs
+++ b/Controllers/DisableController.cs
@@ -86,7 +86,6 @@ namespace BMA.EHR.Recurit.Exam.Service.Controllers
private string? UserId => _httpContextAccessor?.HttpContext?.User?.FindFirst(ClaimTypes.NameIdentifier)?.Value;
private string? FullName => _httpContextAccessor?.HttpContext?.User?.FindFirst("name")?.Value;
- private string? RootDnaId => _httpContextAccessor?.HttpContext?.User?.FindFirst("orgRootDnaId")?.Value;
private string? token => _httpContextAccessor.HttpContext.Request.Headers["Authorization"];
#endregion
@@ -488,7 +487,6 @@ namespace BMA.EHR.Recurit.Exam.Service.Controllers
Note = req.Note,
AnnouncementDate = req.AnnouncementDate,
CheckDisability = true,
- OrganizationId = req.rootDnaId,
CreatedAt = DateTime.Now,
CreatedUserId = UserId ?? "",
CreatedFullName = FullName ?? "System Administrator",
@@ -501,7 +499,7 @@ namespace BMA.EHR.Recurit.Exam.Service.Controllers
using (var client = new HttpClient())
{
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", token.Replace("Bearer ", ""));
- client.DefaultRequestHeaders.Add("api-key", _configuration["API_KEY"]);
+ client.DefaultRequestHeaders.Add("api_key", _configuration["API_KEY"]);
var _req = new HttpRequestMessage(HttpMethod.Get, apiUrl);
var _res = await client.SendAsync(_req);
var _result = await _res.Content.ReadAsStringAsync();
@@ -670,16 +668,8 @@ namespace BMA.EHR.Recurit.Exam.Service.Controllers
{
return Error(jsonData["message"]?.ToString(), StatusCodes.Status403Forbidden);
}
- string role = jsonData["result"]?.ToString() ?? string.Empty;
- string rootDnaId = string.Empty;
- if (role != "OWNER")
- {
- rootDnaId = RootDnaId?.ToString() ?? "";
- }
-
var data = await _context.PeriodExams.AsQueryable()
.Where(x => x.CheckDisability == true)
- .Where(x => string.IsNullOrEmpty(rootDnaId) || x.OrganizationId == Guid.Parse(rootDnaId))
.Include(x => x.ImportFile)
.Include(x => x.Disables)
.Include(x => x.ScoreImport)
@@ -2188,177 +2178,90 @@ namespace BMA.EHR.Recurit.Exam.Service.Controllers
{
try
{
- #region old
- //var data = await _context.Disables.AsQueryable()
- // .Include(x => x.PeriodExam)
- // .Include(x => x.Documents)
- // .ThenInclude(x => x.DocumentFile)
- // .Where(x => x.PeriodExam.Id == id)
- // .Where(x => x.PeriodExam.CheckDisability == true)
- // .Where(x => x.ExamId == examId)
- // .Join(_context.DisableScores.AsQueryable()
- // .Include(x => x.ScoreImport),
- // rc => new { PeriodExamId = rc.PeriodExam.Id, rc.ExamId },
- // sc => new { PeriodExamId = sc.ScoreImport.PeriodExamId, sc.ExamId },
- // (p, sr) => new
- // {
- // ExamID = p.ExamId,
- // ProfileID = p.CitizenId,
- // p.Prefix,
- // FullName = $"{p.FirstName} {p.LastName}",
- // DateOfBirth = p.DateOfBirth.HasValue && p.DateOfBirth.Value != DateTime.MinValue
- // ? p.DateOfBirth.Value.ToThaiShortDate()
- // : "",
- // Gender = p.Gendor,
- // Degree = p.Educations.First().Degree,
- // Major = p.Educations.First().Major,
- // CertificateNo = p.Certificates.Count > 0
- // ? p.Certificates.First().CertificateNo ?? ""
- // : "",
- // CertificateIssueDate = p.Certificates.Count > 0
- // ? p.Certificates.First().IssueDate != DateTime.MinValue
- // ? p.Certificates.First().IssueDate.ToThaiShortDate()
- // : ""
- // : "",
- // ExamResult = sr == null ? "" : sr.ExamStatus,
- // ExamAttribute = sr != null && !string.IsNullOrEmpty(sr.ExamAttribute) &&
- // (sr.ExamAttribute == "มีคุณสมบัติ" || sr.ExamAttribute == "ไม่มีคุณสมบัติ")
- // ? sr.ExamAttribute : "",
- // IsSpecial = p.Isspecial,
- // Remark = p.Remark,
- // University = p.Educations.First().University,
- // PositionName = p.PositionName,
- // PositionType = p.PositionType,
- // PositionLevel = p.PositionLevel,
- // ExamName = p.PeriodExam!.Name,
- // ExamOrder = p.PeriodExam.Round,
- // ExamYear = p.PeriodExam.Year == null ? 0 : p.PeriodExam.Year.Value.ToThaiYear(),
- // Score = sr == null ? 0.0 : sr.TotalScore,
- // Number = sr == null ? "" : sr.Number,
- // ExamCount = _disableService.GetExamCount(p.CitizenId),
- // ScoreExpire = p.PeriodExam.AnnouncementDate == null
- // ? ""
- // : p.PeriodExam.AnnouncementDate != DateTime.MinValue
- // ? p.PeriodExam.AnnouncementDate.Value.AddYears(2).ToThaiShortDate()
- // : "",
- // typeTest = p.typeTest,
- // ScoreResult = sr == null ? null : new
- // {
- // ScoreAFull = sr.FullA,
- // ScoreA = sr.SumA,
- // ScoreBFull = sr.FullB,
- // ScoreB = sr.SumB,
- // ScoreAB = sr.SumAB,
- // ScoreCFull = sr.FullC,
- // ScoreC = sr.SumC,
- // ScoreDFull = sr.FullD,
- // ScoreD = sr.SumD,
- // ScoreCD = sr.SumCD,
- // ScoreSumFull = sr.FullScore,
- // ScoreSum = sr.TotalScore,
- // ExamResult = sr.ExamStatus
- // },
- // Attachments = p.Documents.Select(a => new
- // {
- // FileName = a.DocumentFile.FileName,
- // DocumentId = a.DocumentFile.Id
- // })
- // })
- // .FirstOrDefaultAsync();
- #endregion
-
- // 1. Query Disable (ข้อมูลผู้สอบ)
- var disable = await _context.Disables.AsQueryable()
+ var data = await _context.Disables.AsQueryable()
.Include(x => x.PeriodExam)
.Include(x => x.Documents)
.ThenInclude(x => x.DocumentFile)
- .Include(x => x.Educations)
- .Include(x => x.Certificates)
- .Where(x => x.PeriodExam != null)
.Where(x => x.PeriodExam.Id == id)
.Where(x => x.PeriodExam.CheckDisability == true)
.Where(x => x.ExamId == examId)
+ .Join(_context.DisableScores.AsQueryable()
+ .Include(x => x.ScoreImport),
+ rc => new { PeriodExamId = rc.PeriodExam.Id, rc.ExamId },
+ sc => new { PeriodExamId = sc.ScoreImport.PeriodExamId, sc.ExamId },
+ (p, sr) => new
+ {
+ ExamID = p.ExamId,
+ ProfileID = p.CitizenId,
+ p.Prefix,
+ FullName = $"{p.FirstName} {p.LastName}",
+ DateOfBirth = p.DateOfBirth.HasValue && p.DateOfBirth.Value != DateTime.MinValue
+ ? p.DateOfBirth.Value.ToThaiShortDate()
+ : "",
+ Gender = p.Gendor,
+ Degree = p.Educations.First().Degree,
+ Major = p.Educations.First().Major,
+ CertificateNo = p.Certificates.Count > 0
+ ? p.Certificates.First().CertificateNo ?? ""
+ : "",
+ CertificateIssueDate = p.Certificates.Count > 0
+ ? p.Certificates.First().IssueDate != DateTime.MinValue
+ ? p.Certificates.First().IssueDate.ToThaiShortDate()
+ : ""
+ : "",
+ ExamResult = sr == null ? "" : sr.ExamStatus,
+ // ExamAttribute = p.Certificates.Count > 0 ?
+ // _disableService.CheckValidCertificate(p.Certificates.First().IssueDate, 5)
+ // ? "มีคุณสมบัติ"
+ // : "ไม่มีคุณสมบัติ"
+ // : "ไม่มีคุณสมบัติ",
+
+ ExamAttribute = sr != null && !string.IsNullOrEmpty(sr.ExamAttribute) &&
+ (sr.ExamAttribute == "มีคุณสมบัติ" || sr.ExamAttribute == "ไม่มีคุณสมบัติ")
+ ? sr.ExamAttribute : "",
+
+ IsSpecial = p.Isspecial,
+ Remark = p.Remark,
+ University = p.Educations.First().University,
+ PositionName = p.PositionName,
+ PositionType = p.PositionType,
+ PositionLevel = p.PositionLevel,
+ ExamName = p.PeriodExam!.Name,
+ ExamOrder = p.PeriodExam.Round,
+ ExamYear = p.PeriodExam.Year == null ? 0 : p.PeriodExam.Year.Value.ToThaiYear(),
+ Score = sr == null ? 0.0 : sr.TotalScore,
+ Number = sr == null ? "" : sr.Number,
+ ExamCount = _disableService.GetExamCount(p.CitizenId),
+ ScoreExpire = p.PeriodExam.AnnouncementDate == null
+ ? ""
+ : p.PeriodExam.AnnouncementDate != DateTime.MinValue
+ ? p.PeriodExam.AnnouncementDate.Value.AddYears(2).ToThaiShortDate()
+ : "",
+ typeTest = p.typeTest,
+ ScoreResult = sr == null ? null : new
+ {
+ ScoreAFull = sr.FullA,
+ ScoreA = sr.SumA,
+ ScoreBFull = sr.FullB,
+ ScoreB = sr.SumB,
+ ScoreAB = sr.SumAB,
+ ScoreCFull = sr.FullC,
+ ScoreC = sr.SumC,
+ ScoreDFull = sr.FullD,
+ ScoreD = sr.SumD,
+ ScoreCD = sr.SumCD,
+ ScoreSumFull = sr.FullScore,
+ ScoreSum = sr.TotalScore,
+ ExamResult = sr.ExamStatus
+ },
+ Attachments = p.Documents.Select(a => new
+ {
+ FileName = a.DocumentFile.FileName,
+ DocumentId = a.DocumentFile.Id
+ })
+ })
.FirstOrDefaultAsync();
- if (disable == null)
- return Success();
-
- // 2. Query DisableScore (ข้อมูลคะแนน) — แยกต่างหาก ไม่มีก็ผ่าน
- var score = await _context.DisableScores.AsQueryable()
- .Include(x => x.ScoreImport)
- .Where(x => x.ScoreImport != null)
- .Where(x => x.ScoreImport.PeriodExamId == id)
- .Where(x => x.ExamId == examId)
- .FirstOrDefaultAsync();
-
- // 3. รวมผลลัพธ์ก่อน return
- var data = new
- {
- ExamID = disable.ExamId,
- ProfileID = disable.CitizenId,
- disable.Prefix,
- FullName = $"{disable.FirstName} {disable.LastName}",
- DateOfBirth = disable.DateOfBirth.HasValue && disable.DateOfBirth.Value != DateTime.MinValue
- ? disable.DateOfBirth.Value.ToThaiShortDate()
- : "",
- Gender = disable.Gendor,
- Degree = disable.Educations.First().Degree,
- Major = disable.Educations.First().Major,
- CertificateNo = disable.Certificates.Count > 0
- ? disable.Certificates.First().CertificateNo ?? ""
- : "",
- CertificateIssueDate = disable.Certificates.Count > 0
- ? disable.Certificates.First().IssueDate != DateTime.MinValue
- ? disable.Certificates.First().IssueDate.ToThaiShortDate()
- : ""
- : "",
- ExamResult = score == null ? "" : score.ExamStatus,
-
- ExamAttribute = score != null && !string.IsNullOrEmpty(score.ExamAttribute) &&
- (score.ExamAttribute == "มีคุณสมบัติ" || score.ExamAttribute == "ไม่มีคุณสมบัติ")
- ? score.ExamAttribute : "",
-
- IsSpecial = disable.Isspecial,
- Remark = disable.Remark,
- University = disable.Educations.First().University,
- PositionName = disable.PositionName,
- PositionType = disable.PositionType,
- PositionLevel = disable.PositionLevel,
- ExamName = disable.PeriodExam!.Name,
- ExamOrder = disable.PeriodExam.Round,
- ExamYear = disable.PeriodExam.Year == null ? 0 : disable.PeriodExam.Year.Value.ToThaiYear(),
- Score = score == null ? 0.0 : score.TotalScore,
- Number = score == null ? "" : score.Number,
- ExamCount = _disableService.GetExamCount(disable.CitizenId),
- ScoreExpire = disable.PeriodExam.AnnouncementDate == null
- ? ""
- : disable.PeriodExam.AnnouncementDate != DateTime.MinValue
- ? disable.PeriodExam.AnnouncementDate.Value.AddYears(2).ToThaiShortDate()
- : "",
- typeTest = disable.typeTest,
- ScoreResult = score == null ? null : new
- {
- ScoreAFull = score.FullA,
- ScoreA = score.SumA,
- ScoreBFull = score.FullB,
- ScoreB = score.SumB,
- ScoreAB = score.SumAB,
- ScoreCFull = score.FullC,
- ScoreC = score.SumC,
- ScoreDFull = score.FullD,
- ScoreD = score.SumD,
- ScoreCD = score.SumCD,
- ScoreSumFull = score.FullScore,
- ScoreSum = score.TotalScore,
- ExamResult = score.ExamStatus
- },
- Attachments = disable.Documents.Select(a => new
- {
- FileName = a.DocumentFile.FileName,
- DocumentId = a.DocumentFile.Id
- })
- };
-
return Success(data);
}
catch (Exception ex)
@@ -2548,7 +2451,7 @@ namespace BMA.EHR.Recurit.Exam.Service.Controllers
}
///
- /// โอนคนสรรหาไปบรรจุ (คัดเลือกอื่นๆ)
+ /// โอนคนสรรหาไปบรรจุ
///
/// รหัสรอบสมัคร
///
@@ -2593,106 +2496,49 @@ namespace BMA.EHR.Recurit.Exam.Service.Controllers
{
try
{
- #region old
- //var data = await _context.Disables.AsQueryable()
- // .Include(x => x.PeriodExam)
- // .Where(x => x.PeriodExam!.Id == id)
- // .Where(x => x.ExamId == examId)
- // .Join(_context.DisableScores.AsQueryable()
- // .Include(x => x.ScoreImport),
- // rc => new { rc.PeriodExam!.Id, rc.ExamId },
- // sc => new { Id = sc.ScoreImport!.PeriodExamId, sc.ExamId },
- // (p, sr) => new
- // {
- // ExamID = p.ExamId != null ? p.ExamId.ToThaiNumber() : "",
- // CitizenId = p.CitizenId != null ? p.CitizenId.ToThaiNumber() : "",
- // FullName = $"{p.Prefix}{p.FirstName} {p.LastName}",
- // DateOfBirth = p.DateOfBirth.HasValue && p.DateOfBirth.Value != DateTime.MinValue
- // ? p.DateOfBirth.Value.ToThaiShortDate().ToThaiNumber()
- // : "",
- // Gender = p.Gendor,
- // Degree = p.Educations.First().Degree,
- // Major = p.Educations.First().Major,
- // University = p.Educations.First().University,
- // PositionName = p.PositionName,
- // ExamName = $"{p.PeriodExam!.Name} ครั้งที่ {p.PeriodExam.Round}/{(p.PeriodExam.Year > 2500 ? p.PeriodExam.Year : (p.PeriodExam.Year + 543))}".ToThaiNumber(),
- //
- // ExamCount = _disableService.GetExamCount(p.CitizenId).ToString().ToThaiNumber(),
- // type = p.typeTest == "bangkok" ? "กทม." : p.typeTest == "ocsc" ? "ก.พ." : "",
- // FA = sr.FullA != null ? sr.FullA.ToString().ToThaiNumber() : "",
- // SA = sr.SumA != null ? sr.SumA.ToString().ToThaiNumber() : "",
- // FC = sr.FullC != null ? sr.FullC.ToString().ToThaiNumber() : "",
- // SC = sr.SumC != null ? sr.SumC.ToString().ToThaiNumber() : "",
- // FD = sr.FullD != null ? sr.FullD.ToString().ToThaiNumber() : "",
- // SD = sr.SumD != null ? sr.SumD.ToString().ToThaiNumber() : "",
- // F = sr.FullScore != null ? sr.FullScore.ToString().ToThaiNumber() : "",
- // T = sr.TotalScore != null ? sr.TotalScore.ToString().ToThaiNumber() : "",
- // Result = sr.ExamStatus,
- // Number = sr.Number != null ? sr.Number.ToString().ToThaiNumber() : "",
- // Expire = p.PeriodExam.AnnouncementDate == null
- // ? ""
- // : p.PeriodExam.AnnouncementDate != DateTime.MinValue
- // ? p.PeriodExam.AnnouncementDate.Value.AddYears(2).ToThaiShortDate().ToString().ToThaiNumber()
- // : "",
- // })
- // .FirstOrDefaultAsync();
- #endregion
-
- // 1. Query Disable (ข้อมูลผู้สอบ)
- var disable = await _context.Disables.AsQueryable()
+ var data = await _context.Disables.AsQueryable()
.Include(x => x.PeriodExam)
- .Include(x => x.Educations)
- .Where(x => x.PeriodExam != null)
- .Where(x => x.PeriodExam.Id == id)
+ .Where(x => x.PeriodExam!.Id == id)
.Where(x => x.ExamId == examId)
+ .Join(_context.DisableScores.AsQueryable()
+ .Include(x => x.ScoreImport),
+ rc => new { rc.PeriodExam!.Id, rc.ExamId },
+ sc => new { Id = sc.ScoreImport!.PeriodExamId, sc.ExamId },
+ (p, sr) => new
+ {
+ ExamID = p.ExamId != null ? p.ExamId.ToThaiNumber() : "",
+ CitizenId = p.CitizenId != null ? p.CitizenId.ToThaiNumber() : "",
+ FullName = $"{p.Prefix}{p.FirstName} {p.LastName}",
+ DateOfBirth = p.DateOfBirth.HasValue && p.DateOfBirth.Value != DateTime.MinValue
+ ? p.DateOfBirth.Value.ToThaiShortDate().ToThaiNumber()
+ : "",
+ Gender = p.Gendor,
+ Degree = p.Educations.First().Degree,
+ Major = p.Educations.First().Major,
+ University = p.Educations.First().University,
+ PositionName = p.PositionName,
+ ExamName = $"{p.PeriodExam!.Name} ครั้งที่ {p.PeriodExam.Round}/{(p.PeriodExam.Year > 2500 ? p.PeriodExam.Year : (p.PeriodExam.Year + 543))}".ToThaiNumber(),
+
+ ExamCount = _disableService.GetExamCount(p.CitizenId).ToString().ToThaiNumber(),
+ type = p.typeTest == "bangkok" ? "กทม." : p.typeTest == "ocsc" ? "ก.พ." : "",
+ FA = sr.FullA != null ? sr.FullA.ToString().ToThaiNumber() : "",
+ SA = sr.SumA != null ? sr.SumA.ToString().ToThaiNumber() : "",
+ FC = sr.FullC != null ? sr.FullC.ToString().ToThaiNumber() : "",
+ SC = sr.SumC != null ? sr.SumC.ToString().ToThaiNumber() : "",
+ FD = sr.FullD != null ? sr.FullD.ToString().ToThaiNumber() : "",
+ SD = sr.SumD != null ? sr.SumD.ToString().ToThaiNumber() : "",
+ F = sr.FullScore != null ? sr.FullScore.ToString().ToThaiNumber() : "",
+ T = sr.TotalScore != null ? sr.TotalScore.ToString().ToThaiNumber() : "",
+ Result = sr.ExamStatus,
+ Number = sr.Number != null ? sr.Number.ToString().ToThaiNumber() : "",
+ Expire = p.PeriodExam.AnnouncementDate == null
+ ? ""
+ : p.PeriodExam.AnnouncementDate != DateTime.MinValue
+ ? p.PeriodExam.AnnouncementDate.Value.AddYears(2).ToThaiShortDate().ToString().ToThaiNumber()
+ : "",
+ })
.FirstOrDefaultAsync();
- if (disable == null)
- return Success();
-
- // 2. Query DisableScore (ข้อมูลคะแนน) — แยกต่างหาก ไม่มีก็ผ่าน
- var score = await _context.DisableScores.AsQueryable()
- .Include(x => x.ScoreImport)
- .Where(x => x.ScoreImport != null)
- .Where(x => x.ScoreImport.PeriodExamId == id)
- .Where(x => x.ExamId == examId)
- .FirstOrDefaultAsync();
-
- // 3. รวมผลลัพธ์
- var data = new
- {
- ExamID = disable.ExamId != null ? disable.ExamId.ToThaiNumber() : "",
- CitizenId = disable.CitizenId != null ? disable.CitizenId.ToThaiNumber() : "",
- FullName = $"{disable.Prefix}{disable.FirstName} {disable.LastName}",
- DateOfBirth = disable.DateOfBirth.HasValue && disable.DateOfBirth.Value != DateTime.MinValue
- ? disable.DateOfBirth.Value.ToThaiShortDate().ToThaiNumber()
- : "",
- Gender = disable.Gendor,
- Degree = disable.Educations.First().Degree,
- Major = disable.Educations.First().Major,
- University = disable.Educations.First().University,
- PositionName = disable.PositionName,
- ExamName = $"{disable.PeriodExam!.Name} ครั้งที่ {disable.PeriodExam.Round}/{(disable.PeriodExam.Year > 2500 ? disable.PeriodExam.Year : (disable.PeriodExam.Year + 543))}".ToThaiNumber(),
-
- ExamCount = _disableService.GetExamCount(disable.CitizenId!).ToString().ToThaiNumber(),
- type = disable.typeTest == "bangkok" ? "กทม." : disable.typeTest == "ocsc" ? "ก.พ." : "",
- FA = score != null ? score.FullA.ToString().ToThaiNumber() : "",
- SA = score != null ? score.SumA.ToString().ToThaiNumber() : "",
- FC = score != null ? score.FullC.ToString().ToThaiNumber() : "",
- SC = score != null ? score.SumC.ToString().ToThaiNumber() : "",
- FD = score != null ? score.FullD.ToString().ToThaiNumber() : "",
- SD = score != null ? score.SumD.ToString().ToThaiNumber() : "",
- F = score != null ? score.FullScore.ToString().ToThaiNumber() : "",
- T = score != null ? score.TotalScore.ToString().ToThaiNumber() : "",
- Result = score != null ? score.ExamStatus : "",
- Number = score != null && score.Number != null ? score.Number.ToString().ToThaiNumber() : "",
- Expire = disable.PeriodExam.AnnouncementDate == null
- ? ""
- : disable.PeriodExam.AnnouncementDate != DateTime.MinValue
- ? disable.PeriodExam.AnnouncementDate.Value.AddYears(2).ToThaiShortDate().ToString().ToThaiNumber()
- : "",
- };
-
var result = new
{
template = "recruit-exam",
diff --git a/Controllers/PeriodExamController.cs b/Controllers/PeriodExamController.cs
index db6edb9..b52b0f6 100644
--- a/Controllers/PeriodExamController.cs
+++ b/Controllers/PeriodExamController.cs
@@ -749,56 +749,6 @@ namespace BMA.EHR.Recurit.Exam.Service.Controllers
}
}
- ///
- /// ดาวน์โหลดรายชื่อผู้มีสิทธิ์สอบ
- ///
- /// รหัสรอบสมัคร
- ///
- /// เมื่อทำการอ่านโหลดผู้สมัครสอบสำเร็จ
- /// ไม่ได้ Login เข้าระบบ
- /// เมื่อเกิดข้อผิดพลาดในการทำงาน
- [HttpGet("download/candidate-exam/{examId:length(36)}")]
- [ProducesResponseType(StatusCodes.Status200OK)]
- [ProducesResponseType(StatusCodes.Status401Unauthorized)]
- [ProducesResponseType(StatusCodes.Status500InternalServerError)]
- public async Task> DownloadCandidateExamAsync(string examId)
- {
- try
- {
- var data = await _periodExamService.DownloadCandidateExamAsync(examId);
- return Success(data);
- }
- catch (Exception ex)
- {
- return Error(ex);
- }
- }
-
- ///
- /// ดาวน์โหลดรายชื่อผู้สอบคัดเลือกได้
- ///
- /// รหัสรอบสมัคร
- ///
- /// เมื่อทำการอ่านโหลดผู้สมัครสอบสำเร็จ
- /// ไม่ได้ Login เข้าระบบ
- /// เมื่อเกิดข้อผิดพลาดในการทำงาน
- [HttpGet("download/pass-exam/{examId:length(36)}")]
- [ProducesResponseType(StatusCodes.Status200OK)]
- [ProducesResponseType(StatusCodes.Status401Unauthorized)]
- [ProducesResponseType(StatusCodes.Status500InternalServerError)]
- public async Task> DownloadPassExamAsync(string examId)
- {
- try
- {
- var data = await _periodExamService.DownloadPassExamAsync(examId);
- return Success(data);
- }
- catch (Exception ex)
- {
- return Error(ex, "เกิดข้อผิดพลาดในการแสดงรายงาน");
- }
- }
-
///
/// โหลดผู้สมัครสอบ
///
@@ -1002,7 +952,7 @@ namespace BMA.EHR.Recurit.Exam.Service.Controllers
}
///
- /// โอนคนสรรหาไปบรรจุ (สอบคัดเลือก)
+ /// โอนคนสรรหาไปบรรจุ
///
/// รหัสรอบสมัคร
///
diff --git a/Core/RequestLoggingMiddleware.cs b/Core/RequestLoggingMiddleware.cs
index a39a4d9..6d306de 100644
--- a/Core/RequestLoggingMiddleware.cs
+++ b/Core/RequestLoggingMiddleware.cs
@@ -2,7 +2,6 @@
using Microsoft.Extensions.Configuration;
using Nest;
using System.Diagnostics;
-using System.IdentityModel.Tokens.Jwt;
using System.Security.Claims;
using System.Text.Encodings.Web;
using System.Text.Json;
@@ -30,49 +29,6 @@ namespace BMA.EHR.Recurit.Exam.Service.Core
SystemName = "recruiting";
}
- ///
- /// แกะ JWT token เพื่อดึง claims ต่างๆ
- ///
- private JwtSecurityToken? ParseToken(string token)
- {
- try
- {
- var tokenHandler = new JwtSecurityTokenHandler();
- var jwtToken = tokenHandler.ReadJwtToken(token.Replace("Bearer ", ""));
- return jwtToken;
- }
- catch
- {
- return null;
- }
- }
-
- ///
- /// ดึงค่า claim จาก token โดยลองชื่อหลายแบบ
- ///
- private string? GetClaimValue(JwtSecurityToken? token, params string[] claimNames)
- {
- if (token == null) return null;
-
- foreach (var name in claimNames)
- {
- var claim = token.Claims.FirstOrDefault(c => c.Type == name);
- if (claim != null)
- return claim.Value;
- }
- return null;
- }
-
- ///
- /// ดึงค่า Guid claim จาก token
- ///
- private Guid? GetGuidClaim(JwtSecurityToken? token, params string[] claimNames)
- {
- var value = GetClaimValue(token, claimNames);
- if (Guid.TryParse(value, out var guid))
- return guid;
- return null;
- }
public async Task Invoke(HttpContext context)
{
@@ -136,22 +92,28 @@ namespace BMA.EHR.Recurit.Exam.Service.Core
// เปลี่ยน stream ของ Response เพื่อให้สามารถอ่านได้
context.Response.Body = memoryStream;
+
+
+ // Extract all required data from JWT token claims
var keycloakId = context.User?.FindFirst(ClaimTypes.NameIdentifier)?.Value ?? Guid.Empty.ToString("D");
- var tokenHeader = context.Request.Headers["Authorization"].ToString();
- // แกะ JWT token เพื่อดึง claims ต่างๆ
- var jwtToken = ParseToken(tokenHeader);
+ var prefix = context.User?.FindFirst("prefix")?.Value;
+ var firstName = context.User?.FindFirst("given_name")?.Value;
+ var lastName = context.User?.FindFirst("family_name")?.Value;
+ var preferredUsername = context.User?.FindFirst("preferred_username")?.Value;
- // ดึงข้อมูลจาก claims โดยลองชื่อหลายแบบ (camelCase, snake_case, ฯลฯ)
- var prefix = GetClaimValue(jwtToken, "prefix", "Prefix", "PREFIX");
- var firstName = GetClaimValue(jwtToken, "given_name", "firstname", "firstName", "FirstName", "FIRSTNAME");
- var lastName = GetClaimValue(jwtToken, "family_name", "lastname", "lastName", "LastName", "LASTNAME");
- var preferredUsername = GetClaimValue(jwtToken, "preferred_username", "preferred_username", "PreferredUsername");
- var orgRootDnaId = GetGuidClaim(jwtToken, "orgRootDnaId", "org_root_dna_id", "OrgRootDnaId", "rootDnaId");
- var orgChild1DnaId = GetGuidClaim(jwtToken, "orgChild1DnaId", "org_child1_dna", "OrgChild1Dna", "child1DnaId");
- var orgChild2DnaId = GetGuidClaim(jwtToken, "orgChild2DnaId", "org_child2_dna", "OrgChild2Dna", "child2DnaId");
- var orgChild3DnaId = GetGuidClaim(jwtToken, "orgChild3DnaId", "org_child3_dna", "OrgChild3Dna", "child3DnaId");
- var orgChild4DnaId = GetGuidClaim(jwtToken, "orgChild4DnaId", "org_child4_dna", "OrgChild4Dna", "child4DnaId");
+ var orgRootDnaId = context.User?.FindFirst("orgRootDnaId")?.Value;
+ var orgChild1DnaId = context.User?.FindFirst("orgChild1DnaId")?.Value;
+ var orgChild2DnaId = context.User?.FindFirst("orgChild2DnaId")?.Value;
+ var orgChild3DnaId = context.User?.FindFirst("orgChild3DnaId")?.Value;
+ var orgChild4DnaId = context.User?.FindFirst("orgChild4DnaId")?.Value;
+
+ // Parse Guid values safely
+ Guid? rootDnaId = Guid.TryParse(orgRootDnaId, out var rid) ? rid : null;
+ Guid? child1DnaId = Guid.TryParse(orgChild1DnaId, out var c1) ? c1 : null;
+ Guid? child2DnaId = Guid.TryParse(orgChild2DnaId, out var c2) ? c2 : null;
+ Guid? child3DnaId = Guid.TryParse(orgChild3DnaId, out var c3) ? c3 : null;
+ Guid? child4DnaId = Guid.TryParse(orgChild4DnaId, out var c4) ? c4 : null;
await _next(context); // ดำเนินการต่อไปยัง Middleware อื่น ๆ
@@ -238,7 +200,7 @@ namespace BMA.EHR.Recurit.Exam.Service.Core
{
logType = logType,
ip = context.Connection.RemoteIpAddress?.ToString(),
- rootId = orgRootDnaId?.ToString("D"),
+ rootId = rootDnaId,
systemName = SystemName,
startTimeStamp = startTime.ToString("o"),
endTimeStamp = endTime.ToString("o"),
diff --git a/Models/District.cs b/Models/District.cs
index 655e51c..6240c7d 100644
--- a/Models/District.cs
+++ b/Models/District.cs
@@ -9,9 +9,6 @@ namespace BMA.EHR.Recurit.Exam.Service.Models
[Required, MaxLength(150), Column(Order = 1), Comment("เขต/อำเภอ")]
public string name { get; set; } = string.Empty;
- [Column(Order = 2), Comment("รหัสอ้างอิงจังหวัด")]
- public Guid? provinceId { get; set; } = null;
-
// [Column(Order = 2), Comment("สถานะการใช้งาน")]
// public bool IsActive { get; set; } = true;
diff --git a/Models/SubDistrict.cs b/Models/SubDistrict.cs
index b2185f4..0610c37 100644
--- a/Models/SubDistrict.cs
+++ b/Models/SubDistrict.cs
@@ -12,9 +12,6 @@ namespace BMA.EHR.Recurit.Exam.Service.Models
[MaxLength(10), Column(Order = 2), Comment("รหัสไปรษณีย์")]
public string? zipCode { get; set; } = null;
- [Column(Order = 3), Comment("รหัสอ้างอิงอำเภอ")]
- public Guid? districtId { get; set; } = null;
-
// [Column(Order = 3), Comment("สถานะการใช้งาน")]
// public bool IsActive { get; set; } = true;
diff --git a/Repositories/PermissionRepository.cs b/Repositories/PermissionRepository.cs
index 52b70cd..afc84af 100644
--- a/Repositories/PermissionRepository.cs
+++ b/Repositories/PermissionRepository.cs
@@ -51,7 +51,7 @@ namespace BMA.EHR.Recurit.Exam.Service.Services
using (var client = new HttpClient())
{
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", AccessToken.Replace("Bearer ", ""));
- client.DefaultRequestHeaders.Add("api-key", _configuration["API_KEY"]);
+ client.DefaultRequestHeaders.Add("api_key", _configuration["API_KEY"]);
var req = await client.GetAsync(apiPath);
var res = await req.Content.ReadAsStringAsync();
return res;
diff --git a/Request/Disables/PostDisableImportRequest.cs b/Request/Disables/PostDisableImportRequest.cs
index 2eab546..232bc33 100644
--- a/Request/Disables/PostDisableImportRequest.cs
+++ b/Request/Disables/PostDisableImportRequest.cs
@@ -82,10 +82,5 @@ namespace BMA.EHR.Recurit.Exam.Service.Request.Disables
/// วันที่ประกาศผลสอบ
///
public DateTime AnnouncementDate { get; set; }
-
- ///
- /// รหัส DNA หน่วยงาน
- ///
- public Guid? rootDnaId { get; set; }
}
}
diff --git a/Response/CandidateStatusResponse.cs b/Response/CandidateStatusResponse.cs
index ac6b699..e36d0a7 100644
--- a/Response/CandidateStatusResponse.cs
+++ b/Response/CandidateStatusResponse.cs
@@ -9,8 +9,5 @@ namespace BMA.EHR.Recurit.Exam.Service.Response
public string? RejectDetail { get; set; }
public bool? IsShowExamInfo { get; set; }
-
- public bool? IsShowResult { get; set; }
-
}
}
diff --git a/Services/CandidateService.cs b/Services/CandidateService.cs
index 2319b65..fc1ba9f 100644
--- a/Services/CandidateService.cs
+++ b/Services/CandidateService.cs
@@ -1978,19 +1978,7 @@ namespace BMA.EHR.Recurit.Exam.Service.Services
if (candidate == null)
throw new Exception(GlobalMessages.CandidateNotFound);
- bool IsShowResult = true;
- if (exam.AnnouncementDate != null)
- {
- var showResultEndDate = exam.AnnouncementDate.Value.Date.AddDays(15);
- IsShowResult = DateTime.Now.Date <= showResultEndDate;
- }
-
- return new CandidateStatusResponse {
- Status = candidate.Status,
- RejectDetail = candidate.RejectDetail,
- IsShowExamInfo = candidate.IsShowExamInfo,
- IsShowResult = IsShowResult,
- };
+ return new CandidateStatusResponse { Status = candidate.Status, RejectDetail = candidate.RejectDetail, IsShowExamInfo = candidate.IsShowExamInfo };
}
public async Task UserCheckCandidateService(string examId, string positionId, string status)
@@ -2663,7 +2651,7 @@ namespace BMA.EHR.Recurit.Exam.Service.Services
using (var client = new HttpClient())
{
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", token?.Replace("Bearer ", ""));
- client.DefaultRequestHeaders.Add("api-key", _configuration["API_KEY"]);
+ client.DefaultRequestHeaders.Add("api_key", _configuration["API_KEY"]);
var _res = await client.PostAsJsonAsync(apiUrl, new
{
citizenId
diff --git a/Services/PeriodExamService.cs b/Services/PeriodExamService.cs
index 2d417e5..aeefa24 100644
--- a/Services/PeriodExamService.cs
+++ b/Services/PeriodExamService.cs
@@ -1232,57 +1232,30 @@ namespace BMA.EHR.Recurit.Exam.Service.Services
if (candidate.Status == "checkSeat")
{
candidate.SeatNumber = item.SeatNumber;
- // var subject = "แจ้งผลการสมัครสอบคัดเลือก " + periodExam.Name;
- // var body = candidate.FirstName + " " + candidate.LastName + " สถานะการสมัครสอบ: ติดตามประกาศทาง Website";
- // try
- // {
- // if (candidate.Email != null && candidate.Email != "") _mailService.SendMailToUser(subject, body, candidate.Email);
- // }
- // catch (Exception ex)
- // {
- // Console.WriteLine($"[MailError] ส่ง email ไม่สำเร็จ: {candidate.Email} | {ex.Message}");
- // if (ex.InnerException != null)
- // Console.WriteLine($"[MailError] Inner: {ex.InnerException.Message}");
- // }
+ var subject = "แจ้งผลการสมัครสอบคัดเลือก " + periodExam.Name;
+ var body = candidate.FirstName + " " + candidate.LastName + " สถานะการสมัครสอบ: ติดตามประกาศทาง Website";
+ if (candidate.Email != null && candidate.Email != "") _mailService.SendMailToUser(subject, body, candidate.Email);
candidate.Status = "checkPoint";
}
else
{
- // if (candidate.Status != "waiver")
- // {
- // var subject = "แจ้งผลการสมัครสอบคัดเลือก " + periodExam.Name;
- // var body = candidate.FirstName + " " + candidate.LastName + " สถานะการสมัครสอบ: สละสิทธิ์สอบ";
- // try
- // {
- // if (candidate.Email != null && candidate.Email != "") _mailService.SendMailToUser(subject, body, candidate.Email);
- // }
- // catch (Exception ex)
- // {
- // Console.WriteLine($"[MailError] ส่ง email ไม่สำเร็จ: {candidate.Email} | {ex.Message}");
- // if (ex.InnerException != null)
- // Console.WriteLine($"[MailError] Inner: {ex.InnerException.Message}");
- // }
- // }
+ if (candidate.Status != "waiver")
+ {
+ var subject = "แจ้งผลการสมัครสอบคัดเลือก " + periodExam.Name;
+ var body = candidate.FirstName + " " + candidate.LastName + " สถานะการสมัครสอบ: สละสิทธิ์สอบ";
+ if (candidate.Email != null && candidate.Email != "") _mailService.SendMailToUser(subject, body, candidate.Email);
+ }
candidate.Status = "waiver";
}
}
else
{
- // if (candidate.Status != "waiver")
- // {
- // var subject = "แจ้งผลการสมัครสอบคัดเลือก " + periodExam.Name;
- // var body = candidate.FirstName + " " + candidate.LastName + " สถานะการสมัครสอบ: สละสิทธิ์สอบ";
- // try
- // {
- // if (candidate.Email != null && candidate.Email != "") _mailService.SendMailToUser(subject, body, candidate.Email);
- // }
- // catch (Exception ex)
- // {
- // Console.WriteLine($"[MailError] ส่ง email ไม่สำเร็จ: {candidate.Email} | {ex.Message}");
- // if (ex.InnerException != null)
- // Console.WriteLine($"[MailError] Inner: {ex.InnerException.Message}");
- // }
- // }
+ if (candidate.Status != "waiver")
+ {
+ var subject = "แจ้งผลการสมัครสอบคัดเลือก " + periodExam.Name;
+ var body = candidate.FirstName + " " + candidate.LastName + " สถานะการสมัครสอบ: สละสิทธิ์สอบ";
+ if (candidate.Email != null && candidate.Email != "") _mailService.SendMailToUser(subject, body, candidate.Email);
+ }
candidate.Status = "waiver";
}
periodExam.SetSeat = true;
@@ -1336,30 +1309,30 @@ namespace BMA.EHR.Recurit.Exam.Service.Services
candidate.Pass = item.Pass;
candidate.ExamReason = item.ExamReason;
candidate.Number = item.Number;
- // var subject = "แจ้งผลการสมัครสอบคัดเลือก " + periodExam.Name;
- // var body = candidate.FirstName + " " + candidate.LastName + " สถานะการสมัครสอบ: สอบคัดเลือกสำเร็จ
" + "ผลการสอบของท่าน คือ " + candidate.Pass;
- // if (candidate.Email != null && candidate.Email != "") _mailService.SendMailToUser(subject, body, candidate.Email);
+ var subject = "แจ้งผลการสมัครสอบคัดเลือก " + periodExam.Name;
+ var body = candidate.FirstName + " " + candidate.LastName + " สถานะการสมัครสอบ: สอบคัดเลือกสำเร็จ
" + "ผลการสอบของท่าน คือ " + candidate.Pass;
+ if (candidate.Email != null && candidate.Email != "") _mailService.SendMailToUser(subject, body, candidate.Email);
candidate.Status = "done";
}
else
{
- // if (candidate.Status != "waiver")
- // {
- // var subject = "แจ้งผลการสมัครสอบคัดเลือก " + periodExam.Name;
- // var body = candidate.FirstName + " " + candidate.LastName + " สถานะการสมัครสอบ: สละสิทธิ์สอบ";
- // if (candidate.Email != null && candidate.Email != "") _mailService.SendMailToUser(subject, body, candidate.Email);
- // }
+ if (candidate.Status != "waiver")
+ {
+ var subject = "แจ้งผลการสมัครสอบคัดเลือก " + periodExam.Name;
+ var body = candidate.FirstName + " " + candidate.LastName + " สถานะการสมัครสอบ: สละสิทธิ์สอบ";
+ if (candidate.Email != null && candidate.Email != "") _mailService.SendMailToUser(subject, body, candidate.Email);
+ }
// candidate.Status = "waiver";
}
}
else
{
- // if (candidate.Status != "waiver")
- // {
- // var subject = "แจ้งผลการสมัครสอบคัดเลือก " + periodExam.Name;
- // var body = candidate.FirstName + " " + candidate.LastName + " สถานะการสมัครสอบ: สละสิทธิ์สอบ";
- // if (candidate.Email != null && candidate.Email != "") _mailService.SendMailToUser(subject, body, candidate.Email);
- // }
+ if (candidate.Status != "waiver")
+ {
+ var subject = "แจ้งผลการสมัครสอบคัดเลือก " + periodExam.Name;
+ var body = candidate.FirstName + " " + candidate.LastName + " สถานะการสมัครสอบ: สละสิทธิ์สอบ";
+ if (candidate.Email != null && candidate.Email != "") _mailService.SendMailToUser(subject, body, candidate.Email);
+ }
// candidate.Status = "waiver";
}
periodExam.SetSeat = true;
@@ -1652,101 +1625,6 @@ namespace BMA.EHR.Recurit.Exam.Service.Services
};
}
- public async Task DownloadCandidateExamAsync(string examId)
- {
- var periodExam = await _context.PeriodExams.AsQueryable()
- .Where(x => x.CheckDisability == false)
- .FirstOrDefaultAsync(x => x.Id == Guid.Parse(examId));
-
- if (periodExam == null)
- throw new Exception(GlobalMessages.ExamNotFound);
-
- var data = await _context.Candidates.AsQueryable()
- .Include(x => x.PeriodExam)
- .Where(x => x.PeriodExam == periodExam)
- .Where(x => x.Status != "register")
- .Where(x => x.ExamIdenNumber != null && x.ExamIdenNumber != "")
- .OrderBy(x => x.ExamIdenNumber)
- .Select(p => new
- {
- ExamId = p.ExamIdenNumber == null ? null : (p.ExamIdenNumber.ToThaiNumber()),
- FullName = $"{p.PrefixName}{p.FirstName} {p.LastName}",
- PositionName = "",
- ExamName =
- ($"{p.PeriodExam.Name} ครั้งที่ {p.PeriodExam.Round}/{p.PeriodExam.Year.Value.ToThaiYear()}").ToThaiNumber(),
- }).ToListAsync();
-
- if (data.Count == 0)
- throw new Exception("ไม่พบข้อมูลในระบบ");
-
- var examName = data[0].ExamName;
- return new
- {
- template = "rptCandidateList",
- reportName = $"รายชื่อผู้มีสิทธิ์สอบ_{data.First().ExamName}",
- data = new
- {
- examName = examName,
- data = data
- }
- };
- }
-
- public async Task DownloadPassExamAsync(string examId)
- {
- var periodExam = await _context.PeriodExams.AsQueryable()
- .Where(x => x.CheckDisability == false)
- .FirstOrDefaultAsync(x => x.Id == Guid.Parse(examId));
-
- if (periodExam == null)
- throw new Exception(GlobalMessages.ExamNotFound);
-
- var candidates = await _context.Candidates.AsQueryable()
- .Include(x => x.PeriodExam)
- .ThenInclude(x => x.ScoreImport)
- .Where(x => x.PeriodExam == periodExam)
- .Where(x => x.Status != "register")
- .ToListAsync();
-
- var data = candidates.Select((p, idx) => new
- {
- SeatNumber = p.SeatNumber == null ? "-" : (p.SeatNumber.ToThaiNumber()),
- CitizenId = p.CitizenId == null ? "-" : (p.CitizenId.ToThaiNumber()),
- FullName = $"{p.PrefixName}{p.FirstName} {p.LastName}",
- DateOfBirth = p.DateOfBirth == null ? "-" : (p.DateOfBirth.Value.ToThaiShortDate()),
- ExamName = ($"{p.PeriodExam.Name} ครั้งที่ {p.PeriodExam.Round}/{p.PeriodExam.Year.Value.ToThaiYear()}").ToThaiNumber(),
- Number = p.Number == null ? (idx + 1).ToString().ToThaiNumber() : p.Number.ToThaiNumber(),
- FullA = "๐",
- SumA = "๐",
- FullB = p.PointTotalB == null ? "-" : p.PointTotalB.ToString(),
- SumB = p.PointB == null ? "-" : p.PointB.ToString(),
- FullC = p.PointTotalC == null ? "-" : p.PointTotalC.ToString(),
- SumC = p.PointC == null ? "-" : p.PointC.ToString(),
- SumScore = ((Convert.ToInt32(p.PointB ?? "0") + Convert.ToInt32(p.PointC ?? "0")).ToString()).ToThaiNumber(),
- ExamResult = p.Pass,
- ExamThaiId = p.ExamIdenNumber == null ? "-" : p.ExamIdenNumber.ToThaiNumber(),
- ExamId = p.ExamIdenNumber,
- })
- .OrderBy(x => x.ExamId)
- .Where(x => x.ExamResult?.Trim() == "ได้")
- .ToList();
-
- if (data.Count == 0)
- throw new Exception("ไม่พบข้อมูลในระบบ");
-
- var examName = data[0].ExamName;
- return new
- {
- template = "rptPassExamList",
- reportName = $"รายชื่อผู้สอบแข่งขันได้_{periodExam.Name} ครั้งที่ {periodExam.Round}/{periodExam.Year.Value.ToThaiYear()}",
- data = new
- {
- examName = examName,
- data = data
- }
- };
- }
-
public async Task GetsPaymentExamAsync(string examId)
{
var periodExam = await _context.PeriodExams.AsQueryable()
@@ -2982,7 +2860,7 @@ namespace BMA.EHR.Recurit.Exam.Service.Services
using (var client = new HttpClient())
{
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", token.Replace("Bearer ", ""));
- client.DefaultRequestHeaders.Add("api-key", _configuration["API_KEY"]);
+ client.DefaultRequestHeaders.Add("api_key", _configuration["API_KEY"]);
var _req = new HttpRequestMessage(HttpMethod.Get, apiUrl);
var _res = await client.SendAsync(_req);
var _result = await _res.Content.ReadAsStringAsync();
@@ -3177,7 +3055,7 @@ namespace BMA.EHR.Recurit.Exam.Service.Services
throw new Exception(GlobalMessages.ExamNotFound);
var _placement = await _contextMetadata.Placements.AsQueryable()
- .FirstOrDefaultAsync(x => x.PlacementType.Name == "คัดเลือกอื่นๆ" && x.RefId == periodExam.Id);
+ .FirstOrDefaultAsync(x => x.PlacementType.Name == "คัดเลือกคนพิการ" && x.RefId == periodExam.Id);
if (_placement != null)
throw new Exception("รอบการสอบนี้ได้ทำการบรรจุไปแล้ว");
@@ -3195,7 +3073,7 @@ namespace BMA.EHR.Recurit.Exam.Service.Services
Round = periodExam.Round?.ToString() ?? "",
Year = (int)(periodExam.Year ?? 0),
Number = await _context.Disables.AsQueryable().Where(x => x.PeriodExam == periodExam).CountAsync(),
- PlacementType = placementTypesCache.FirstOrDefault(x => x.Name.Trim().ToUpper().Contains("คัดเลือกอื่นๆ")) ?? placementTypesCache.First(),
+ PlacementType = placementTypesCache.FirstOrDefault(x => x.Name.Trim().ToUpper().Contains("คัดเลือกคนพิการ")) ?? placementTypesCache.First(),
StartDate = accountStartDate,
EndDate = accountStartDate.AddYears(2).AddDays(-1),
CreatedAt = DateTime.Now,
@@ -3319,28 +3197,6 @@ namespace BMA.EHR.Recurit.Exam.Service.Services
positionNameWithoutLevel = positionNameWithoutLevel.Replace(posLevelName, "").Trim();
}
- // lookup province, district, subDistrict IDs with parent filtering
- var registProvinceId = provincesCache.FirstOrDefault(x => x.name == firstAddress?.Province)?.Id;
- var registDistrictId = districtsCache.FirstOrDefault(x => x.name == firstAddress?.Amphur && x.provinceId == registProvinceId)?.Id;
- var registSubDistrictId = subDistrictsCache.FirstOrDefault(x => x.name == firstAddress?.District && x.districtId == registDistrictId)?.Id;
- var currentProvinceId = provincesCache.FirstOrDefault(x => x.name == firstAddress?.Province1)?.Id;
- var currentDistrictId = districtsCache.FirstOrDefault(x => x.name == firstAddress?.Amphur1 && x.provinceId == currentProvinceId)?.Id;
- var currentSubDistrictId = subDistrictsCache.FirstOrDefault(x => x.name == firstAddress?.District1 && x.districtId == currentDistrictId)?.Id;
-
- // log warning when address lookup fails
- if (registProvinceId == null && !string.IsNullOrWhiteSpace(firstAddress?.Province))
- Console.WriteLine($"[WARN] Regist province not found: {firstAddress?.Province}");
- if (registDistrictId == null && !string.IsNullOrWhiteSpace(firstAddress?.Amphur))
- Console.WriteLine($"[WARN] Regist district not found: {firstAddress?.Amphur}, Province: {firstAddress?.Province}");
- if (registSubDistrictId == null && !string.IsNullOrWhiteSpace(firstAddress?.District))
- Console.WriteLine($"[WARN] Regist subdistrict not found: {firstAddress?.District}, District: {firstAddress?.Amphur}");
- if (currentProvinceId == null && !string.IsNullOrWhiteSpace(firstAddress?.Province1))
- Console.WriteLine($"[WARN] Current province not found: {firstAddress?.Province1}");
- if (currentDistrictId == null && !string.IsNullOrWhiteSpace(firstAddress?.Amphur1))
- Console.WriteLine($"[WARN] Current district not found: {firstAddress?.Amphur1}, Province: {firstAddress?.Province1}");
- if (currentSubDistrictId == null && !string.IsNullOrWhiteSpace(firstAddress?.District1))
- Console.WriteLine($"[WARN] Current subdistrict not found: {firstAddress?.District1}, District: {firstAddress?.Amphur1}");
-
var placementProfile = new PlacementProfile
{
Placement = placement,
@@ -3362,15 +3218,15 @@ namespace BMA.EHR.Recurit.Exam.Service.Services
Telephone = firstAddress?.Telephone ?? "",
MobilePhone = firstAddress?.Mobile ?? "",
RegistAddress = registAddress,
- RegistProvinceId = registProvinceId,
- RegistDistrictId = registDistrictId,
- RegistSubDistrictId = registSubDistrictId,
+ RegistProvinceId = provincesCache.FirstOrDefault(x => x.name == firstAddress?.Province)?.Id,
+ RegistDistrictId = districtsCache.FirstOrDefault(x => x.name == firstAddress?.District)?.Id,
+ RegistSubDistrictId = subDistrictsCache.FirstOrDefault(x => x.name == firstAddress?.Soi)?.Id,
RegistZipCode = firstAddress?.ZipCode ?? "",
RegistSame = false,
CurrentAddress = currentAddress,
- CurrentProvinceId = currentProvinceId,
- CurrentDistrictId = currentDistrictId,
- CurrentSubDistrictId = currentSubDistrictId,
+ CurrentProvinceId = provincesCache.FirstOrDefault(x => x.name == firstAddress?.Province1)?.Id,
+ CurrentDistrictId = districtsCache.FirstOrDefault(x => x.name == firstAddress?.District1)?.Id,
+ CurrentSubDistrictId = subDistrictsCache.FirstOrDefault(x => x.name == firstAddress?.Soi1)?.Id,
CurrentZipCode = firstAddress?.ZipCode1,
Marry = candidate.Marry?.Contains("สมรส") ?? false,
OccupationPositionType = "other",