diff --git a/Controllers/DisableController.cs b/Controllers/DisableController.cs index 6a8fe2f..c8271fe 100644 --- a/Controllers/DisableController.cs +++ b/Controllers/DisableController.cs @@ -2015,6 +2015,7 @@ namespace BMA.EHR.Recurit.Exam.Service.Controllers var data = new List(); var p_Id = new MySqlParameter("@id", id); + int total = 0; // --------------------------- // 1️. ดึงรายละเอียดสอบ (exam_info) @@ -2022,15 +2023,15 @@ namespace BMA.EHR.Recurit.Exam.Service.Controllers using (var cmd = _context.Database.GetDbConnection().CreateCommand()) { cmd.CommandTimeout = 0; - var sb = new StringBuilder(); - // ปรับ SELECT * → SELECT เฉพาะ field ที่ C# ใช้ + var sb = new StringBuilder(); sb.Append(@" SELECT examID, profileID, prefix, fullName, dateofbirth, gender, degree, major, majorgroup, certificateno, certificateIssueDate, score, result, examAttribute, remark, isspecial, applydate, university, position_name, hddPosition, typeTest, position_level, position_type, - exam_name, exam_order, score_year + exam_name, exam_order, score_year, + COUNT(*) OVER() AS total_count FROM exam_info WHERE disable_import_id = @id "); @@ -2038,20 +2039,7 @@ namespace BMA.EHR.Recurit.Exam.Service.Controllers cmd.Parameters.Clear(); cmd.Parameters.Add(p_Id); - //// เพิ่ม dynamic filter - //if (!string.IsNullOrWhiteSpace(req.ExamAttribute)) - //{ - // sb.Append(" AND examAttribute = @a "); - // cmd.Parameters.Add(new MySqlParameter("@a", req.ExamAttribute)); - //} - - //if (!string.IsNullOrWhiteSpace(req.ExamResult)) - //{ - // sb.Append(" AND result = @r "); - // cmd.Parameters.Add(new MySqlParameter("@r", req.ExamResult)); - //} - - var keywordParam = req.keyword?.Trim(); // Keyword จาก FE + var keywordParam = req.keyword?.Trim(); if (!string.IsNullOrWhiteSpace(keywordParam)) { sb.Append(@" @@ -2067,7 +2055,9 @@ namespace BMA.EHR.Recurit.Exam.Service.Controllers cmd.Parameters.Add(new MySqlParameter("@kw", $"%{keywordParam}%")); } - // Paging และ sorting + // --------------------------- + // Paging + Sorting + // --------------------------- sb.Append(" ORDER BY examID "); sb.Append(" LIMIT @PageSize OFFSET @Offset "); cmd.Parameters.Add(new MySqlParameter("@PageSize", req.PageSize)); @@ -2078,12 +2068,15 @@ namespace BMA.EHR.Recurit.Exam.Service.Controllers _context.Database.OpenConnection(); // --------------------------- - // 2️. ใช้ DbDataReader แทน DataTable → ประหยัด memory และเร็วขึ้น + // ดึงข้อมูล + total // --------------------------- using (var reader = cmd.ExecuteReader()) { while (reader.Read()) { + if (total == 0) + total = Convert.ToInt32(reader["total_count"]); + data.Add(new { examID = reader["examID"].ToString(), @@ -2165,6 +2158,7 @@ namespace BMA.EHR.Recurit.Exam.Service.Controllers return Success(new { data = data, + total = total, header = header, round = periodExam.Round, year = periodExam.Year