From 48447d065cb93a5851eaced5874c547a2da37710 Mon Sep 17 00:00:00 2001 From: Bright Date: Wed, 24 Sep 2025 11:25:47 +0700 Subject: [PATCH] =?UTF-8?q?=E0=B9=81=E0=B8=81=E0=B9=89=20total?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Controllers/RecruitController.cs | 33 +++++++++++++------------------- 1 file changed, 13 insertions(+), 20 deletions(-) diff --git a/Controllers/RecruitController.cs b/Controllers/RecruitController.cs index 86d43cf..31b22e2 100644 --- a/Controllers/RecruitController.cs +++ b/Controllers/RecruitController.cs @@ -1961,6 +1961,7 @@ namespace BMA.EHR.Recruit.Service.Controllers { var data = new List(); var p_Id = new MySqlParameter("@id", id); + int total = 0; // --------------------------- // 1️. ดึงรายละเอียดสอบ (exam_info) @@ -1968,15 +1969,15 @@ namespace BMA.EHR.Recruit.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 recruit_import_id = @id "); @@ -1984,20 +1985,7 @@ namespace BMA.EHR.Recruit.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(@" @@ -2013,7 +2001,9 @@ namespace BMA.EHR.Recruit.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)); @@ -2024,12 +2014,15 @@ namespace BMA.EHR.Recruit.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(), @@ -2124,7 +2117,7 @@ namespace BMA.EHR.Recruit.Service.Controllers return Success(new { data = data, - total = data.Count, + total = total, header = header, period = period, });