diff --git a/BMA.EHR.Domain/Models/Retirement/RetirementResign.cs b/BMA.EHR.Domain/Models/Retirement/RetirementResign.cs index 3d4cd99d..91e60b07 100644 --- a/BMA.EHR.Domain/Models/Retirement/RetirementResign.cs +++ b/BMA.EHR.Domain/Models/Retirement/RetirementResign.cs @@ -39,6 +39,19 @@ namespace BMA.EHR.Domain.Models.Retirement public string? RejectReason { get; set; } [Comment("สถานะการใช้งาน")] public bool IsActive { get; set; } = true; + [Comment("สถานะยับยั้งผู้ดูแล")] + public bool? OligarchReject { get; set; } + [Comment("เหตุผลยับยั้งผู้ดูแล")] + public string? OligarchRejectReason { get; set; } + [Comment("วันที่ยับยั้งผู้ดูแล")] + public DateTime? OligarchRejectDate { get; set; } + [Comment("สถานะยับยั้งผู้บังคับบัญชา")] + public bool? CommanderReject { get; set; } + [Comment("เหตุผลยับยั้งผู้บังคับบัญชา")] + public string? CommanderRejectReason { get; set; } + [Comment("วันที่ยับยั้งผู้บังคับบัญชา")] + public DateTime? CommanderRejectDate { get; set; } + public virtual List RetirementResignDocs { get; set; } = new List(); } } diff --git a/BMA.EHR.Retirement.Service/Controllers/RetirementResignController.cs b/BMA.EHR.Retirement.Service/Controllers/RetirementResignController.cs index a45f33fe..8c8d9cd3 100644 --- a/BMA.EHR.Retirement.Service/Controllers/RetirementResignController.cs +++ b/BMA.EHR.Retirement.Service/Controllers/RetirementResignController.cs @@ -214,6 +214,12 @@ namespace BMA.EHR.Retirement.Service.Controllers p.PositionLevelOld, p.PositionNumberOld, p.OrganizationPositionOld, + p.OligarchReject, + p.OligarchRejectReason, + p.OligarchRejectDate, + p.CommanderReject, + p.CommanderRejectReason, + p.CommanderRejectDate, RetirementResignDocs = p.RetirementResignDocs.Where(d => d.Document != null).Select(d => new { d.Document.Id, d.Document.FileName }), }) .FirstOrDefaultAsync(); @@ -252,6 +258,12 @@ namespace BMA.EHR.Retirement.Service.Controllers data.RejectReason, data.IsActive, data.CreatedAt, + data.OligarchReject, + data.OligarchRejectReason, + data.OligarchRejectDate, + data.CommanderReject, + data.CommanderRejectReason, + data.CommanderRejectDate, Docs = retirementResignDocs, }; @@ -453,6 +465,116 @@ namespace BMA.EHR.Retirement.Service.Controllers return Success(); } + /// + /// ผู้บังคับบัญชา อนุมัติคำลาออก + /// + /// Id คำลาออก + /// + /// + /// ค่าตัวแปรที่ส่งมาไม่ถูกต้อง + /// ไม่ได้ Login เข้าระบบ + /// เมื่อเกิดข้อผิดพลาดในการทำงาน + [HttpPut("commander/confirm/{id:length(36)}")] + public async Task> AdminConfirm([FromBody] RetirementReasonDateRequest req, Guid id) + { + var updated = await _context.RetirementResigns + .FirstOrDefaultAsync(x => x.Id == id); + if (updated == null) + return Error(GlobalMessages.RetirementResignNotFound, 404); + + // updated.Status = "APPROVE"; + updated.CommanderReject = false; + updated.LastUpdateFullName = FullName ?? "System Administrator"; + updated.LastUpdateUserId = UserId ?? ""; + updated.LastUpdatedAt = DateTime.Now; + await _context.SaveChangesAsync(); + + return Success(); + } + + /// + /// ผู้บังคับบัญชา ไม่อนุมัติคำลาออก + /// + /// Id คำลาออก + /// + /// + /// ค่าตัวแปรที่ส่งมาไม่ถูกต้อง + /// ไม่ได้ Login เข้าระบบ + /// เมื่อเกิดข้อผิดพลาดในการทำงาน + [HttpPut("commander/reject/{id:length(36)}")] + public async Task> AdminReject([FromBody] RetirementReasonDateRequest req, Guid id) + { + var updated = await _context.RetirementResigns + .FirstOrDefaultAsync(x => x.Id == id); + if (updated == null) + return Error(GlobalMessages.RetirementResignNotFound, 404); + + // updated.Status = "REJECT"; + updated.CommanderReject = true; + updated.CommanderRejectReason = req.Reason; + updated.CommanderRejectDate = req.Date; + updated.LastUpdateFullName = FullName ?? "System Administrator"; + updated.LastUpdateUserId = UserId ?? ""; + updated.LastUpdatedAt = DateTime.Now; + await _context.SaveChangesAsync(); + + return Success(); + } + /// + /// ผู้มีอำนาจ อนุมัติคำลาออก + /// + /// Id คำลาออก + /// + /// + /// ค่าตัวแปรที่ส่งมาไม่ถูกต้อง + /// ไม่ได้ Login เข้าระบบ + /// เมื่อเกิดข้อผิดพลาดในการทำงาน + [HttpPut("oligarch/confirm/{id:length(36)}")] + public async Task> AdminConfirm([FromBody] RetirementReasonDateRequest req, Guid id) + { + var updated = await _context.RetirementResigns + .FirstOrDefaultAsync(x => x.Id == id); + if (updated == null) + return Error(GlobalMessages.RetirementResignNotFound, 404); + + // updated.Status = "APPROVE"; + updated.OligarchReject = false; + updated.LastUpdateFullName = FullName ?? "System Administrator"; + updated.LastUpdateUserId = UserId ?? ""; + updated.LastUpdatedAt = DateTime.Now; + await _context.SaveChangesAsync(); + + return Success(); + } + + /// + /// ผู้มีอำนาจ ไม่อนุมัติคำลาออก + /// + /// Id คำลาออก + /// + /// + /// ค่าตัวแปรที่ส่งมาไม่ถูกต้อง + /// ไม่ได้ Login เข้าระบบ + /// เมื่อเกิดข้อผิดพลาดในการทำงาน + [HttpPut("oligarch/reject/{id:length(36)}")] + public async Task> AdminReject([FromBody] RetirementReasonDateRequest req, Guid id) + { + var updated = await _context.RetirementResigns + .FirstOrDefaultAsync(x => x.Id == id); + if (updated == null) + return Error(GlobalMessages.RetirementResignNotFound, 404); + + // updated.Status = "REJECT"; + updated.OligarchReject = true; + updated.OligarchRejectReason = req.Reason; + updated.OligarchRejectDate = req.Date; + updated.LastUpdateFullName = FullName ?? "System Administrator"; + updated.LastUpdateUserId = UserId ?? ""; + updated.LastUpdatedAt = DateTime.Now; + await _context.SaveChangesAsync(); + + return Success(); + } /// /// สั่งรายชื่อไปออกคำสั่ง diff --git a/BMA.EHR.Retirement.Service/Requests/RetirementReasonDateRequest.cs b/BMA.EHR.Retirement.Service/Requests/RetirementReasonDateRequest.cs new file mode 100644 index 00000000..5e929f79 --- /dev/null +++ b/BMA.EHR.Retirement.Service/Requests/RetirementReasonDateRequest.cs @@ -0,0 +1,11 @@ +using BMA.EHR.Domain.Models.MetaData; +using Microsoft.EntityFrameworkCore; + +namespace BMA.EHR.Retirement.Service.Requests +{ + public class RetirementReasonDateRequest + { + public string Reason { get; set; } + public DateTime Date { get; set; } + } +}