diff --git a/BMA.EHR.Retirement.Service/Controllers/RetirementController.cs b/BMA.EHR.Retirement.Service/Controllers/RetirementController.cs index 74f217a2..ad3105ba 100644 --- a/BMA.EHR.Retirement.Service/Controllers/RetirementController.cs +++ b/BMA.EHR.Retirement.Service/Controllers/RetirementController.cs @@ -1306,12 +1306,20 @@ namespace BMA.EHR.Retirement.Service.Controllers { return Error(jsonData["message"]?.ToString(), StatusCodes.Status403Forbidden); } + + // แยกดึงข้อมูลเพื่อลดภาระ Database var retire = await _context.RetirementPeriods - .Include(x => x.RetirementProfiles) - .Include(x => x.RetirementRawProfiles) + //.Include(x => x.RetirementProfiles) + //.Include(x => x.RetirementRawProfiles) .FirstOrDefaultAsync(x => x.Id == retireId); + if (retire == null) return Error(GlobalMessages.RetirementNotFound, 404); + + // โหลดข้อมูลลูกแยกกัน + var profiles = await _context.RetirementProfiles.Where(x => x.RetirementPeriod.Id == retireId).ToListAsync(); + var rawProfiles = await _context.RetirementRawProfiles.Where(x => x.RetirementPeriod.Id == retireId).ToListAsync(); + if (Request.Form.Files != null && Request.Form.Files.Count != 0) { var file = Request.Form.Files[0]; @@ -1366,7 +1374,7 @@ namespace BMA.EHR.Retirement.Service.Controllers } var order = 1; - foreach (var profile in retire.RetirementProfiles + foreach (var profile in profiles .OrderBy(x => string.IsNullOrEmpty(x.root) ? int.MaxValue : rootOrder.ToObject>().IndexOf(x.root)) .ThenBy(x => child1Order.ToObject>().IndexOf(x.child1 ?? "")) .ThenBy(x => child2Order.ToObject>().IndexOf(x.child2 ?? "")) @@ -1381,7 +1389,7 @@ namespace BMA.EHR.Retirement.Service.Controllers } order = 1; - foreach (var profile in retire.RetirementRawProfiles + foreach (var profile in rawProfiles .OrderBy(x => string.IsNullOrEmpty(x.root) ? int.MaxValue : rootOrder.ToObject>().IndexOf(x.root)) .ThenBy(x => child1Order.ToObject>().IndexOf(x.child1 ?? "")) .ThenBy(x => child2Order.ToObject>().IndexOf(x.child2 ?? ""))