fix approve status
Some checks failed
release-dev / release-dev (push) Failing after 12s

This commit is contained in:
Suphonchai Phoonsawat 2025-04-29 14:12:54 +07:00
parent 16f6eb7b50
commit 746f435ca8

View file

@ -473,7 +473,7 @@ namespace BMA.EHR.Application.Repositories.Leaves.LeaveRequests
rawData.LeaveCancelStatus = "APPROVE"; rawData.LeaveCancelStatus = "APPROVE";
rawData.LeaveCancelComment = Reason; rawData.LeaveCancelComment = Reason;
await UpdateAsync(rawData); await UpdateWithTrackingAsync(rawData);
// TODO: remove วันลา // TODO: remove วันลา
@ -606,7 +606,7 @@ namespace BMA.EHR.Application.Repositories.Leaves.LeaveRequests
var userId = UserId == null ? Guid.Empty : Guid.Parse(UserId); var userId = UserId == null ? Guid.Empty : Guid.Parse(UserId);
var rawData = await GetByIdAsync(id); var rawData = await GetByIdWithTrackingAsync(id);
if (rawData == null) if (rawData == null)
{ {
throw new Exception(GlobalMessages.DataNotFound); throw new Exception(GlobalMessages.DataNotFound);
@ -618,6 +618,13 @@ namespace BMA.EHR.Application.Repositories.Leaves.LeaveRequests
} }
// check commander approve // check commander approve
//var approvers = await _dbContext.Set<LeaveRequestApprover>()
// //.AsNoTracking()
// .Include(x => x.LeaveRequest)
// .Where(x => x.LeaveRequest.Id == id && x.ApproveType == "COMMANDER")
// .OrderBy(x => x.Seq)
// .ToListAsync();
var approvers = rawData.Approvers.Where(x => x.ApproveType!.ToUpper() == "COMMANDER").OrderBy(x => x.Seq).ToList(); var approvers = rawData.Approvers.Where(x => x.ApproveType!.ToUpper() == "COMMANDER").OrderBy(x => x.Seq).ToList();
var approver = approvers.FirstOrDefault(x => x.KeycloakId == userId); var approver = approvers.FirstOrDefault(x => x.KeycloakId == userId);
@ -639,11 +646,33 @@ namespace BMA.EHR.Application.Repositories.Leaves.LeaveRequests
var maxSeq = approvers.Max(x => x.Seq); var maxSeq = approvers.Max(x => x.Seq);
//var data = await _dbContext.Set<LeaveRequestApprover>()
// .AsNoTracking()
// .Include(x => x.LeaveRequest)
// .Where(x => x.LeaveRequest.Id == id && x.KeycloakId == userId && x.ApproveType == "COMMANDER")
// .FirstOrDefaultAsync();
//if(data != null)
//{
// data.ApproveStatus = "APPROVE";
// data.Comment = reason;
// data.LastUpdatedAt = DateTime.Now;
// data.LastUpdateUserId = userId.ToString("D");
// data.LastUpdateFullName = FullName ?? "";
// await _appDbContext.SaveChangesAsync();
//}
approver.ApproveStatus = "APPROVE"; approver.ApproveStatus = "APPROVE";
approver.Comment = reason; approver.Comment = reason;
//await _dbContext.SaveChangesAsync();
if (approver.Seq != maxSeq) if (approver.Seq != maxSeq)
{ {
rawData.LeaveStatus = "PENDING";
await UpdateWithTrackingAsync(rawData);
var nextApprover = approvers.FirstOrDefault(x => x.Seq == approver.Seq + 1); var nextApprover = approvers.FirstOrDefault(x => x.Seq == approver.Seq + 1);
@ -657,9 +686,6 @@ namespace BMA.EHR.Application.Repositories.Leaves.LeaveRequests
}; };
_appDbContext.Set<Notification>().Add(noti); _appDbContext.Set<Notification>().Add(noti);
await _appDbContext.SaveChangesAsync(); await _appDbContext.SaveChangesAsync();
rawData.LeaveStatus = "PENDING";
await UpdateAsync(rawData);
} }
else else
{ {
@ -667,13 +693,14 @@ namespace BMA.EHR.Application.Repositories.Leaves.LeaveRequests
rawData.LeaveComment = reason; rawData.LeaveComment = reason;
rawData.ApproveStep = "st3"; rawData.ApproveStep = "st3";
await UpdateAsync(rawData); await UpdateWithTrackingAsync(rawData);
// TODO: Send notification to 1st Approver // TODO: Send notification to 1st Approver
var firstCommander = rawData.Approvers var firstCommander = rawData.Approvers
.Where(x => x.ApproveType!.ToUpper() == "APPROVER") .Where(x => x.ApproveType!.ToUpper() == "APPROVER")
.OrderBy(x => x.Seq) .OrderBy(x => x.Seq)
.FirstOrDefault(); .FirstOrDefault();
// Send Notification // Send Notification
var noti1 = new Notification var noti1 = new Notification
{ {
@ -685,7 +712,6 @@ namespace BMA.EHR.Application.Repositories.Leaves.LeaveRequests
_appDbContext.Set<Notification>().Add(noti1); _appDbContext.Set<Notification>().Add(noti1);
await _appDbContext.SaveChangesAsync(); await _appDbContext.SaveChangesAsync();
} }
} }
public async Task CommanderRejectLeaveRequest(Guid id, string reason) public async Task CommanderRejectLeaveRequest(Guid id, string reason)
@ -694,7 +720,7 @@ namespace BMA.EHR.Application.Repositories.Leaves.LeaveRequests
var userId = UserId == null ? Guid.Empty : Guid.Parse(UserId); var userId = UserId == null ? Guid.Empty : Guid.Parse(UserId);
var rawData = await GetByIdAsync(id); var rawData = await GetByIdWithTrackingAsync(id);
if (rawData == null) if (rawData == null)
{ {
throw new Exception(GlobalMessages.DataNotFound); throw new Exception(GlobalMessages.DataNotFound);
@ -748,7 +774,7 @@ namespace BMA.EHR.Application.Repositories.Leaves.LeaveRequests
await _appDbContext.SaveChangesAsync(); await _appDbContext.SaveChangesAsync();
rawData.LeaveStatus = "PENDING"; rawData.LeaveStatus = "PENDING";
await UpdateAsync(rawData); await UpdateWithTrackingAsync(rawData);
} }
else else
{ {
@ -756,7 +782,7 @@ namespace BMA.EHR.Application.Repositories.Leaves.LeaveRequests
rawData.LeaveComment = reason; rawData.LeaveComment = reason;
rawData.ApproveStep = "st3"; rawData.ApproveStep = "st3";
await UpdateAsync(rawData); await UpdateWithTrackingAsync(rawData);
// TODO: Send notification to 1st Approver // TODO: Send notification to 1st Approver
var firstCommander = rawData.Approvers var firstCommander = rawData.Approvers
@ -782,7 +808,7 @@ namespace BMA.EHR.Application.Repositories.Leaves.LeaveRequests
// Get UserId from token // Get UserId from token
var userId = UserId == null ? Guid.Empty : Guid.Parse(UserId); var userId = UserId == null ? Guid.Empty : Guid.Parse(UserId);
var rawData = await GetByIdAsync(id); var rawData = await GetByIdWithTrackingAsync(id);
if (rawData == null) if (rawData == null)
{ {
throw new Exception(GlobalMessages.DataNotFound); throw new Exception(GlobalMessages.DataNotFound);
@ -833,7 +859,7 @@ namespace BMA.EHR.Application.Repositories.Leaves.LeaveRequests
_appDbContext.Set<Notification>().Add(noti1); _appDbContext.Set<Notification>().Add(noti1);
await _appDbContext.SaveChangesAsync(); await _appDbContext.SaveChangesAsync();
await UpdateAsync(rawData); await UpdateWithTrackingAsync(rawData);
} }
else else
{ {
@ -847,7 +873,9 @@ namespace BMA.EHR.Application.Repositories.Leaves.LeaveRequests
rawData.LeaveDirectorComment = reason; rawData.LeaveDirectorComment = reason;
rawData.ApproveStep = "st4"; rawData.ApproveStep = "st4";
await UpdateAsync(rawData); await UpdateWithTrackingAsync(rawData);
// TODO : Update ไปตาราง beginning
var _baseAPI = _configuration["API"]; var _baseAPI = _configuration["API"];
var apiUrlSalary = string.Empty; var apiUrlSalary = string.Empty;
@ -922,7 +950,7 @@ namespace BMA.EHR.Application.Repositories.Leaves.LeaveRequests
// Get UserId from token // Get UserId from token
var userId = UserId == null ? Guid.Empty : Guid.Parse(UserId); var userId = UserId == null ? Guid.Empty : Guid.Parse(UserId);
var rawData = await GetByIdAsync(id); var rawData = await GetByIdWithTrackingAsync(id);
if (rawData == null) if (rawData == null)
{ {
throw new Exception(GlobalMessages.DataNotFound); throw new Exception(GlobalMessages.DataNotFound);
@ -973,7 +1001,7 @@ namespace BMA.EHR.Application.Repositories.Leaves.LeaveRequests
_appDbContext.Set<Notification>().Add(noti1); _appDbContext.Set<Notification>().Add(noti1);
await _appDbContext.SaveChangesAsync(); await _appDbContext.SaveChangesAsync();
await UpdateAsync(rawData); await UpdateWithTrackingAsync(rawData);
} }
else else
{ {
@ -987,7 +1015,7 @@ namespace BMA.EHR.Application.Repositories.Leaves.LeaveRequests
rawData.LeaveDirectorComment = reason; rawData.LeaveDirectorComment = reason;
rawData.ApproveStep = "st5"; rawData.ApproveStep = "st5";
await UpdateAsync(rawData); await UpdateWithTrackingAsync(rawData);
// Send Noti // Send Noti
var noti = new Notification var noti = new Notification