diff --git a/Controllers/RecruitController.cs b/Controllers/RecruitController.cs
index 7b44a0e..ca9ed1d 100644
--- a/Controllers/RecruitController.cs
+++ b/Controllers/RecruitController.cs
@@ -2261,31 +2261,6 @@ namespace BMA.EHR.Recruit.Service.Controllers
.ToList();
-
- //var periods = _context.RecruitImports.AsQueryable()
- // .Where(x => x.Year == this_year)
- // .Include(x => x.RecruitImages)
- // .Select(r => new
- // {
- // id = r.Id,
- // title = $"{r.Name} ครั้งที่ {r.Order}/{r.Year.ToThaiYear()}",
- // category = "สำนักงาน ก.ก.",
- // category_id = 1,
- // announcement_startDate = r.AnnouncementStartDate == null ? "" : r.AnnouncementStartDate.Value.ToString("yyyy-mm-dd"),
- // announcement_endDate = r.AnnouncementEndDate == null ? "" : r.AnnouncementEndDate.Value.ToString("yyyy-MM-dd"),
- // announcementExam = true,
- // register_startDate = r.RegisterStartDate == null ? "" : r.RegisterStartDate.Value.ToString("yyyy-MM-dd"),
- // register_endDate = r.RegisterEndDate == null ? "" : r.RegisterEndDate.Value.ToString("yyyy-MM-dd"),
- // payment_startDate = r.PaymentStartDate == null ? "" : r.PaymentStartDate.Value.ToString("yyyy-MM-dd"),
- // payment_endDate = r.PaymentEndDate == null ? "" : r.PaymentEndDate.Value.ToString("yyyy-MM-dd"),
- // exam_date = r.ExamDate == null ? "" : r.ExamDate.Value.ToString("yyyy-MM-dd"),
- // image = r.RecruitImages.OrderBy(o => o.CreatedAt).FirstOrDefault() == null ? "" :
- // r.RecruitImages.OrderBy(o => o.CreatedAt).FirstOrDefault().Document.Id.ToString("D")
- // })
- // .OrderByDescending(x => x.announcement_startDate)
- // .ToList();
-
-
if (limit > 0)
periods = periods.Take(limit).ToList();
@@ -2319,6 +2294,95 @@ namespace BMA.EHR.Recruit.Service.Controllers
}
}
+ ///
+ /// ดึงรายการรอบการสอบแข่งขันสำหรับ CMS (POST version)
+ ///
+ /// ข้อมูลการกรองตามช่วงวันที่
+ /// รายการรอบการสอบแข่งขัน
+ /// เมื่อดึงข้อมูลสำเร็จ
+ /// ข้อมูลที่ส่งมาไม่ถูกต้อง
+ /// เมื่อเกิดข้อผิดพลาดในการทำงาน
+ [HttpPost("competitive")]
+ [AllowAnonymous]
+ [ProducesResponseType(StatusCodes.Status200OK)]
+ [ProducesResponseType(StatusCodes.Status400BadRequest)]
+ [ProducesResponseType(StatusCodes.Status500InternalServerError)]
+ public IActionResult GetPeriodForCMSPost([FromBody] CompetitivePeriodRequest request)
+ {
+ try
+ {
+ if (request == null)
+ return BadRequest("Request body is required");
+
+ var query = _context.RecruitImports.AsQueryable();
+
+ // กรองตามช่วงวันที่ (ถ้ามีการส่งมา)
+ if (request.StartDate.HasValue && request.EndDate.HasValue)
+ {
+ var startDate = request.StartDate.Value.Date;
+ var endDate = request.EndDate.Value.Date.AddDays(1).AddTicks(-1); // ถึงสิ้นวัน
+
+ query = query.Where(r =>
+ (r.AnnouncementStartDate != null && r.AnnouncementStartDate.Value >= startDate && r.AnnouncementStartDate.Value <= endDate) ||
+ (r.AnnouncementEndDate != null && r.AnnouncementEndDate.Value >= startDate && r.AnnouncementEndDate.Value <= endDate) ||
+ (r.AnnouncementStartDate != null && r.AnnouncementEndDate != null &&
+ r.AnnouncementStartDate.Value <= endDate && r.AnnouncementEndDate.Value >= startDate)
+ );
+ }
+
+ var periods = (from r in query.Include(x => x.RecruitImages)
+ orderby r.AnnouncementStartDate descending
+ select new
+ {
+ id = r.Id,
+ title = $"{r.Name} ครั้งที่ {r.Order}/{r.Year.ToThaiYear()}",
+ category = "สำนักงาน ก.ก.",
+ category_id = 1,
+ announcement_startDate = r.AnnouncementStartDate == null ? "" : r.AnnouncementStartDate.Value.ToString("yyyy-MM-dd"),
+ announcement_endDate = r.AnnouncementEndDate == null ? "" : r.AnnouncementEndDate.Value.ToString("yyyy-MM-dd"),
+ announcementExam = true,
+ register_startDate = r.RegisterStartDate == null ? "" : r.RegisterStartDate.Value.ToString("yyyy-MM-dd"),
+ register_endDate = r.RegisterEndDate == null ? "" : r.RegisterEndDate.Value.ToString("yyyy-MM-dd"),
+ payment_startDate = r.PaymentStartDate == null ? "" : r.PaymentStartDate.Value.ToString("yyyy-MM-dd"),
+ payment_endDate = r.PaymentEndDate == null ? "" : r.PaymentEndDate.Value.ToString("yyyy-MM-dd"),
+ exam_date = r.ExamDate == null ? "" : r.ExamDate.Value.ToString("yyyy-MM-dd"),
+ image = r.RecruitImages.OrderBy(o => o.CreatedAt).FirstOrDefault() == null ? "" :
+ r.RecruitImages.OrderBy(o => o.CreatedAt).FirstOrDefault().Document.Id.ToString("D")
+ })
+ .ToList();
+
+ if (request.Limit > 0)
+ periods = periods.Take(request.Limit).ToList();
+
+ var result = new List();
+ foreach (var p in periods)
+ {
+ result.Add(new
+ {
+ p.id,
+ p.title,
+ p.category,
+ p.category_id,
+ p.announcementExam,
+ p.announcement_startDate,
+ p.announcement_endDate,
+ p.register_endDate,
+ p.register_startDate,
+ p.payment_startDate,
+ p.payment_endDate,
+ p.exam_date,
+ image = p.image == "" ? "" : _minioService.GetFilePath(Guid.Parse(p.image)).Result,
+ });
+ }
+
+ return Ok(result);
+ }
+ catch (Exception ex)
+ {
+ return StatusCode(500, ex.Message);
+ }
+ }
+
[HttpGet("competitive/{id:length(36)}")]
[AllowAnonymous]
public IActionResult GetPeriodForCMSById(Guid id)
diff --git a/Requests/Recruits/CompetitivePeriodRequest.cs b/Requests/Recruits/CompetitivePeriodRequest.cs
new file mode 100644
index 0000000..5426b45
--- /dev/null
+++ b/Requests/Recruits/CompetitivePeriodRequest.cs
@@ -0,0 +1,23 @@
+using System.ComponentModel.DataAnnotations;
+
+namespace BMA.EHR.Recruit.Service.Requests.Recruits
+{
+ public class CompetitivePeriodRequest
+ {
+ ///
+ /// วันที่เริ่มต้นของช่วงที่ต้องการกรอง
+ ///
+ public DateTime? StartDate { get; set; }
+
+ ///
+ /// วันที่สิ้นสุดของช่วงที่ต้องการกรอง
+ ///
+ public DateTime? EndDate { get; set; }
+
+ ///
+ /// จำนวนรายการสูงสุดที่ต้องการ (0 = ไม่จำกัด)
+ ///
+ [Range(0, int.MaxValue, ErrorMessage = "Limit ต้องมากกว่าหรือเท่ากับ 0")]
+ public int Limit { get; set; } = 0;
+ }
+}
\ No newline at end of file