This commit is contained in:
parent
28f8971e7f
commit
4b43104400
11 changed files with 22046 additions and 8 deletions
|
|
@ -191,7 +191,7 @@ namespace BMA.EHR.Application.Repositories
|
||||||
await _dbContext.SaveChangesAsync();
|
await _dbContext.SaveChangesAsync();
|
||||||
}
|
}
|
||||||
|
|
||||||
public async Task CommanderApproveRetirementResignEmployee(Guid id, string reason, DateTime date)
|
public async Task CommanderApproveRetirementResignEmployee(Guid id, string reason, DateTime? date)
|
||||||
{
|
{
|
||||||
// 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);
|
||||||
|
|
@ -307,7 +307,7 @@ namespace BMA.EHR.Application.Repositories
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public async Task CommanderRejectRetirementResignEmployee(Guid id, string reason, DateTime date)
|
public async Task CommanderRejectRetirementResignEmployee(Guid id, string reason, DateTime? date)
|
||||||
{
|
{
|
||||||
// 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);
|
||||||
|
|
@ -398,7 +398,7 @@ namespace BMA.EHR.Application.Repositories
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public async Task ApproveRetirementResignEmployee(Guid id, string reason, DateTime date)
|
public async Task ApproveRetirementResignEmployee(Guid id, string reason, DateTime? date)
|
||||||
{
|
{
|
||||||
// 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);
|
||||||
|
|
@ -482,7 +482,7 @@ namespace BMA.EHR.Application.Repositories
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public async Task RejectRetirementResignEmployee(Guid id, string reason, DateTime date)
|
public async Task RejectRetirementResignEmployee(Guid id, string reason, DateTime? date)
|
||||||
{
|
{
|
||||||
// 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);
|
||||||
|
|
@ -565,5 +565,434 @@ namespace BMA.EHR.Application.Repositories
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
public async Task<RetirementResignEmployeeCancel?> GetByIdCancelAsync(Guid id)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
var data = await _dbContext.Set<RetirementResignEmployeeCancel>().AsQueryable()
|
||||||
|
.Include(x => x.Approvers)
|
||||||
|
.FirstOrDefaultAsync(x => x.Id == id);
|
||||||
|
|
||||||
|
return data;
|
||||||
|
}
|
||||||
|
catch
|
||||||
|
{
|
||||||
|
throw;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
public async Task OfficerApproveRetirementResignEmployeeCancel(Guid id)
|
||||||
|
{
|
||||||
|
var rawData = await GetByIdCancelAsync(id);
|
||||||
|
if (rawData == null)
|
||||||
|
{
|
||||||
|
throw new Exception(GlobalMessages.DataNotFound);
|
||||||
|
}
|
||||||
|
|
||||||
|
rawData.Status = "PENDING";
|
||||||
|
if (rawData.ApproveStep == "st1")
|
||||||
|
{
|
||||||
|
rawData.ApproveStep = "st2";
|
||||||
|
}
|
||||||
|
else if (rawData.ApproveStep == "st3")
|
||||||
|
{
|
||||||
|
rawData.ApproveStep = "st4";
|
||||||
|
}
|
||||||
|
|
||||||
|
await _dbContext.SaveChangesAsync();
|
||||||
|
|
||||||
|
// TODO: Send notification to 1st Commander
|
||||||
|
var firstCommander = rawData.Approvers
|
||||||
|
.Where(x => x.ApproveType!.ToUpper() == "COMMANDER")
|
||||||
|
.OrderBy(x => x.Seq)
|
||||||
|
.FirstOrDefault();
|
||||||
|
// Send Notification
|
||||||
|
var noti1 = new Notification
|
||||||
|
{
|
||||||
|
Body = $"การขอลาออกของคุณ {rawData.firstName} {rawData.lastName} รอรับการอนุมัติจากคุณ",
|
||||||
|
ReceiverUserId = firstCommander!.ProfileId,
|
||||||
|
Type = "",
|
||||||
|
Payload = $"{URL}/retirement/resign-employee-detail/{id}",
|
||||||
|
};
|
||||||
|
_dbContext.Set<Notification>().Add(noti1);
|
||||||
|
await _dbContext.SaveChangesAsync();
|
||||||
|
}
|
||||||
|
|
||||||
|
public async Task CommanderApproveRetirementResignEmployeeCancel(Guid id, string reason, DateTime? date)
|
||||||
|
{
|
||||||
|
// Get UserId from token
|
||||||
|
var userId = UserId == null ? Guid.Empty : Guid.Parse(UserId);
|
||||||
|
|
||||||
|
|
||||||
|
var rawData = await GetByIdCancelAsync(id);
|
||||||
|
if (rawData == null)
|
||||||
|
{
|
||||||
|
throw new Exception(GlobalMessages.DataNotFound);
|
||||||
|
}
|
||||||
|
|
||||||
|
// if (rawData.ApproveStep != "st2")
|
||||||
|
// {
|
||||||
|
// throw new Exception("คำขอนี้ยังไม่ได้อยู่ในขั้นตอนที่สามารถอนุมัติได้ ไม่สามารถทำรายการได้");
|
||||||
|
// }
|
||||||
|
|
||||||
|
// check commander approve
|
||||||
|
//var approvers = await _dbContext.Set<RetirementResignEmployeeCancelApprover>()
|
||||||
|
// //.AsNoTracking()
|
||||||
|
// .Include(x => x.RetirementResignEmployeeCancel)
|
||||||
|
// .Where(x => x.RetirementResignEmployeeCancel.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 approver = approvers.FirstOrDefault(x => x.KeycloakId == userId);
|
||||||
|
if (approver == null)
|
||||||
|
{
|
||||||
|
throw new Exception("คุณไม่มีสิทธิ์อนุมัติการลาออกในขั้นตอนนี้");
|
||||||
|
}
|
||||||
|
|
||||||
|
// check prev approver มี action แล้วหรือไม่?
|
||||||
|
var prevApprover = approvers.FirstOrDefault(x => x.Seq == approver.Seq - 1);
|
||||||
|
|
||||||
|
if (prevApprover != null)
|
||||||
|
{
|
||||||
|
if (prevApprover.ApproveStatus == "PENDING")
|
||||||
|
{
|
||||||
|
throw new Exception("ไม่สามารถทำการอนุมัติได้ เนื่องจากยังอยู่ระหว่างการพิจารณาโดยผู้บังคับบัญชารายก่อนหน้า");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
var maxSeq = approvers.Max(x => x.Seq);
|
||||||
|
|
||||||
|
//var data = await _dbContext.Set<RetirementResignEmployeeCancelApprover>()
|
||||||
|
// .AsNoTracking()
|
||||||
|
// .Include(x => x.RetirementResignEmployeeCancel)
|
||||||
|
// .Where(x => x.RetirementResignEmployeeCancel.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 _dbContext.SaveChangesAsync();
|
||||||
|
//}
|
||||||
|
|
||||||
|
approver.ApproveStatus = "APPROVE";
|
||||||
|
approver.Comment = reason;
|
||||||
|
approver.RejectDate = date;
|
||||||
|
|
||||||
|
//await _dbContext.SaveChangesAsync();
|
||||||
|
|
||||||
|
if (approver.Seq != maxSeq)
|
||||||
|
{
|
||||||
|
rawData.Status = "PENDING";
|
||||||
|
|
||||||
|
var nextApprover = approvers.FirstOrDefault(x => x.Seq == approver.Seq + 1);
|
||||||
|
|
||||||
|
// Send Noti
|
||||||
|
var noti = new Notification
|
||||||
|
{
|
||||||
|
Body = $"การขอลาออกของคุณ {rawData.firstName} {rawData.lastName} รอรับการอนุมัติจากคุณ",
|
||||||
|
ReceiverUserId = nextApprover!.ProfileId,
|
||||||
|
Type = "",
|
||||||
|
Payload = $"{URL}/retirement/resign-employee-detail/{id}",
|
||||||
|
};
|
||||||
|
_dbContext.Set<Notification>().Add(noti);
|
||||||
|
await _dbContext.SaveChangesAsync();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
rawData.Status = "PENDING";
|
||||||
|
// rawData.LeaveComment = reason;
|
||||||
|
// if (rawData.Group != "1.1")
|
||||||
|
// {
|
||||||
|
rawData.ApproveStep = "st3";
|
||||||
|
// }
|
||||||
|
|
||||||
|
|
||||||
|
// TODO: Send notification to 1st Approver
|
||||||
|
var firstCommander = rawData.Approvers
|
||||||
|
.Where(x => x.ApproveType!.ToUpper() == "APPROVER")
|
||||||
|
.OrderBy(x => x.Seq)
|
||||||
|
.FirstOrDefault();
|
||||||
|
|
||||||
|
// Send Notification
|
||||||
|
var noti1 = new Notification
|
||||||
|
{
|
||||||
|
Body = $"การขอลาออกของคุณ {rawData.firstName} {rawData.lastName} รอรับการอนุมัติจากคุณ",
|
||||||
|
ReceiverUserId = firstCommander!.ProfileId,
|
||||||
|
Type = "",
|
||||||
|
Payload = $"{URL}/retirement/resign-employee-detail/{id}",
|
||||||
|
};
|
||||||
|
_dbContext.Set<Notification>().Add(noti1);
|
||||||
|
await _dbContext.SaveChangesAsync();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public async Task CommanderRejectRetirementResignEmployeeCancel(Guid id, string reason, DateTime? date)
|
||||||
|
{
|
||||||
|
// Get UserId from token
|
||||||
|
var userId = UserId == null ? Guid.Empty : Guid.Parse(UserId);
|
||||||
|
|
||||||
|
|
||||||
|
var rawData = await GetByIdCancelAsync(id);
|
||||||
|
if (rawData == null)
|
||||||
|
{
|
||||||
|
throw new Exception(GlobalMessages.DataNotFound);
|
||||||
|
}
|
||||||
|
|
||||||
|
// if (rawData.ApproveStep != "st2")
|
||||||
|
// {
|
||||||
|
// throw new Exception("คำขอนี้ยังไม่ได้อยู่ในขั้นตอนที่สามารถอนุมัติได้ ไม่สามารถทำรายการได้");
|
||||||
|
// }
|
||||||
|
|
||||||
|
// check commander approve
|
||||||
|
var approvers = rawData.Approvers.Where(x => x.ApproveType!.ToUpper() == "COMMANDER").OrderBy(x => x.Seq).ToList();
|
||||||
|
|
||||||
|
var approver = approvers.FirstOrDefault(x => x.KeycloakId == userId);
|
||||||
|
if (approver == null)
|
||||||
|
{
|
||||||
|
throw new Exception("คุณไม่มีสิทธิ์อนุมัติการลาออกในขั้นตอนนี้");
|
||||||
|
}
|
||||||
|
|
||||||
|
// check prev approver มี action แล้วหรือไม่?
|
||||||
|
var prevApprover = approvers.FirstOrDefault(x => x.Seq == approver.Seq - 1);
|
||||||
|
|
||||||
|
if (prevApprover != null)
|
||||||
|
{
|
||||||
|
if (prevApprover.ApproveStatus == "PENDING")
|
||||||
|
{
|
||||||
|
throw new Exception("ไม่สามารถทำการอนุมัติได้ เนื่องจากยังอยู่ระหว่างการพิจารณาโดยผู้บังคับบัญชารายก่อนหน้า");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
var maxSeq = approvers.Max(x => x.Seq);
|
||||||
|
|
||||||
|
approver.ApproveStatus = "REJECT";
|
||||||
|
approver.Comment = reason;
|
||||||
|
approver.RejectDate = date;
|
||||||
|
|
||||||
|
if (approver.Seq != maxSeq)
|
||||||
|
{
|
||||||
|
|
||||||
|
|
||||||
|
var nextApprover = approvers.FirstOrDefault(x => x.Seq == approver.Seq + 1);
|
||||||
|
// Send Noti
|
||||||
|
var noti = new Notification
|
||||||
|
{
|
||||||
|
Body = $"การขอลาออกของคุณ {rawData.firstName} {rawData.lastName} รอรับการอนุมัติจากคุณ",
|
||||||
|
ReceiverUserId = nextApprover!.ProfileId,
|
||||||
|
Type = "",
|
||||||
|
Payload = $"{URL}/retirement/resign-employee-detail/{id}",
|
||||||
|
};
|
||||||
|
_dbContext.Set<Notification>().Add(noti);
|
||||||
|
|
||||||
|
rawData.Status = "PENDING";
|
||||||
|
await _dbContext.SaveChangesAsync();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
rawData.Status = "PENDING";
|
||||||
|
// rawData.LeaveComment = reason;
|
||||||
|
// if (rawData.Group != "1.1")
|
||||||
|
// {
|
||||||
|
rawData.ApproveStep = "st3";
|
||||||
|
// }
|
||||||
|
|
||||||
|
|
||||||
|
// TODO: Send notification to 1st Approver
|
||||||
|
var firstCommander = rawData.Approvers
|
||||||
|
.Where(x => x.ApproveType!.ToUpper() == "APPROVER")
|
||||||
|
.OrderBy(x => x.Seq)
|
||||||
|
.FirstOrDefault();
|
||||||
|
// Send Notification
|
||||||
|
var noti1 = new Notification
|
||||||
|
{
|
||||||
|
Body = $"การขอลาออกของคุณ {rawData.firstName} {rawData.lastName} รอรับการอนุมัติจากคุณ",
|
||||||
|
ReceiverUserId = firstCommander!.ProfileId,
|
||||||
|
Type = "",
|
||||||
|
Payload = $"{URL}/retirement/resign-employee-detail/{id}",
|
||||||
|
};
|
||||||
|
_dbContext.Set<Notification>().Add(noti1);
|
||||||
|
await _dbContext.SaveChangesAsync();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public async Task ApproveRetirementResignEmployeeCancel(Guid id, string reason, DateTime? date)
|
||||||
|
{
|
||||||
|
// Get UserId from token
|
||||||
|
var userId = UserId == null ? Guid.Empty : Guid.Parse(UserId);
|
||||||
|
|
||||||
|
var rawData = await GetByIdCancelAsync(id);
|
||||||
|
if (rawData == null)
|
||||||
|
{
|
||||||
|
throw new Exception(GlobalMessages.DataNotFound);
|
||||||
|
}
|
||||||
|
|
||||||
|
// if (rawData.ApproveStep != "st3")
|
||||||
|
// {
|
||||||
|
// throw new Exception("คำขอนี้ยังไม่ได้อยู่ในขั้นตอนที่สามารถอนุมัติได้ ไม่สามารถทำรายการได้");
|
||||||
|
// }
|
||||||
|
|
||||||
|
// check commander approve
|
||||||
|
var approvers = rawData.Approvers.Where(x => x.ApproveType!.ToUpper() == "APPROVER").OrderBy(x => x.Seq).ToList();
|
||||||
|
|
||||||
|
var approver = approvers.FirstOrDefault(x => x.KeycloakId == userId);
|
||||||
|
if (approver == null)
|
||||||
|
{
|
||||||
|
throw new Exception("คุณไม่มีสิทธิ์อนุมัติการลาออกในขั้นตอนนี้");
|
||||||
|
}
|
||||||
|
|
||||||
|
// check prev approver มี action แล้วหรือไม่?
|
||||||
|
var prevApprover = approvers.FirstOrDefault(x => x.Seq == approver.Seq - 1);
|
||||||
|
|
||||||
|
if (prevApprover != null)
|
||||||
|
{
|
||||||
|
if (prevApprover.ApproveStatus == "PENDING")
|
||||||
|
{
|
||||||
|
throw new Exception("ไม่สามารถทำการอนุมัติได้ เนื่องจากยังอยู่ระหว่างการพิจารณาโดยผู้บังคับบัญชารายก่อนหน้า");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
var maxSeq = approvers.Max(x => x.Seq);
|
||||||
|
|
||||||
|
approver.ApproveStatus = "APPROVE";
|
||||||
|
approver.Comment = reason;
|
||||||
|
approver.RejectDate = date;
|
||||||
|
|
||||||
|
if (approver.Seq != maxSeq)
|
||||||
|
{
|
||||||
|
var nextApprover = approvers.FirstOrDefault(x => x.Seq == approver.Seq + 1);
|
||||||
|
// Send Noti
|
||||||
|
var noti1 = new Notification
|
||||||
|
{
|
||||||
|
Body = $"การขอลาออกของคุณ {rawData.firstName} {rawData.lastName} รอรับการอนุมัติจากคุณ",
|
||||||
|
ReceiverUserId = nextApprover!.ProfileId,
|
||||||
|
Type = "",
|
||||||
|
Payload = "",
|
||||||
|
};
|
||||||
|
_dbContext.Set<Notification>().Add(noti1);
|
||||||
|
await _dbContext.SaveChangesAsync();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
rawData.Status = "APPROVE";
|
||||||
|
// rawData.LeaveDirectorComment = reason;
|
||||||
|
if (rawData.Group != "1.1")
|
||||||
|
{
|
||||||
|
rawData.ApproveStep = "st5";
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
rawData.ApproveStep = "st4";
|
||||||
|
}
|
||||||
|
|
||||||
|
// Send Noti
|
||||||
|
var noti = new Notification
|
||||||
|
{
|
||||||
|
Body = $"การขอลาออกของคุณได้รับการอนุมัติ",
|
||||||
|
ReceiverUserId = Guid.Parse(rawData.profileId),
|
||||||
|
Type = "",
|
||||||
|
Payload = "",
|
||||||
|
};
|
||||||
|
_dbContext.Set<Notification>().Add(noti);
|
||||||
|
await _dbContext.SaveChangesAsync();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public async Task RejectRetirementResignEmployeeCancel(Guid id, string reason, DateTime? date)
|
||||||
|
{
|
||||||
|
// Get UserId from token
|
||||||
|
var userId = UserId == null ? Guid.Empty : Guid.Parse(UserId);
|
||||||
|
|
||||||
|
var rawData = await GetByIdCancelAsync(id);
|
||||||
|
if (rawData == null)
|
||||||
|
{
|
||||||
|
throw new Exception(GlobalMessages.DataNotFound);
|
||||||
|
}
|
||||||
|
|
||||||
|
// if (rawData.ApproveStep != "st3")
|
||||||
|
// {
|
||||||
|
// throw new Exception("คำขอนี้ยังไม่ได้อยู่ในขั้นตอนที่สามารถอนุมัติได้ ไม่สามารถทำรายการได้");
|
||||||
|
// }
|
||||||
|
|
||||||
|
// check commander approve
|
||||||
|
var approvers = rawData.Approvers.Where(x => x.ApproveType!.ToUpper() == "APPROVER").OrderBy(x => x.Seq).ToList();
|
||||||
|
|
||||||
|
var approver = approvers.FirstOrDefault(x => x.KeycloakId == userId);
|
||||||
|
if (approver == null)
|
||||||
|
{
|
||||||
|
throw new Exception("คุณไม่มีสิทธิ์อนุมัติการลาออกในขั้นตอนนี้");
|
||||||
|
}
|
||||||
|
|
||||||
|
// check prev approver มี action แล้วหรือไม่?
|
||||||
|
var prevApprover = approvers.FirstOrDefault(x => x.Seq == approver.Seq - 1);
|
||||||
|
|
||||||
|
if (prevApprover != null)
|
||||||
|
{
|
||||||
|
if (prevApprover.ApproveStatus == "PENDING")
|
||||||
|
{
|
||||||
|
throw new Exception("ไม่สามารถทำการอนุมัติได้ เนื่องจากยังอยู่ระหว่างการพิจารณาโดยผู้บังคับบัญชารายก่อนหน้า");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
var maxSeq = approvers.Max(x => x.Seq);
|
||||||
|
|
||||||
|
approver.ApproveStatus = "REJECT";
|
||||||
|
approver.Comment = reason;
|
||||||
|
approver.RejectDate = date;
|
||||||
|
|
||||||
|
if (approver.Seq != maxSeq)
|
||||||
|
{
|
||||||
|
var nextApprover = approvers.FirstOrDefault(x => x.Seq == approver.Seq + 1);
|
||||||
|
// Send Noti
|
||||||
|
var noti1 = new Notification
|
||||||
|
{
|
||||||
|
Body = $"การขอลาออกของคุณ {rawData.firstName} {rawData.lastName} รอรับการอนุมัติจากคุณ",
|
||||||
|
ReceiverUserId = nextApprover!.ProfileId,
|
||||||
|
Type = "",
|
||||||
|
Payload = "",
|
||||||
|
};
|
||||||
|
_dbContext.Set<Notification>().Add(noti1);
|
||||||
|
await _dbContext.SaveChangesAsync();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
rawData.Status = "REJECT";
|
||||||
|
// rawData.LeaveDirectorComment = reason;
|
||||||
|
if (rawData.Group != "1.1")
|
||||||
|
{
|
||||||
|
rawData.ApproveStep = "st5";
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
rawData.ApproveStep = "st4";
|
||||||
|
}
|
||||||
|
|
||||||
|
// Send Noti
|
||||||
|
var noti = new Notification
|
||||||
|
{
|
||||||
|
Body = $"การขอลาออกของคุณไม่ได้รับการอนุมัติ \r\nเนื่องจาก{reason}",
|
||||||
|
ReceiverUserId = Guid.Parse(rawData.profileId),
|
||||||
|
Type = "",
|
||||||
|
Payload = "",
|
||||||
|
};
|
||||||
|
_dbContext.Set<Notification>().Add(noti);
|
||||||
|
await _dbContext.SaveChangesAsync();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -506,5 +506,419 @@ namespace BMA.EHR.Application.Repositories
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public async Task<RetirementResignCancel?> GetByIdCancelAsync(Guid id)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
var data = await _dbContext.Set<RetirementResignCancel>().AsQueryable()
|
||||||
|
.Include(x => x.Approvers)
|
||||||
|
.FirstOrDefaultAsync(x => x.Id == id);
|
||||||
|
|
||||||
|
return data;
|
||||||
|
}
|
||||||
|
catch
|
||||||
|
{
|
||||||
|
throw;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
public async Task OfficerApproveRetirementResignCancel(Guid id)
|
||||||
|
{
|
||||||
|
var rawData = await GetByIdCancelAsync(id);
|
||||||
|
if (rawData == null)
|
||||||
|
{
|
||||||
|
throw new Exception(GlobalMessages.DataNotFound);
|
||||||
|
}
|
||||||
|
|
||||||
|
rawData.Status = "PENDING";
|
||||||
|
if (rawData.ApproveStep == "st1")
|
||||||
|
{
|
||||||
|
rawData.ApproveStep = "st2";
|
||||||
|
}
|
||||||
|
else if (rawData.ApproveStep == "st3")
|
||||||
|
{
|
||||||
|
rawData.ApproveStep = "st4";
|
||||||
|
// TODO: Send notification to 1st Approver
|
||||||
|
var _firstCommander = rawData.Approvers
|
||||||
|
.Where(x => x.ApproveType!.ToUpper() == "APPROVER")
|
||||||
|
.OrderBy(x => x.Seq)
|
||||||
|
.FirstOrDefault();
|
||||||
|
// Send Notification
|
||||||
|
var _noti1 = new Notification
|
||||||
|
{
|
||||||
|
Body = $"การขอลาออกของคุณ {rawData.firstName} {rawData.lastName} รอรับการอนุมัติจากคุณ",
|
||||||
|
ReceiverUserId = _firstCommander!.ProfileId,
|
||||||
|
Type = "",
|
||||||
|
Payload = $"{URL}/retirement/resign-detail/{id}",
|
||||||
|
};
|
||||||
|
_dbContext.Set<Notification>().Add(_noti1);
|
||||||
|
}
|
||||||
|
|
||||||
|
// TODO: Send notification to 1st Commander
|
||||||
|
var firstCommander = rawData.Approvers
|
||||||
|
.Where(x => x.ApproveType!.ToUpper() == "COMMANDER")
|
||||||
|
.OrderBy(x => x.Seq)
|
||||||
|
.FirstOrDefault();
|
||||||
|
// Send Notification
|
||||||
|
var noti1 = new Notification
|
||||||
|
{
|
||||||
|
Body = $"การขอลาออกของคุณ {rawData.firstName} {rawData.lastName} รอรับการอนุมัติจากคุณ",
|
||||||
|
ReceiverUserId = firstCommander!.ProfileId,
|
||||||
|
Type = "",
|
||||||
|
Payload = $"{URL}/retirement/resign-detail/{id}",
|
||||||
|
};
|
||||||
|
_dbContext.Set<Notification>().Add(noti1);
|
||||||
|
await _dbContext.SaveChangesAsync();
|
||||||
|
}
|
||||||
|
|
||||||
|
public async Task CommanderApproveRetirementResignCancel(Guid id, string reason, DateTime? date)
|
||||||
|
{
|
||||||
|
// Get UserId from token
|
||||||
|
var userId = UserId == null ? Guid.Empty : Guid.Parse(UserId);
|
||||||
|
|
||||||
|
|
||||||
|
var rawData = await GetByIdCancelAsync(id);
|
||||||
|
if (rawData == null)
|
||||||
|
{
|
||||||
|
throw new Exception(GlobalMessages.DataNotFound);
|
||||||
|
}
|
||||||
|
|
||||||
|
// if (rawData.ApproveStep != "st2")
|
||||||
|
// {
|
||||||
|
// throw new Exception("คำขอนี้ยังไม่ได้อยู่ในขั้นตอนที่สามารถอนุมัติได้ ไม่สามารถทำรายการได้");
|
||||||
|
// }
|
||||||
|
|
||||||
|
var approvers = rawData.Approvers.Where(x => x.ApproveType!.ToUpper() == "COMMANDER").OrderBy(x => x.Seq).ToList();
|
||||||
|
|
||||||
|
var approver = approvers.FirstOrDefault(x => x.KeycloakId == userId);
|
||||||
|
if (approver == null)
|
||||||
|
{
|
||||||
|
throw new Exception("คุณไม่มีสิทธิ์อนุมัติการลาออกในขั้นตอนนี้");
|
||||||
|
}
|
||||||
|
|
||||||
|
// check prev approver มี action แล้วหรือไม่?
|
||||||
|
var prevApprover = approvers.FirstOrDefault(x => x.Seq == approver.Seq - 1);
|
||||||
|
|
||||||
|
if (prevApprover != null)
|
||||||
|
{
|
||||||
|
if (prevApprover.ApproveStatus == "PENDING")
|
||||||
|
{
|
||||||
|
throw new Exception("ไม่สามารถทำการอนุมัติได้ เนื่องจากยังอยู่ระหว่างการพิจารณาโดยผู้บังคับบัญชารายก่อนหน้า");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
var maxSeq = approvers.Max(x => x.Seq);
|
||||||
|
|
||||||
|
approver.ApproveStatus = "APPROVE";
|
||||||
|
approver.Comment = reason;
|
||||||
|
approver.RejectDate = date;
|
||||||
|
|
||||||
|
if (approver.Seq != maxSeq)
|
||||||
|
{
|
||||||
|
rawData.Status = "PENDING";
|
||||||
|
|
||||||
|
var nextApprover = approvers.FirstOrDefault(x => x.Seq == approver.Seq + 1);
|
||||||
|
|
||||||
|
// Send Noti
|
||||||
|
var noti = new Notification
|
||||||
|
{
|
||||||
|
Body = $"การขอลาออกของคุณ {rawData.firstName} {rawData.lastName} รอรับการอนุมัติจากคุณ",
|
||||||
|
ReceiverUserId = nextApprover!.ProfileId,
|
||||||
|
Type = "",
|
||||||
|
Payload = $"{URL}/retirement/resign-detail/{id}",
|
||||||
|
};
|
||||||
|
_dbContext.Set<Notification>().Add(noti);
|
||||||
|
await _dbContext.SaveChangesAsync();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
rawData.Status = "PENDING";
|
||||||
|
rawData.ApproveStep = "st3";
|
||||||
|
|
||||||
|
if (rawData.Group == "1.1")
|
||||||
|
{
|
||||||
|
// TODO: Send notification to 1st Approver
|
||||||
|
var firstCommander = rawData.Approvers
|
||||||
|
.Where(x => x.ApproveType!.ToUpper() == "APPROVER")
|
||||||
|
.OrderBy(x => x.Seq)
|
||||||
|
.FirstOrDefault();
|
||||||
|
|
||||||
|
// Send Notification
|
||||||
|
var noti1 = new Notification
|
||||||
|
{
|
||||||
|
Body = $"การขอลาออกของคุณ {rawData.firstName} {rawData.lastName} รอรับการอนุมัติจากคุณ",
|
||||||
|
ReceiverUserId = firstCommander!.ProfileId,
|
||||||
|
Type = "",
|
||||||
|
Payload = $"{URL}/retirement/resign-detail/{id}",
|
||||||
|
};
|
||||||
|
_dbContext.Set<Notification>().Add(noti1);
|
||||||
|
}
|
||||||
|
await _dbContext.SaveChangesAsync();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public async Task CommanderRejectRetirementResignCancel(Guid id, string reason, DateTime? date)
|
||||||
|
{
|
||||||
|
// Get UserId from token
|
||||||
|
var userId = UserId == null ? Guid.Empty : Guid.Parse(UserId);
|
||||||
|
|
||||||
|
|
||||||
|
var rawData = await GetByIdCancelAsync(id);
|
||||||
|
if (rawData == null)
|
||||||
|
{
|
||||||
|
throw new Exception(GlobalMessages.DataNotFound);
|
||||||
|
}
|
||||||
|
|
||||||
|
// if (rawData.ApproveStep != "st2")
|
||||||
|
// {
|
||||||
|
// throw new Exception("คำขอนี้ยังไม่ได้อยู่ในขั้นตอนที่สามารถอนุมัติได้ ไม่สามารถทำรายการได้");
|
||||||
|
// }
|
||||||
|
|
||||||
|
// check commander approve
|
||||||
|
var approvers = rawData.Approvers.Where(x => x.ApproveType!.ToUpper() == "COMMANDER").OrderBy(x => x.Seq).ToList();
|
||||||
|
|
||||||
|
var approver = approvers.FirstOrDefault(x => x.KeycloakId == userId);
|
||||||
|
if (approver == null)
|
||||||
|
{
|
||||||
|
throw new Exception("คุณไม่มีสิทธิ์อนุมัติการลาออกในขั้นตอนนี้");
|
||||||
|
}
|
||||||
|
|
||||||
|
// check prev approver มี action แล้วหรือไม่?
|
||||||
|
var prevApprover = approvers.FirstOrDefault(x => x.Seq == approver.Seq - 1);
|
||||||
|
|
||||||
|
if (prevApprover != null)
|
||||||
|
{
|
||||||
|
if (prevApprover.ApproveStatus == "PENDING")
|
||||||
|
{
|
||||||
|
throw new Exception("ไม่สามารถทำการอนุมัติได้ เนื่องจากยังอยู่ระหว่างการพิจารณาโดยผู้บังคับบัญชารายก่อนหน้า");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
var maxSeq = approvers.Max(x => x.Seq);
|
||||||
|
|
||||||
|
approver.ApproveStatus = "REJECT";
|
||||||
|
approver.Comment = reason;
|
||||||
|
approver.RejectDate = date;
|
||||||
|
|
||||||
|
if (approver.Seq != maxSeq)
|
||||||
|
{
|
||||||
|
|
||||||
|
|
||||||
|
var nextApprover = approvers.FirstOrDefault(x => x.Seq == approver.Seq + 1);
|
||||||
|
// Send Noti
|
||||||
|
var noti = new Notification
|
||||||
|
{
|
||||||
|
Body = $"การขอลาออกของคุณ {rawData.firstName} {rawData.lastName} รอรับการอนุมัติจากคุณ",
|
||||||
|
ReceiverUserId = nextApprover!.ProfileId,
|
||||||
|
Type = "",
|
||||||
|
Payload = $"{URL}/retirement/resign-detail/{id}",
|
||||||
|
};
|
||||||
|
_dbContext.Set<Notification>().Add(noti);
|
||||||
|
|
||||||
|
rawData.Status = "PENDING";
|
||||||
|
await _dbContext.SaveChangesAsync();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
rawData.Status = "PENDING";
|
||||||
|
// rawData.LeaveComment = reason;
|
||||||
|
// if (rawData.Group != "1.1")
|
||||||
|
// {
|
||||||
|
rawData.ApproveStep = "st3";
|
||||||
|
// }
|
||||||
|
|
||||||
|
if (rawData.Group == "1.1")
|
||||||
|
{
|
||||||
|
// TODO: Send notification to 1st Approver
|
||||||
|
var firstCommander = rawData.Approvers
|
||||||
|
.Where(x => x.ApproveType!.ToUpper() == "APPROVER")
|
||||||
|
.OrderBy(x => x.Seq)
|
||||||
|
.FirstOrDefault();
|
||||||
|
// Send Notification
|
||||||
|
var noti1 = new Notification
|
||||||
|
{
|
||||||
|
Body = $"การขอลาออกของคุณ {rawData.firstName} {rawData.lastName} รอรับการอนุมัติจากคุณ",
|
||||||
|
ReceiverUserId = firstCommander!.ProfileId,
|
||||||
|
Type = "",
|
||||||
|
Payload = $"{URL}/retirement/resign-detail/{id}",
|
||||||
|
};
|
||||||
|
_dbContext.Set<Notification>().Add(noti1);
|
||||||
|
}
|
||||||
|
await _dbContext.SaveChangesAsync();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public async Task ApproveRetirementResignCancel(Guid id, string reason, DateTime? date)
|
||||||
|
{
|
||||||
|
// Get UserId from token
|
||||||
|
var userId = UserId == null ? Guid.Empty : Guid.Parse(UserId);
|
||||||
|
|
||||||
|
var rawData = await GetByIdCancelAsync(id);
|
||||||
|
if (rawData == null)
|
||||||
|
{
|
||||||
|
throw new Exception(GlobalMessages.DataNotFound);
|
||||||
|
}
|
||||||
|
|
||||||
|
// if (rawData.ApproveStep != "st3")
|
||||||
|
// {
|
||||||
|
// throw new Exception("คำขอนี้ยังไม่ได้อยู่ในขั้นตอนที่สามารถอนุมัติได้ ไม่สามารถทำรายการได้");
|
||||||
|
// }
|
||||||
|
|
||||||
|
// check commander approve
|
||||||
|
var approvers = rawData.Approvers.Where(x => x.ApproveType!.ToUpper() == "APPROVER").OrderBy(x => x.Seq).ToList();
|
||||||
|
|
||||||
|
var approver = approvers.FirstOrDefault(x => x.KeycloakId == userId);
|
||||||
|
if (approver == null)
|
||||||
|
{
|
||||||
|
throw new Exception("คุณไม่มีสิทธิ์อนุมัติการลาออกในขั้นตอนนี้");
|
||||||
|
}
|
||||||
|
|
||||||
|
// check prev approver มี action แล้วหรือไม่?
|
||||||
|
var prevApprover = approvers.FirstOrDefault(x => x.Seq == approver.Seq - 1);
|
||||||
|
|
||||||
|
if (prevApprover != null)
|
||||||
|
{
|
||||||
|
if (prevApprover.ApproveStatus == "PENDING")
|
||||||
|
{
|
||||||
|
throw new Exception("ไม่สามารถทำการอนุมัติได้ เนื่องจากยังอยู่ระหว่างการพิจารณาโดยผู้บังคับบัญชารายก่อนหน้า");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
var maxSeq = approvers.Max(x => x.Seq);
|
||||||
|
|
||||||
|
approver.ApproveStatus = "APPROVE";
|
||||||
|
approver.Comment = reason;
|
||||||
|
approver.RejectDate = date;
|
||||||
|
|
||||||
|
if (approver.Seq != maxSeq)
|
||||||
|
{
|
||||||
|
var nextApprover = approvers.FirstOrDefault(x => x.Seq == approver.Seq + 1);
|
||||||
|
// Send Noti
|
||||||
|
var noti1 = new Notification
|
||||||
|
{
|
||||||
|
Body = $"การขอลาออกของคุณ {rawData.firstName} {rawData.lastName} รอรับการอนุมัติจากคุณ",
|
||||||
|
ReceiverUserId = nextApprover!.ProfileId,
|
||||||
|
Type = "",
|
||||||
|
Payload = "",
|
||||||
|
};
|
||||||
|
_dbContext.Set<Notification>().Add(noti1);
|
||||||
|
await _dbContext.SaveChangesAsync();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
rawData.Status = "APPROVE";
|
||||||
|
// rawData.LeaveDirectorComment = reason;
|
||||||
|
if (rawData.Group != "1.1")
|
||||||
|
{
|
||||||
|
rawData.ApproveStep = "st5";
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
rawData.ApproveStep = "st4";
|
||||||
|
}
|
||||||
|
|
||||||
|
if (rawData.profileId != null)
|
||||||
|
{
|
||||||
|
// Send Noti
|
||||||
|
var noti = new Notification
|
||||||
|
{
|
||||||
|
Body = $"การขอลาออกของคุณได้รับการอนุมัติ",
|
||||||
|
ReceiverUserId = Guid.Parse(rawData.profileId),
|
||||||
|
Type = "",
|
||||||
|
Payload = "",
|
||||||
|
};
|
||||||
|
_dbContext.Set<Notification>().Add(noti);
|
||||||
|
}
|
||||||
|
await _dbContext.SaveChangesAsync();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public async Task RejectRetirementResignCancel(Guid id, string reason, DateTime? date)
|
||||||
|
{
|
||||||
|
// Get UserId from token
|
||||||
|
var userId = UserId == null ? Guid.Empty : Guid.Parse(UserId);
|
||||||
|
|
||||||
|
var rawData = await GetByIdCancelAsync(id);
|
||||||
|
if (rawData == null)
|
||||||
|
{
|
||||||
|
throw new Exception(GlobalMessages.DataNotFound);
|
||||||
|
}
|
||||||
|
|
||||||
|
// if (rawData.ApproveStep != "st3")
|
||||||
|
// {
|
||||||
|
// throw new Exception("คำขอนี้ยังไม่ได้อยู่ในขั้นตอนที่สามารถอนุมัติได้ ไม่สามารถทำรายการได้");
|
||||||
|
// }
|
||||||
|
|
||||||
|
// check commander approve
|
||||||
|
var approvers = rawData.Approvers.Where(x => x.ApproveType!.ToUpper() == "APPROVER").OrderBy(x => x.Seq).ToList();
|
||||||
|
|
||||||
|
var approver = approvers.FirstOrDefault(x => x.KeycloakId == userId);
|
||||||
|
if (approver == null)
|
||||||
|
{
|
||||||
|
throw new Exception("คุณไม่มีสิทธิ์อนุมัติการลาออกในขั้นตอนนี้");
|
||||||
|
}
|
||||||
|
|
||||||
|
// check prev approver มี action แล้วหรือไม่?
|
||||||
|
var prevApprover = approvers.FirstOrDefault(x => x.Seq == approver.Seq - 1);
|
||||||
|
|
||||||
|
if (prevApprover != null)
|
||||||
|
{
|
||||||
|
if (prevApprover.ApproveStatus == "PENDING")
|
||||||
|
{
|
||||||
|
throw new Exception("ไม่สามารถทำการอนุมัติได้ เนื่องจากยังอยู่ระหว่างการพิจารณาโดยผู้บังคับบัญชารายก่อนหน้า");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
var maxSeq = approvers.Max(x => x.Seq);
|
||||||
|
|
||||||
|
approver.ApproveStatus = "REJECT";
|
||||||
|
approver.Comment = reason;
|
||||||
|
approver.RejectDate = date;
|
||||||
|
|
||||||
|
if (approver.Seq != maxSeq)
|
||||||
|
{
|
||||||
|
var nextApprover = approvers.FirstOrDefault(x => x.Seq == approver.Seq + 1);
|
||||||
|
// Send Noti
|
||||||
|
var noti1 = new Notification
|
||||||
|
{
|
||||||
|
Body = $"การขอลาออกของคุณ {rawData.firstName} {rawData.lastName} รอรับการอนุมัติจากคุณ",
|
||||||
|
ReceiverUserId = nextApprover!.ProfileId,
|
||||||
|
Type = "",
|
||||||
|
Payload = "",
|
||||||
|
};
|
||||||
|
_dbContext.Set<Notification>().Add(noti1);
|
||||||
|
await _dbContext.SaveChangesAsync();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
rawData.Status = "REJECT";
|
||||||
|
if (rawData.Group != "1.1")
|
||||||
|
{
|
||||||
|
rawData.ApproveStep = "st5";
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
rawData.ApproveStep = "st4";
|
||||||
|
}
|
||||||
|
|
||||||
|
// Send Noti
|
||||||
|
var noti = new Notification
|
||||||
|
{
|
||||||
|
Body = $"การขอลาออกของคุณไม่ได้รับการอนุมัติ \r\nเนื่องจาก{reason}",
|
||||||
|
ReceiverUserId = Guid.Parse(rawData.profileId),
|
||||||
|
Type = "",
|
||||||
|
Payload = "",
|
||||||
|
};
|
||||||
|
_dbContext.Set<Notification>().Add(noti);
|
||||||
|
await _dbContext.SaveChangesAsync();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -130,6 +130,11 @@ namespace BMA.EHR.Domain.Models.Retirement
|
||||||
public string? posLevelOldId { get; set; }
|
public string? posLevelOldId { get; set; }
|
||||||
[Comment("ชื่อระดับตำแหน่ง old")]
|
[Comment("ชื่อระดับตำแหน่ง old")]
|
||||||
public string? posLevelNameOld { get; set; }
|
public string? posLevelNameOld { get; set; }
|
||||||
|
|
||||||
|
[Comment("step การอนุมัติ st1 = จทน.อนุมัตื,st2 = ผู้บังคับบัญชา อนุมัติ ")]
|
||||||
|
public string? ApproveStep { get; set; } = string.Empty;
|
||||||
|
[Comment("คนยื่นมาอยู่ในกลุ่ม")]
|
||||||
|
public string? Group { get; set; } = string.Empty;
|
||||||
[Required, Comment("อ้างอิงรับย้าย")]
|
[Required, Comment("อ้างอิงรับย้าย")]
|
||||||
public virtual RetirementResign RetirementResign { get; set; }
|
public virtual RetirementResign RetirementResign { get; set; }
|
||||||
public List<RetirementResignCancelApprover> Approvers { get; set; } = new();
|
public List<RetirementResignCancelApprover> Approvers { get; set; } = new();
|
||||||
|
|
|
||||||
|
|
@ -23,6 +23,8 @@ namespace BMA.EHR.Domain.Models.Retirement
|
||||||
public string ApproveStatus { get; set; } = string.Empty;
|
public string ApproveStatus { get; set; } = string.Empty;
|
||||||
|
|
||||||
public string Comment { get; set; } = string.Empty;
|
public string Comment { get; set; } = string.Empty;
|
||||||
|
public string Org { get; set; } = string.Empty;
|
||||||
|
public DateTime? RejectDate { get; set; }
|
||||||
|
|
||||||
public string? ApproveType { get; set; } = string.Empty; // ผู้บังคับบัญชา = commander, ผู้มีอำนาจอนุมัติ = Approver
|
public string? ApproveType { get; set; } = string.Empty; // ผู้บังคับบัญชา = commander, ผู้มีอำนาจอนุมัติ = Approver
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -128,6 +128,11 @@ namespace BMA.EHR.Domain.Models.Retirement
|
||||||
public string? posLevelOldId { get; set; }
|
public string? posLevelOldId { get; set; }
|
||||||
[Comment("ชื่อระดับตำแหน่ง old")]
|
[Comment("ชื่อระดับตำแหน่ง old")]
|
||||||
public string? posLevelNameOld { get; set; }
|
public string? posLevelNameOld { get; set; }
|
||||||
|
|
||||||
|
[Comment("step การอนุมัติ st1 = จทน.อนุมัตื,st2 = ผู้บังคับบัญชา อนุมัติ ")]
|
||||||
|
public string? ApproveStep { get; set; } = string.Empty;
|
||||||
|
[Comment("คนยื่นมาอยู่ในกลุ่ม")]
|
||||||
|
public string? Group { get; set; } = string.Empty;
|
||||||
[Required, Comment("อ้างอิงรับย้าย")]
|
[Required, Comment("อ้างอิงรับย้าย")]
|
||||||
public virtual RetirementResignEmployee RetirementResignEmployee { get; set; }
|
public virtual RetirementResignEmployee RetirementResignEmployee { get; set; }
|
||||||
public List<RetirementResignEmployeeCancelApprover> Approvers { get; set; } = new();
|
public List<RetirementResignEmployeeCancelApprover> Approvers { get; set; } = new();
|
||||||
|
|
|
||||||
|
|
@ -23,6 +23,8 @@ namespace BMA.EHR.Domain.Models.Retirement
|
||||||
public string ApproveStatus { get; set; } = string.Empty;
|
public string ApproveStatus { get; set; } = string.Empty;
|
||||||
|
|
||||||
public string Comment { get; set; } = string.Empty;
|
public string Comment { get; set; } = string.Empty;
|
||||||
|
public string Org { get; set; } = string.Empty;
|
||||||
|
public DateTime? RejectDate { get; set; }
|
||||||
|
|
||||||
public string? ApproveType { get; set; } = string.Empty; // ผู้บังคับบัญชา = commander, ผู้มีอำนาจอนุมัติ = Approver
|
public string? ApproveType { get; set; } = string.Empty; // ผู้บังคับบัญชา = commander, ผู้มีอำนาจอนุมัติ = Approver
|
||||||
}
|
}
|
||||||
|
|
|
||||||
20680
BMA.EHR.Infrastructure/Migrations/20250527123821_update_table_retirementresignemp_add_group.Designer.cs
generated
Normal file
20680
BMA.EHR.Infrastructure/Migrations/20250527123821_update_table_retirementresignemp_add_group.Designer.cs
generated
Normal file
File diff suppressed because it is too large
Load diff
|
|
@ -0,0 +1,109 @@
|
||||||
|
using System;
|
||||||
|
using Microsoft.EntityFrameworkCore.Migrations;
|
||||||
|
|
||||||
|
#nullable disable
|
||||||
|
|
||||||
|
namespace BMA.EHR.Infrastructure.Migrations
|
||||||
|
{
|
||||||
|
/// <inheritdoc />
|
||||||
|
public partial class update_table_retirementresignemp_add_group : Migration
|
||||||
|
{
|
||||||
|
/// <inheritdoc />
|
||||||
|
protected override void Up(MigrationBuilder migrationBuilder)
|
||||||
|
{
|
||||||
|
migrationBuilder.AddColumn<string>(
|
||||||
|
name: "ApproveStep",
|
||||||
|
table: "RetirementResignEmployeeCancels",
|
||||||
|
type: "longtext",
|
||||||
|
nullable: true,
|
||||||
|
comment: "step การอนุมัติ st1 = จทน.อนุมัตื,st2 = ผู้บังคับบัญชา อนุมัติ ")
|
||||||
|
.Annotation("MySql:CharSet", "utf8mb4");
|
||||||
|
|
||||||
|
migrationBuilder.AddColumn<string>(
|
||||||
|
name: "Group",
|
||||||
|
table: "RetirementResignEmployeeCancels",
|
||||||
|
type: "longtext",
|
||||||
|
nullable: true,
|
||||||
|
comment: "คนยื่นมาอยู่ในกลุ่ม")
|
||||||
|
.Annotation("MySql:CharSet", "utf8mb4");
|
||||||
|
|
||||||
|
migrationBuilder.AddColumn<string>(
|
||||||
|
name: "Org",
|
||||||
|
table: "RetirementResignEmployeeCancelApprovers",
|
||||||
|
type: "longtext",
|
||||||
|
nullable: false)
|
||||||
|
.Annotation("MySql:CharSet", "utf8mb4");
|
||||||
|
|
||||||
|
migrationBuilder.AddColumn<DateTime>(
|
||||||
|
name: "RejectDate",
|
||||||
|
table: "RetirementResignEmployeeCancelApprovers",
|
||||||
|
type: "datetime(6)",
|
||||||
|
nullable: true);
|
||||||
|
|
||||||
|
migrationBuilder.AddColumn<string>(
|
||||||
|
name: "ApproveStep",
|
||||||
|
table: "RetirementResignCancels",
|
||||||
|
type: "longtext",
|
||||||
|
nullable: true,
|
||||||
|
comment: "step การอนุมัติ st1 = จทน.อนุมัตื,st2 = ผู้บังคับบัญชา อนุมัติ ")
|
||||||
|
.Annotation("MySql:CharSet", "utf8mb4");
|
||||||
|
|
||||||
|
migrationBuilder.AddColumn<string>(
|
||||||
|
name: "Group",
|
||||||
|
table: "RetirementResignCancels",
|
||||||
|
type: "longtext",
|
||||||
|
nullable: true,
|
||||||
|
comment: "คนยื่นมาอยู่ในกลุ่ม")
|
||||||
|
.Annotation("MySql:CharSet", "utf8mb4");
|
||||||
|
|
||||||
|
migrationBuilder.AddColumn<string>(
|
||||||
|
name: "Org",
|
||||||
|
table: "RetirementResignCancelApprovers",
|
||||||
|
type: "longtext",
|
||||||
|
nullable: false)
|
||||||
|
.Annotation("MySql:CharSet", "utf8mb4");
|
||||||
|
|
||||||
|
migrationBuilder.AddColumn<DateTime>(
|
||||||
|
name: "RejectDate",
|
||||||
|
table: "RetirementResignCancelApprovers",
|
||||||
|
type: "datetime(6)",
|
||||||
|
nullable: true);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <inheritdoc />
|
||||||
|
protected override void Down(MigrationBuilder migrationBuilder)
|
||||||
|
{
|
||||||
|
migrationBuilder.DropColumn(
|
||||||
|
name: "ApproveStep",
|
||||||
|
table: "RetirementResignEmployeeCancels");
|
||||||
|
|
||||||
|
migrationBuilder.DropColumn(
|
||||||
|
name: "Group",
|
||||||
|
table: "RetirementResignEmployeeCancels");
|
||||||
|
|
||||||
|
migrationBuilder.DropColumn(
|
||||||
|
name: "Org",
|
||||||
|
table: "RetirementResignEmployeeCancelApprovers");
|
||||||
|
|
||||||
|
migrationBuilder.DropColumn(
|
||||||
|
name: "RejectDate",
|
||||||
|
table: "RetirementResignEmployeeCancelApprovers");
|
||||||
|
|
||||||
|
migrationBuilder.DropColumn(
|
||||||
|
name: "ApproveStep",
|
||||||
|
table: "RetirementResignCancels");
|
||||||
|
|
||||||
|
migrationBuilder.DropColumn(
|
||||||
|
name: "Group",
|
||||||
|
table: "RetirementResignCancels");
|
||||||
|
|
||||||
|
migrationBuilder.DropColumn(
|
||||||
|
name: "Org",
|
||||||
|
table: "RetirementResignCancelApprovers");
|
||||||
|
|
||||||
|
migrationBuilder.DropColumn(
|
||||||
|
name: "RejectDate",
|
||||||
|
table: "RetirementResignCancelApprovers");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -17221,6 +17221,10 @@ namespace BMA.EHR.Infrastructure.Migrations
|
||||||
.HasColumnType("longtext")
|
.HasColumnType("longtext")
|
||||||
.HasComment("เหตุผลอนุมัติ");
|
.HasComment("เหตุผลอนุมัติ");
|
||||||
|
|
||||||
|
b.Property<string>("ApproveStep")
|
||||||
|
.HasColumnType("longtext")
|
||||||
|
.HasComment("step การอนุมัติ st1 = จทน.อนุมัตื,st2 = ผู้บังคับบัญชา อนุมัติ ");
|
||||||
|
|
||||||
b.Property<string>("CancelReason")
|
b.Property<string>("CancelReason")
|
||||||
.HasColumnType("longtext")
|
.HasColumnType("longtext")
|
||||||
.HasComment("เหตุผลยกเลิก");
|
.HasComment("เหตุผลยกเลิก");
|
||||||
|
|
@ -17260,6 +17264,10 @@ namespace BMA.EHR.Infrastructure.Migrations
|
||||||
.HasColumnOrder(101)
|
.HasColumnOrder(101)
|
||||||
.HasComment("User Id ที่สร้างข้อมูล");
|
.HasComment("User Id ที่สร้างข้อมูล");
|
||||||
|
|
||||||
|
b.Property<string>("Group")
|
||||||
|
.HasColumnType("longtext")
|
||||||
|
.HasComment("คนยื่นมาอยู่ในกลุ่ม");
|
||||||
|
|
||||||
b.Property<bool>("IsActive")
|
b.Property<bool>("IsActive")
|
||||||
.HasColumnType("tinyint(1)")
|
.HasColumnType("tinyint(1)")
|
||||||
.HasComment("สถานะการใช้งาน");
|
.HasComment("สถานะการใช้งาน");
|
||||||
|
|
@ -17562,6 +17570,10 @@ namespace BMA.EHR.Infrastructure.Migrations
|
||||||
.HasColumnOrder(102)
|
.HasColumnOrder(102)
|
||||||
.HasComment("แก้ไขข้อมูลล่าสุดเมื่อ");
|
.HasComment("แก้ไขข้อมูลล่าสุดเมื่อ");
|
||||||
|
|
||||||
|
b.Property<string>("Org")
|
||||||
|
.IsRequired()
|
||||||
|
.HasColumnType("longtext");
|
||||||
|
|
||||||
b.Property<string>("PositionName")
|
b.Property<string>("PositionName")
|
||||||
.IsRequired()
|
.IsRequired()
|
||||||
.HasColumnType("longtext");
|
.HasColumnType("longtext");
|
||||||
|
|
@ -17573,6 +17585,9 @@ namespace BMA.EHR.Infrastructure.Migrations
|
||||||
b.Property<Guid>("ProfileId")
|
b.Property<Guid>("ProfileId")
|
||||||
.HasColumnType("char(36)");
|
.HasColumnType("char(36)");
|
||||||
|
|
||||||
|
b.Property<DateTime?>("RejectDate")
|
||||||
|
.HasColumnType("datetime(6)");
|
||||||
|
|
||||||
b.Property<Guid>("RetirementResignCancelId")
|
b.Property<Guid>("RetirementResignCancelId")
|
||||||
.HasColumnType("char(36)");
|
.HasColumnType("char(36)");
|
||||||
|
|
||||||
|
|
@ -18151,6 +18166,10 @@ namespace BMA.EHR.Infrastructure.Migrations
|
||||||
.HasColumnType("longtext")
|
.HasColumnType("longtext")
|
||||||
.HasComment("เหตุผลอนุมัติ");
|
.HasComment("เหตุผลอนุมัติ");
|
||||||
|
|
||||||
|
b.Property<string>("ApproveStep")
|
||||||
|
.HasColumnType("longtext")
|
||||||
|
.HasComment("step การอนุมัติ st1 = จทน.อนุมัตื,st2 = ผู้บังคับบัญชา อนุมัติ ");
|
||||||
|
|
||||||
b.Property<string>("CancelReason")
|
b.Property<string>("CancelReason")
|
||||||
.HasColumnType("longtext")
|
.HasColumnType("longtext")
|
||||||
.HasComment("เหตุผลยกเลิก");
|
.HasComment("เหตุผลยกเลิก");
|
||||||
|
|
@ -18190,6 +18209,10 @@ namespace BMA.EHR.Infrastructure.Migrations
|
||||||
.HasColumnOrder(101)
|
.HasColumnOrder(101)
|
||||||
.HasComment("User Id ที่สร้างข้อมูล");
|
.HasComment("User Id ที่สร้างข้อมูล");
|
||||||
|
|
||||||
|
b.Property<string>("Group")
|
||||||
|
.HasColumnType("longtext")
|
||||||
|
.HasComment("คนยื่นมาอยู่ในกลุ่ม");
|
||||||
|
|
||||||
b.Property<bool>("IsActive")
|
b.Property<bool>("IsActive")
|
||||||
.HasColumnType("tinyint(1)")
|
.HasColumnType("tinyint(1)")
|
||||||
.HasComment("สถานะการใช้งาน");
|
.HasComment("สถานะการใช้งาน");
|
||||||
|
|
@ -18488,6 +18511,10 @@ namespace BMA.EHR.Infrastructure.Migrations
|
||||||
.HasColumnOrder(102)
|
.HasColumnOrder(102)
|
||||||
.HasComment("แก้ไขข้อมูลล่าสุดเมื่อ");
|
.HasComment("แก้ไขข้อมูลล่าสุดเมื่อ");
|
||||||
|
|
||||||
|
b.Property<string>("Org")
|
||||||
|
.IsRequired()
|
||||||
|
.HasColumnType("longtext");
|
||||||
|
|
||||||
b.Property<string>("PositionName")
|
b.Property<string>("PositionName")
|
||||||
.IsRequired()
|
.IsRequired()
|
||||||
.HasColumnType("longtext");
|
.HasColumnType("longtext");
|
||||||
|
|
@ -18499,6 +18526,9 @@ namespace BMA.EHR.Infrastructure.Migrations
|
||||||
b.Property<Guid>("ProfileId")
|
b.Property<Guid>("ProfileId")
|
||||||
.HasColumnType("char(36)");
|
.HasColumnType("char(36)");
|
||||||
|
|
||||||
|
b.Property<DateTime?>("RejectDate")
|
||||||
|
.HasColumnType("datetime(6)");
|
||||||
|
|
||||||
b.Property<Guid>("RetirementResignEmployeeCancelId")
|
b.Property<Guid>("RetirementResignEmployeeCancelId")
|
||||||
.HasColumnType("char(36)");
|
.HasColumnType("char(36)");
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -318,6 +318,8 @@ namespace BMA.EHR.Retirement.Service.Controllers
|
||||||
p.CancelReason,
|
p.CancelReason,
|
||||||
p.IsActive,
|
p.IsActive,
|
||||||
p.CreatedAt,
|
p.CreatedAt,
|
||||||
|
p.ApproveStep,
|
||||||
|
p.Group,
|
||||||
})
|
})
|
||||||
.ToListAsync();
|
.ToListAsync();
|
||||||
|
|
||||||
|
|
@ -599,6 +601,8 @@ namespace BMA.EHR.Retirement.Service.Controllers
|
||||||
p.IsNoBurden,
|
p.IsNoBurden,
|
||||||
p.IsDiscipline,
|
p.IsDiscipline,
|
||||||
p.CancelReason,
|
p.CancelReason,
|
||||||
|
p.ApproveStep,
|
||||||
|
p.Group,
|
||||||
Approvers = p.Approvers.Where(x => x.ApproveType.ToUpper() == "APPROVER"),
|
Approvers = p.Approvers.Where(x => x.ApproveType.ToUpper() == "APPROVER"),
|
||||||
Commanders = p.Approvers.Where(x => x.ApproveType.ToUpper() == "COMMANDER"),
|
Commanders = p.Approvers.Where(x => x.ApproveType.ToUpper() == "COMMANDER"),
|
||||||
KeycloakUserId = p.CreatedUserId,
|
KeycloakUserId = p.CreatedUserId,
|
||||||
|
|
@ -685,6 +689,8 @@ namespace BMA.EHR.Retirement.Service.Controllers
|
||||||
data.idMain,
|
data.idMain,
|
||||||
data.statusMain,
|
data.statusMain,
|
||||||
data.KeycloakUserId,
|
data.KeycloakUserId,
|
||||||
|
data.ApproveStep,
|
||||||
|
data.Group,
|
||||||
data.Approvers,
|
data.Approvers,
|
||||||
data.Commanders,
|
data.Commanders,
|
||||||
statusCancel = data.Status,
|
statusCancel = data.Status,
|
||||||
|
|
@ -781,6 +787,11 @@ namespace BMA.EHR.Retirement.Service.Controllers
|
||||||
p.IsNoBurden,
|
p.IsNoBurden,
|
||||||
p.IsDiscipline,
|
p.IsDiscipline,
|
||||||
p.CancelReason,
|
p.CancelReason,
|
||||||
|
p.ApproveStep,
|
||||||
|
p.Group,
|
||||||
|
Approvers = p.Approvers.Where(x => x.ApproveType.ToUpper() == "APPROVER"),
|
||||||
|
Commanders = p.Approvers.Where(x => x.ApproveType.ToUpper() == "COMMANDER"),
|
||||||
|
KeycloakUserId = p.CreatedUserId,
|
||||||
idMain = p.RetirementResign.Id,
|
idMain = p.RetirementResign.Id,
|
||||||
statusMain = p.RetirementResign.Status,
|
statusMain = p.RetirementResign.Status,
|
||||||
RetirementResignDocs = p.RetirementResign.RetirementResignDocs.Where(d => d.Document != null).Select(d => new { d.Document.Id, d.Document.FileName }),
|
RetirementResignDocs = p.RetirementResign.RetirementResignDocs.Where(d => d.Document != null).Select(d => new { d.Document.Id, d.Document.FileName }),
|
||||||
|
|
@ -863,6 +874,11 @@ namespace BMA.EHR.Retirement.Service.Controllers
|
||||||
data.CancelReason,
|
data.CancelReason,
|
||||||
data.idMain,
|
data.idMain,
|
||||||
data.statusMain,
|
data.statusMain,
|
||||||
|
data.KeycloakUserId,
|
||||||
|
data.ApproveStep,
|
||||||
|
data.Group,
|
||||||
|
data.Approvers,
|
||||||
|
data.Commanders,
|
||||||
Docs = retirementResignDocs,
|
Docs = retirementResignDocs,
|
||||||
};
|
};
|
||||||
return Success(_data);
|
return Success(_data);
|
||||||
|
|
@ -1195,6 +1211,8 @@ namespace BMA.EHR.Retirement.Service.Controllers
|
||||||
{
|
{
|
||||||
var retirementResignCancel = new RetirementResignCancel
|
var retirementResignCancel = new RetirementResignCancel
|
||||||
{
|
{
|
||||||
|
ApproveStep = "st1",
|
||||||
|
Group = updated.Group,
|
||||||
Location = updated.Location,
|
Location = updated.Location,
|
||||||
SendDate = updated.SendDate,
|
SendDate = updated.SendDate,
|
||||||
ActiveDate = updated.ActiveDate,
|
ActiveDate = updated.ActiveDate,
|
||||||
|
|
@ -2797,6 +2815,169 @@ namespace BMA.EHR.Retirement.Service.Controllers
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// LV2_013 - เจ้าหน้าที่อนุมัติการลา (ADMIN)
|
||||||
|
/// </summary>
|
||||||
|
/// <returns>
|
||||||
|
/// </returns>
|
||||||
|
/// <response code="200">เมื่อทำรายการสำเร็จ</response>
|
||||||
|
/// <response code="401">ไม่ได้ Login เข้าระบบ</response>
|
||||||
|
/// <response code="500">เมื่อเกิดข้อผิดพลาดในการทำงาน</response>
|
||||||
|
[HttpGet("admin-cancel/approve/officer/{id:guid}")]
|
||||||
|
[ProducesResponseType(StatusCodes.Status200OK)]
|
||||||
|
[ProducesResponseType(StatusCodes.Status401Unauthorized)]
|
||||||
|
[ProducesResponseType(StatusCodes.Status500InternalServerError)]
|
||||||
|
public async Task<ActionResult<ResponseObject>> OfficerApproveRetirementResignCancelAsync(Guid id)
|
||||||
|
{
|
||||||
|
// var getPermission = await _permission.GetPermissionAPIAsync("UPDATE", "SYS_LEAVE_LIST");
|
||||||
|
// var jsonData = JsonConvert.DeserializeObject<JObject>(getPermission);
|
||||||
|
// if (jsonData["status"]?.ToString() != "200")
|
||||||
|
// {
|
||||||
|
// return Error(jsonData["message"]?.ToString(), StatusCodes.Status403Forbidden);
|
||||||
|
// }
|
||||||
|
await _repository.OfficerApproveRetirementResignCancel(id);
|
||||||
|
|
||||||
|
return Success();
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// LV2_015 - ผู้บังคับบัญชาอนุมัติการลา(ADMIN)
|
||||||
|
/// </summary>
|
||||||
|
/// <returns>
|
||||||
|
/// </returns>
|
||||||
|
/// <response code="200">เมื่อทำรายการสำเร็จ</response>
|
||||||
|
/// <response code="401">ไม่ได้ Login เข้าระบบ</response>
|
||||||
|
/// <response code="500">เมื่อเกิดข้อผิดพลาดในการทำงาน</response>
|
||||||
|
[HttpPut("admin-cancel/approve/comander/{id:guid}")]
|
||||||
|
[ProducesResponseType(StatusCodes.Status200OK)]
|
||||||
|
[ProducesResponseType(StatusCodes.Status401Unauthorized)]
|
||||||
|
[ProducesResponseType(StatusCodes.Status500InternalServerError)]
|
||||||
|
public async Task<ActionResult<ResponseObject>> CommanderApproveRetirementResignCancelAsync(Guid id,
|
||||||
|
[FromBody] RetirementRequestApproveDto req)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
// var getPermission = await _permission.GetPermissionAPIAsync("UPDATE", "SYS_LEAVE_LIST");
|
||||||
|
// var jsonData = JsonConvert.DeserializeObject<JObject>(getPermission);
|
||||||
|
// if (jsonData["status"]?.ToString() != "200")
|
||||||
|
// {
|
||||||
|
// return Error(jsonData["message"]?.ToString(), StatusCodes.Status403Forbidden);
|
||||||
|
// }
|
||||||
|
await _repository.CommanderApproveRetirementResignCancel(id, req.Reason ?? "", null);
|
||||||
|
|
||||||
|
return Success();
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
return Error(ex);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// ผู้บังคับบัญชาไม่อนุมัติการลา(ADMIN)
|
||||||
|
/// </summary>
|
||||||
|
/// <returns>
|
||||||
|
/// </returns>
|
||||||
|
/// <response code="200">เมื่อทำรายการสำเร็จ</response>
|
||||||
|
/// <response code="401">ไม่ได้ Login เข้าระบบ</response>
|
||||||
|
/// <response code="500">เมื่อเกิดข้อผิดพลาดในการทำงาน</response>
|
||||||
|
[HttpPut("admin-cancel/reject/comander/{id:guid}")]
|
||||||
|
[ProducesResponseType(StatusCodes.Status200OK)]
|
||||||
|
[ProducesResponseType(StatusCodes.Status401Unauthorized)]
|
||||||
|
[ProducesResponseType(StatusCodes.Status500InternalServerError)]
|
||||||
|
public async Task<ActionResult<ResponseObject>> CommanderRejectRetirementResignCancelAsync(Guid id,
|
||||||
|
[FromBody] RetirementRequestApproveDto req)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
// var getPermission = await _permission.GetPermissionAPIAsync("UPDATE", "SYS_LEAVE_LIST");
|
||||||
|
// var jsonData = JsonConvert.DeserializeObject<JObject>(getPermission);
|
||||||
|
// if (jsonData["status"]?.ToString() != "200")
|
||||||
|
// {
|
||||||
|
// return Error(jsonData["message"]?.ToString(), StatusCodes.Status403Forbidden);
|
||||||
|
// }
|
||||||
|
await _repository.CommanderRejectRetirementResignCancel(id, req.Reason ?? "", req.Date);
|
||||||
|
|
||||||
|
return Success();
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
return Error(ex);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// LV2_016 - ผู้มีอำนาจอนุมัติการลา (ADMIN)
|
||||||
|
/// </summary>
|
||||||
|
/// <returns>
|
||||||
|
/// </returns>
|
||||||
|
/// <response code="200">เมื่อทำรายการสำเร็จ</response>
|
||||||
|
/// <response code="401">ไม่ได้ Login เข้าระบบ</response>
|
||||||
|
/// <response code="500">เมื่อเกิดข้อผิดพลาดในการทำงาน</response>
|
||||||
|
[HttpPut("admin-cancel/approve/{id:guid}")]
|
||||||
|
[ProducesResponseType(StatusCodes.Status200OK)]
|
||||||
|
[ProducesResponseType(StatusCodes.Status401Unauthorized)]
|
||||||
|
[ProducesResponseType(StatusCodes.Status500InternalServerError)]
|
||||||
|
public async Task<ActionResult<ResponseObject>> ApproveRetirementResignCancelAsync(Guid id,
|
||||||
|
[FromBody] RetirementRequestApproveDto req)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
// var getPermission = await _permission.GetPermissionAPIAsync("UPDATE", "SYS_LEAVE_LIST");
|
||||||
|
// var jsonData = JsonConvert.DeserializeObject<JObject>(getPermission);
|
||||||
|
// if (jsonData["status"]?.ToString() != "200")
|
||||||
|
// {
|
||||||
|
// return Error(jsonData["message"]?.ToString(), StatusCodes.Status403Forbidden);
|
||||||
|
// }
|
||||||
|
await _repository.ApproveRetirementResignCancel(id, req.Reason ?? "", null);
|
||||||
|
|
||||||
|
return Success();
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
return Error(ex);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// LV2_017 - ผู้มีอำนาจไม่อนุมัติการลา (ADMIN)
|
||||||
|
/// </summary>
|
||||||
|
/// <returns>
|
||||||
|
/// </returns>
|
||||||
|
/// <response code="200">เมื่อทำรายการสำเร็จ</response>
|
||||||
|
/// <response code="401">ไม่ได้ Login เข้าระบบ</response>
|
||||||
|
/// <response code="500">เมื่อเกิดข้อผิดพลาดในการทำงาน</response>
|
||||||
|
[HttpPut("admin-cancel/reject/{id:guid}")]
|
||||||
|
[ProducesResponseType(StatusCodes.Status200OK)]
|
||||||
|
[ProducesResponseType(StatusCodes.Status401Unauthorized)]
|
||||||
|
[ProducesResponseType(StatusCodes.Status500InternalServerError)]
|
||||||
|
public async Task<ActionResult<ResponseObject>> RejectRetirementResignCancelAsync(Guid id,
|
||||||
|
[FromBody] RetirementRequestApproveDto req)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
// var getPermission = await _permission.GetPermissionAPIAsync("UPDATE", "SYS_LEAVE_LIST");
|
||||||
|
// var jsonData = JsonConvert.DeserializeObject<JObject>(getPermission);
|
||||||
|
// if (jsonData["status"]?.ToString() != "200")
|
||||||
|
// {
|
||||||
|
// return Error(jsonData["message"]?.ToString(), StatusCodes.Status403Forbidden);
|
||||||
|
// }
|
||||||
|
await _repository.RejectRetirementResignCancel(id, req.Reason ?? "", req.Date);
|
||||||
|
|
||||||
|
return Success();
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
return Error(ex);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
#endregion
|
#endregion
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -256,6 +256,8 @@ namespace BMA.EHR.Retirement.Service.Controllers
|
||||||
p.CancelReason,
|
p.CancelReason,
|
||||||
p.IsActive,
|
p.IsActive,
|
||||||
p.CreatedAt,
|
p.CreatedAt,
|
||||||
|
p.ApproveStep,
|
||||||
|
p.Group,
|
||||||
})
|
})
|
||||||
.ToListAsync();
|
.ToListAsync();
|
||||||
|
|
||||||
|
|
@ -537,6 +539,8 @@ namespace BMA.EHR.Retirement.Service.Controllers
|
||||||
p.IsNoDebt,
|
p.IsNoDebt,
|
||||||
p.IsNoBurden,
|
p.IsNoBurden,
|
||||||
p.IsDiscipline,
|
p.IsDiscipline,
|
||||||
|
p.ApproveStep,
|
||||||
|
p.Group,
|
||||||
Approvers = p.Approvers.Where(x => x.ApproveType.ToUpper() == "APPROVER"),
|
Approvers = p.Approvers.Where(x => x.ApproveType.ToUpper() == "APPROVER"),
|
||||||
Commanders = p.Approvers.Where(x => x.ApproveType.ToUpper() == "COMMANDER"),
|
Commanders = p.Approvers.Where(x => x.ApproveType.ToUpper() == "COMMANDER"),
|
||||||
KeycloakUserId = p.CreatedUserId,
|
KeycloakUserId = p.CreatedUserId,
|
||||||
|
|
@ -622,6 +626,8 @@ namespace BMA.EHR.Retirement.Service.Controllers
|
||||||
data.CancelReason,
|
data.CancelReason,
|
||||||
data.idMain,
|
data.idMain,
|
||||||
data.statusMain,
|
data.statusMain,
|
||||||
|
data.ApproveStep,
|
||||||
|
data.Group,
|
||||||
data.KeycloakUserId,
|
data.KeycloakUserId,
|
||||||
data.Approvers,
|
data.Approvers,
|
||||||
data.Commanders,
|
data.Commanders,
|
||||||
|
|
@ -719,6 +725,11 @@ namespace BMA.EHR.Retirement.Service.Controllers
|
||||||
p.IsNoBurden,
|
p.IsNoBurden,
|
||||||
p.IsDiscipline,
|
p.IsDiscipline,
|
||||||
p.CancelReason,
|
p.CancelReason,
|
||||||
|
p.ApproveStep,
|
||||||
|
p.Group,
|
||||||
|
Approvers = p.Approvers.Where(x => x.ApproveType.ToUpper() == "APPROVER"),
|
||||||
|
Commanders = p.Approvers.Where(x => x.ApproveType.ToUpper() == "COMMANDER"),
|
||||||
|
KeycloakUserId = p.CreatedUserId,
|
||||||
idMain = p.RetirementResignEmployee.Id,
|
idMain = p.RetirementResignEmployee.Id,
|
||||||
statusMain = p.RetirementResignEmployee.Status,
|
statusMain = p.RetirementResignEmployee.Status,
|
||||||
RetirementResignEmployeeDocs = p.RetirementResignEmployee.RetirementResignEmployeeDocs.Where(d => d.Document != null).Select(d => new { d.Document.Id, d.Document.FileName }),
|
RetirementResignEmployeeDocs = p.RetirementResignEmployee.RetirementResignEmployeeDocs.Where(d => d.Document != null).Select(d => new { d.Document.Id, d.Document.FileName }),
|
||||||
|
|
@ -801,6 +812,11 @@ namespace BMA.EHR.Retirement.Service.Controllers
|
||||||
data.CancelReason,
|
data.CancelReason,
|
||||||
data.idMain,
|
data.idMain,
|
||||||
data.statusMain,
|
data.statusMain,
|
||||||
|
data.KeycloakUserId,
|
||||||
|
data.ApproveStep,
|
||||||
|
data.Group,
|
||||||
|
data.Approvers,
|
||||||
|
data.Commanders,
|
||||||
Docs = retirementResignEmployeeDocs,
|
Docs = retirementResignEmployeeDocs,
|
||||||
};
|
};
|
||||||
return Success(_data);
|
return Success(_data);
|
||||||
|
|
@ -1101,6 +1117,8 @@ namespace BMA.EHR.Retirement.Service.Controllers
|
||||||
{
|
{
|
||||||
var retirementResignEmployeeCancel = new RetirementResignEmployeeCancel
|
var retirementResignEmployeeCancel = new RetirementResignEmployeeCancel
|
||||||
{
|
{
|
||||||
|
ApproveStep = "st1",
|
||||||
|
Group = updated.Group,
|
||||||
Location = updated.Location,
|
Location = updated.Location,
|
||||||
SendDate = updated.SendDate,
|
SendDate = updated.SendDate,
|
||||||
ActiveDate = updated.ActiveDate,
|
ActiveDate = updated.ActiveDate,
|
||||||
|
|
@ -2080,7 +2098,7 @@ namespace BMA.EHR.Retirement.Service.Controllers
|
||||||
// {
|
// {
|
||||||
// return Error(jsonData["message"]?.ToString(), StatusCodes.Status403Forbidden);
|
// return Error(jsonData["message"]?.ToString(), StatusCodes.Status403Forbidden);
|
||||||
// }
|
// }
|
||||||
await _repository.CommanderApproveRetirementResignEmployee(id, req.Reason ?? "", req.Date ?? DateTime.Now);
|
await _repository.CommanderApproveRetirementResignEmployee(id, req.Reason ?? "", null);
|
||||||
|
|
||||||
return Success();
|
return Success();
|
||||||
}
|
}
|
||||||
|
|
@ -2114,7 +2132,7 @@ namespace BMA.EHR.Retirement.Service.Controllers
|
||||||
// {
|
// {
|
||||||
// return Error(jsonData["message"]?.ToString(), StatusCodes.Status403Forbidden);
|
// return Error(jsonData["message"]?.ToString(), StatusCodes.Status403Forbidden);
|
||||||
// }
|
// }
|
||||||
await _repository.CommanderRejectRetirementResignEmployee(id, req.Reason ?? "", req.Date ?? DateTime.Now);
|
await _repository.CommanderRejectRetirementResignEmployee(id, req.Reason ?? "", req.Date);
|
||||||
|
|
||||||
return Success();
|
return Success();
|
||||||
}
|
}
|
||||||
|
|
@ -2148,7 +2166,7 @@ namespace BMA.EHR.Retirement.Service.Controllers
|
||||||
// {
|
// {
|
||||||
// return Error(jsonData["message"]?.ToString(), StatusCodes.Status403Forbidden);
|
// return Error(jsonData["message"]?.ToString(), StatusCodes.Status403Forbidden);
|
||||||
// }
|
// }
|
||||||
await _repository.ApproveRetirementResignEmployee(id, req.Reason ?? "", req.Date ?? DateTime.Now);
|
await _repository.ApproveRetirementResignEmployee(id, req.Reason ?? "", null);
|
||||||
|
|
||||||
return Success();
|
return Success();
|
||||||
}
|
}
|
||||||
|
|
@ -2182,7 +2200,170 @@ namespace BMA.EHR.Retirement.Service.Controllers
|
||||||
// {
|
// {
|
||||||
// return Error(jsonData["message"]?.ToString(), StatusCodes.Status403Forbidden);
|
// return Error(jsonData["message"]?.ToString(), StatusCodes.Status403Forbidden);
|
||||||
// }
|
// }
|
||||||
await _repository.RejectRetirementResignEmployee(id, req.Reason ?? "", req.Date ?? DateTime.Now);
|
await _repository.RejectRetirementResignEmployee(id, req.Reason ?? "", req.Date);
|
||||||
|
|
||||||
|
return Success();
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
return Error(ex);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// LV2_013 - เจ้าหน้าที่อนุมัติการลา ลูกจ้าง(ADMIN)
|
||||||
|
/// </summary>
|
||||||
|
/// <returns>
|
||||||
|
/// </returns>
|
||||||
|
/// <response code="200">เมื่อทำรายการสำเร็จ</response>
|
||||||
|
/// <response code="401">ไม่ได้ Login เข้าระบบ</response>
|
||||||
|
/// <response code="500">เมื่อเกิดข้อผิดพลาดในการทำงาน</response>
|
||||||
|
[HttpGet("admin-cancel/approve/officer/{id:guid}")]
|
||||||
|
[ProducesResponseType(StatusCodes.Status200OK)]
|
||||||
|
[ProducesResponseType(StatusCodes.Status401Unauthorized)]
|
||||||
|
[ProducesResponseType(StatusCodes.Status500InternalServerError)]
|
||||||
|
public async Task<ActionResult<ResponseObject>> OfficerApproveRetirementResignEmployeeCancelAsync(Guid id)
|
||||||
|
{
|
||||||
|
// var getPermission = await _permission.GetPermissionAPIAsync("UPDATE", "SYS_LEAVE_LIST");
|
||||||
|
// var jsonData = JsonConvert.DeserializeObject<JObject>(getPermission);
|
||||||
|
// if (jsonData["status"]?.ToString() != "200")
|
||||||
|
// {
|
||||||
|
// return Error(jsonData["message"]?.ToString(), StatusCodes.Status403Forbidden);
|
||||||
|
// }
|
||||||
|
await _repository.OfficerApproveRetirementResignEmployeeCancel(id);
|
||||||
|
|
||||||
|
return Success();
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// LV2_015 - ผู้บังคับบัญชาอนุมัติการลาลูกจ้าง(ADMIN)
|
||||||
|
/// </summary>
|
||||||
|
/// <returns>
|
||||||
|
/// </returns>
|
||||||
|
/// <response code="200">เมื่อทำรายการสำเร็จ</response>
|
||||||
|
/// <response code="401">ไม่ได้ Login เข้าระบบ</response>
|
||||||
|
/// <response code="500">เมื่อเกิดข้อผิดพลาดในการทำงาน</response>
|
||||||
|
[HttpPut("admin-cancel/approve/comander/{id:guid}")]
|
||||||
|
[ProducesResponseType(StatusCodes.Status200OK)]
|
||||||
|
[ProducesResponseType(StatusCodes.Status401Unauthorized)]
|
||||||
|
[ProducesResponseType(StatusCodes.Status500InternalServerError)]
|
||||||
|
public async Task<ActionResult<ResponseObject>> CommanderApproveRetirementResignEmployeeCancelAsync(Guid id,
|
||||||
|
[FromBody] RetirementRequestApproveDto req)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
// var getPermission = await _permission.GetPermissionAPIAsync("UPDATE", "SYS_LEAVE_LIST");
|
||||||
|
// var jsonData = JsonConvert.DeserializeObject<JObject>(getPermission);
|
||||||
|
// if (jsonData["status"]?.ToString() != "200")
|
||||||
|
// {
|
||||||
|
// return Error(jsonData["message"]?.ToString(), StatusCodes.Status403Forbidden);
|
||||||
|
// }
|
||||||
|
await _repository.CommanderApproveRetirementResignEmployeeCancel(id, req.Reason ?? "", null);
|
||||||
|
|
||||||
|
return Success();
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
return Error(ex);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// ผู้บังคับบัญชาไม่อนุมัติการลาลูกจ้าง(ADMIN)
|
||||||
|
/// </summary>
|
||||||
|
/// <returns>
|
||||||
|
/// </returns>
|
||||||
|
/// <response code="200">เมื่อทำรายการสำเร็จ</response>
|
||||||
|
/// <response code="401">ไม่ได้ Login เข้าระบบ</response>
|
||||||
|
/// <response code="500">เมื่อเกิดข้อผิดพลาดในการทำงาน</response>
|
||||||
|
[HttpPut("admin-cancel/reject/comander/{id:guid}")]
|
||||||
|
[ProducesResponseType(StatusCodes.Status200OK)]
|
||||||
|
[ProducesResponseType(StatusCodes.Status401Unauthorized)]
|
||||||
|
[ProducesResponseType(StatusCodes.Status500InternalServerError)]
|
||||||
|
public async Task<ActionResult<ResponseObject>> CommanderRejectRetirementResignEmployeeCancelAsync(Guid id,
|
||||||
|
[FromBody] RetirementRequestApproveDto req)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
// var getPermission = await _permission.GetPermissionAPIAsync("UPDATE", "SYS_LEAVE_LIST");
|
||||||
|
// var jsonData = JsonConvert.DeserializeObject<JObject>(getPermission);
|
||||||
|
// if (jsonData["status"]?.ToString() != "200")
|
||||||
|
// {
|
||||||
|
// return Error(jsonData["message"]?.ToString(), StatusCodes.Status403Forbidden);
|
||||||
|
// }
|
||||||
|
await _repository.CommanderRejectRetirementResignEmployeeCancel(id, req.Reason ?? "", req.Date);
|
||||||
|
|
||||||
|
return Success();
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
return Error(ex);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// LV2_016 - ผู้มีอำนาจอนุมัติการลา ลูกจ้าง(ADMIN)
|
||||||
|
/// </summary>
|
||||||
|
/// <returns>
|
||||||
|
/// </returns>
|
||||||
|
/// <response code="200">เมื่อทำรายการสำเร็จ</response>
|
||||||
|
/// <response code="401">ไม่ได้ Login เข้าระบบ</response>
|
||||||
|
/// <response code="500">เมื่อเกิดข้อผิดพลาดในการทำงาน</response>
|
||||||
|
[HttpPut("admin-cancel/approve/{id:guid}")]
|
||||||
|
[ProducesResponseType(StatusCodes.Status200OK)]
|
||||||
|
[ProducesResponseType(StatusCodes.Status401Unauthorized)]
|
||||||
|
[ProducesResponseType(StatusCodes.Status500InternalServerError)]
|
||||||
|
public async Task<ActionResult<ResponseObject>> ApproveRetirementResignEmployeeCancelAsync(Guid id,
|
||||||
|
[FromBody] RetirementRequestApproveDto req)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
// var getPermission = await _permission.GetPermissionAPIAsync("UPDATE", "SYS_LEAVE_LIST");
|
||||||
|
// var jsonData = JsonConvert.DeserializeObject<JObject>(getPermission);
|
||||||
|
// if (jsonData["status"]?.ToString() != "200")
|
||||||
|
// {
|
||||||
|
// return Error(jsonData["message"]?.ToString(), StatusCodes.Status403Forbidden);
|
||||||
|
// }
|
||||||
|
await _repository.ApproveRetirementResignEmployeeCancel(id, req.Reason ?? "", null);
|
||||||
|
|
||||||
|
return Success();
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
return Error(ex);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// LV2_017 - ผู้มีอำนาจไม่อนุมัติการลา ลูกจ้าง(ADMIN)
|
||||||
|
/// </summary>
|
||||||
|
/// <returns>
|
||||||
|
/// </returns>
|
||||||
|
/// <response code="200">เมื่อทำรายการสำเร็จ</response>
|
||||||
|
/// <response code="401">ไม่ได้ Login เข้าระบบ</response>
|
||||||
|
/// <response code="500">เมื่อเกิดข้อผิดพลาดในการทำงาน</response>
|
||||||
|
[HttpPut("admin-cancel/reject/{id:guid}")]
|
||||||
|
[ProducesResponseType(StatusCodes.Status200OK)]
|
||||||
|
[ProducesResponseType(StatusCodes.Status401Unauthorized)]
|
||||||
|
[ProducesResponseType(StatusCodes.Status500InternalServerError)]
|
||||||
|
public async Task<ActionResult<ResponseObject>> RejectRetirementResignEmployeeCancelAsync(Guid id,
|
||||||
|
[FromBody] RetirementRequestApproveDto req)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
// var getPermission = await _permission.GetPermissionAPIAsync("UPDATE", "SYS_LEAVE_LIST");
|
||||||
|
// var jsonData = JsonConvert.DeserializeObject<JObject>(getPermission);
|
||||||
|
// if (jsonData["status"]?.ToString() != "200")
|
||||||
|
// {
|
||||||
|
// return Error(jsonData["message"]?.ToString(), StatusCodes.Status403Forbidden);
|
||||||
|
// }
|
||||||
|
await _repository.RejectRetirementResignEmployeeCancel(id, req.Reason ?? "", req.Date);
|
||||||
|
|
||||||
return Success();
|
return Success();
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue