แก้ total

This commit is contained in:
Bright 2025-09-24 11:25:47 +07:00
parent 608e2ea49b
commit 48447d065c

View file

@ -1961,6 +1961,7 @@ namespace BMA.EHR.Recruit.Service.Controllers
{
var data = new List<dynamic>();
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,
});