diff --git a/BMA.EHR.Placement.Service/Controllers/PlacementController.cs b/BMA.EHR.Placement.Service/Controllers/PlacementController.cs index 2a413aea..db3e9e86 100644 --- a/BMA.EHR.Placement.Service/Controllers/PlacementController.cs +++ b/BMA.EHR.Placement.Service/Controllers/PlacementController.cs @@ -1815,16 +1815,27 @@ namespace BMA.EHR.Placement.Service.Controllers [HttpPost("recruit/report/excecute")] public async Task> PostReportExecuteRecruit([FromBody] ReportExecuteRequest req) { + Console.WriteLine($"[RecruitReportExcecute] Starting execution at {DateTime.Now}"); + try { + Console.WriteLine($"[RecruitReportExcecute] Request received with {req?.refIds?.Length ?? 0} refIds"); + var placementProfile = await _context.PlacementProfiles .Include(x => x.PlacementCertificates) .Include(x => x.PlacementEducations) .Where(x => req.refIds.Select(x => x.refId).Contains(x.Id.ToString())) .ToListAsync(); + Console.WriteLine($"[RecruitReportExcecute] Found {placementProfile?.Count ?? 0} placement profiles"); + if (placementProfile == null) + { + Console.Error.WriteLine("[RecruitReportExcecute] PlacementProfile is null - returning NotFound"); return NotFound(); + } + + Console.WriteLine("[RecruitReportExcecute] Building resultData from placement profiles and refIds"); var resultData = (from p in placementProfile join r in req.refIds @@ -1977,6 +1988,9 @@ namespace BMA.EHR.Placement.Service.Controllers }, }).ToList(); + Console.WriteLine($"[RecruitReportExcecute] resultData built successfully with {resultData?.Count ?? 0} records"); + + Console.WriteLine($"[RecruitReportExcecute] Calling external API: {_configuration["API"]}/org/command/excexute/create-officer-profile"); var apiUrl = $"{_configuration["API"]}/org/command/excexute/create-officer-profile"; using (var client = new HttpClient()) { @@ -1988,8 +2002,10 @@ namespace BMA.EHR.Placement.Service.Controllers data = resultData }); var _result = await _res.Content.ReadAsStringAsync(); + Console.WriteLine($"[RecruitReportExcecute] External API response status: {_res.StatusCode}"); if (_res.IsSuccessStatusCode) { + Console.WriteLine("[RecruitReportExcecute] External API call successful - updating placement profiles"); placementProfile.ForEach(profile => { profile.PlacementStatus = "DONE"; @@ -2003,14 +2019,24 @@ namespace BMA.EHR.Placement.Service.Controllers profile.templateDoc = req.refIds[0].remark; } }); + Console.WriteLine($"[RecruitReportExcecute] Saving changes to database for {placementProfile.Count} profiles"); await _context.SaveChangesAsync(); + Console.WriteLine("[RecruitReportExcecute] Database save completed successfully"); + } + else + { + Console.Error.WriteLine($"[RecruitReportExcecute] External API call failed with status: {_res.StatusCode}"); + Console.Error.WriteLine($"[RecruitReportExcecute] Response content: {_result}"); } } + Console.WriteLine($"[RecruitReportExcecute] Process completed successfully at {DateTime.Now}"); return Success(); } - catch + catch (Exception ex) { + Console.Error.WriteLine($"[RecruitReportExcecute] Error occurred: {ex.Message}"); + Console.Error.WriteLine($"[RecruitReportExcecute] Stack trace: {ex.StackTrace}"); throw; } }