From 006cea048d78e1862e54d5d51d122153d04a1a47 Mon Sep 17 00:00:00 2001 From: Suphonchai Phoonsawat Date: Wed, 25 Feb 2026 15:26:49 +0700 Subject: [PATCH] Add ScheduleUpdateDna endpoint and DTO for updating DNA information in LeaveBeginningController --- .../Controllers/LeaveBeginningController.cs | 38 +++++++++++++++++++ .../LeaveBeginnings/EditLeaveBeginningDto.cs | 15 ++++++++ 2 files changed, 53 insertions(+) diff --git a/BMA.EHR.Leave/Controllers/LeaveBeginningController.cs b/BMA.EHR.Leave/Controllers/LeaveBeginningController.cs index f3b661cf..29ec361e 100644 --- a/BMA.EHR.Leave/Controllers/LeaveBeginningController.cs +++ b/BMA.EHR.Leave/Controllers/LeaveBeginningController.cs @@ -577,6 +577,44 @@ namespace BMA.EHR.Leave.Service.Controllers } } + + [HttpPut("schedule/update-dna")] + [AllowAnonymous] + public async Task> ScheduleUpdateDnaAsync([FromBody] ScheduleUpdateDnaDto req) + { + try + { + var profile = await _userProfileRepository.GetProfileByProfileIdNoAuthAsync(req.ProfileId, AccessToken); + if(profile == null) + { + return Error("ไม่พบข้อมูลข้าราชการหรือลูกจ้าง", StatusCodes.Status404NotFound); + } + // check duplicate + var oldData = await _context.LeaveBeginnings.Where(x => x.ProfileId == req.ProfileId + && x.LeaveYear == req.LeaveYear).ToListAsync(); + + foreach(var item in oldData) + { + item.RootDnaId = profile.RootDnaId; + item.Child1DnaId = profile.Child1DnaId; + item.Child2DnaId = profile.Child2DnaId; + item.Child3DnaId = profile.Child3DnaId; + item.Child4DnaId = profile.Child4DnaId; + + item.LastUpdateUserId = ""; + item.LastUpdateFullName = "System"; + item.LastUpdatedAt = DateTime.Now; + + await _leaveBeginningRepository.UpdateAsync(item); + } + return Success(); + } + catch (Exception ex) + { + return Error(ex); + } + } + #endregion } } diff --git a/BMA.EHR.Leave/DTOs/LeaveBeginnings/EditLeaveBeginningDto.cs b/BMA.EHR.Leave/DTOs/LeaveBeginnings/EditLeaveBeginningDto.cs index fe0c433f..03c96a49 100644 --- a/BMA.EHR.Leave/DTOs/LeaveBeginnings/EditLeaveBeginningDto.cs +++ b/BMA.EHR.Leave/DTOs/LeaveBeginnings/EditLeaveBeginningDto.cs @@ -45,4 +45,19 @@ namespace BMA.EHR.Leave.Service.DTOs.LeaveBeginnings [Required, Comment("จำนวนวันลายกมา")] public double LeaveDays { get; set; } = 0.0; } + + public class ScheduleUpdateDnaDto + { + [Required] + public Guid ProfileId { get; set; } = Guid.Empty; + + [Required, Comment("ปีงบประมาณ")] + public int LeaveYear { get; set; } = 0; + + public Guid? RootDnaId { get; set; } + public Guid? Child1DnaId { get; set; } + public Guid? Child2DnaId { get; set; } + public Guid? Child3DnaId { get; set; } + public Guid? Child4DnaId { get; set; } + } }