ยกเลิกลูกจ้าง
Some checks failed
release-dev / release-dev (push) Failing after 13s

This commit is contained in:
moss 2025-05-27 19:48:38 +07:00
parent 28f8971e7f
commit 4b43104400
11 changed files with 22046 additions and 8 deletions

View file

@ -191,7 +191,7 @@ namespace BMA.EHR.Application.Repositories
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
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
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
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
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();
}
}
}
}

View file

@ -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();
}
}
}
}

View file

@ -130,6 +130,11 @@ namespace BMA.EHR.Domain.Models.Retirement
public string? posLevelOldId { get; set; }
[Comment("ชื่อระดับตำแหน่ง old")]
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("อ้างอิงรับย้าย")]
public virtual RetirementResign RetirementResign { get; set; }
public List<RetirementResignCancelApprover> Approvers { get; set; } = new();

View file

@ -23,6 +23,8 @@ namespace BMA.EHR.Domain.Models.Retirement
public string ApproveStatus { 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
}

View file

@ -128,6 +128,11 @@ namespace BMA.EHR.Domain.Models.Retirement
public string? posLevelOldId { get; set; }
[Comment("ชื่อระดับตำแหน่ง old")]
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("อ้างอิงรับย้าย")]
public virtual RetirementResignEmployee RetirementResignEmployee { get; set; }
public List<RetirementResignEmployeeCancelApprover> Approvers { get; set; } = new();

View file

@ -23,6 +23,8 @@ namespace BMA.EHR.Domain.Models.Retirement
public string ApproveStatus { 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
}

View file

@ -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");
}
}
}

View file

@ -17221,6 +17221,10 @@ namespace BMA.EHR.Infrastructure.Migrations
.HasColumnType("longtext")
.HasComment("เหตุผลอนุมัติ");
b.Property<string>("ApproveStep")
.HasColumnType("longtext")
.HasComment("step การอนุมัติ st1 = จทน.อนุมัตื,st2 = ผู้บังคับบัญชา อนุมัติ ");
b.Property<string>("CancelReason")
.HasColumnType("longtext")
.HasComment("เหตุผลยกเลิก");
@ -17260,6 +17264,10 @@ namespace BMA.EHR.Infrastructure.Migrations
.HasColumnOrder(101)
.HasComment("User Id ที่สร้างข้อมูล");
b.Property<string>("Group")
.HasColumnType("longtext")
.HasComment("คนยื่นมาอยู่ในกลุ่ม");
b.Property<bool>("IsActive")
.HasColumnType("tinyint(1)")
.HasComment("สถานะการใช้งาน");
@ -17562,6 +17570,10 @@ namespace BMA.EHR.Infrastructure.Migrations
.HasColumnOrder(102)
.HasComment("แก้ไขข้อมูลล่าสุดเมื่อ");
b.Property<string>("Org")
.IsRequired()
.HasColumnType("longtext");
b.Property<string>("PositionName")
.IsRequired()
.HasColumnType("longtext");
@ -17573,6 +17585,9 @@ namespace BMA.EHR.Infrastructure.Migrations
b.Property<Guid>("ProfileId")
.HasColumnType("char(36)");
b.Property<DateTime?>("RejectDate")
.HasColumnType("datetime(6)");
b.Property<Guid>("RetirementResignCancelId")
.HasColumnType("char(36)");
@ -18151,6 +18166,10 @@ namespace BMA.EHR.Infrastructure.Migrations
.HasColumnType("longtext")
.HasComment("เหตุผลอนุมัติ");
b.Property<string>("ApproveStep")
.HasColumnType("longtext")
.HasComment("step การอนุมัติ st1 = จทน.อนุมัตื,st2 = ผู้บังคับบัญชา อนุมัติ ");
b.Property<string>("CancelReason")
.HasColumnType("longtext")
.HasComment("เหตุผลยกเลิก");
@ -18190,6 +18209,10 @@ namespace BMA.EHR.Infrastructure.Migrations
.HasColumnOrder(101)
.HasComment("User Id ที่สร้างข้อมูล");
b.Property<string>("Group")
.HasColumnType("longtext")
.HasComment("คนยื่นมาอยู่ในกลุ่ม");
b.Property<bool>("IsActive")
.HasColumnType("tinyint(1)")
.HasComment("สถานะการใช้งาน");
@ -18488,6 +18511,10 @@ namespace BMA.EHR.Infrastructure.Migrations
.HasColumnOrder(102)
.HasComment("แก้ไขข้อมูลล่าสุดเมื่อ");
b.Property<string>("Org")
.IsRequired()
.HasColumnType("longtext");
b.Property<string>("PositionName")
.IsRequired()
.HasColumnType("longtext");
@ -18499,6 +18526,9 @@ namespace BMA.EHR.Infrastructure.Migrations
b.Property<Guid>("ProfileId")
.HasColumnType("char(36)");
b.Property<DateTime?>("RejectDate")
.HasColumnType("datetime(6)");
b.Property<Guid>("RetirementResignEmployeeCancelId")
.HasColumnType("char(36)");

View file

@ -318,6 +318,8 @@ namespace BMA.EHR.Retirement.Service.Controllers
p.CancelReason,
p.IsActive,
p.CreatedAt,
p.ApproveStep,
p.Group,
})
.ToListAsync();
@ -599,6 +601,8 @@ namespace BMA.EHR.Retirement.Service.Controllers
p.IsNoBurden,
p.IsDiscipline,
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,
@ -685,6 +689,8 @@ namespace BMA.EHR.Retirement.Service.Controllers
data.idMain,
data.statusMain,
data.KeycloakUserId,
data.ApproveStep,
data.Group,
data.Approvers,
data.Commanders,
statusCancel = data.Status,
@ -781,6 +787,11 @@ namespace BMA.EHR.Retirement.Service.Controllers
p.IsNoBurden,
p.IsDiscipline,
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,
statusMain = p.RetirementResign.Status,
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.idMain,
data.statusMain,
data.KeycloakUserId,
data.ApproveStep,
data.Group,
data.Approvers,
data.Commanders,
Docs = retirementResignDocs,
};
return Success(_data);
@ -1195,6 +1211,8 @@ namespace BMA.EHR.Retirement.Service.Controllers
{
var retirementResignCancel = new RetirementResignCancel
{
ApproveStep = "st1",
Group = updated.Group,
Location = updated.Location,
SendDate = updated.SendDate,
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
}
}

View file

@ -256,6 +256,8 @@ namespace BMA.EHR.Retirement.Service.Controllers
p.CancelReason,
p.IsActive,
p.CreatedAt,
p.ApproveStep,
p.Group,
})
.ToListAsync();
@ -537,6 +539,8 @@ namespace BMA.EHR.Retirement.Service.Controllers
p.IsNoDebt,
p.IsNoBurden,
p.IsDiscipline,
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,
@ -622,6 +626,8 @@ namespace BMA.EHR.Retirement.Service.Controllers
data.CancelReason,
data.idMain,
data.statusMain,
data.ApproveStep,
data.Group,
data.KeycloakUserId,
data.Approvers,
data.Commanders,
@ -719,6 +725,11 @@ namespace BMA.EHR.Retirement.Service.Controllers
p.IsNoBurden,
p.IsDiscipline,
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,
statusMain = p.RetirementResignEmployee.Status,
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.idMain,
data.statusMain,
data.KeycloakUserId,
data.ApproveStep,
data.Group,
data.Approvers,
data.Commanders,
Docs = retirementResignEmployeeDocs,
};
return Success(_data);
@ -1101,6 +1117,8 @@ namespace BMA.EHR.Retirement.Service.Controllers
{
var retirementResignEmployeeCancel = new RetirementResignEmployeeCancel
{
ApproveStep = "st1",
Group = updated.Group,
Location = updated.Location,
SendDate = updated.SendDate,
ActiveDate = updated.ActiveDate,
@ -2080,7 +2098,7 @@ namespace BMA.EHR.Retirement.Service.Controllers
// {
// 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();
}
@ -2114,7 +2132,7 @@ namespace BMA.EHR.Retirement.Service.Controllers
// {
// 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();
}
@ -2148,7 +2166,7 @@ namespace BMA.EHR.Retirement.Service.Controllers
// {
// 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();
}
@ -2182,7 +2200,170 @@ namespace BMA.EHR.Retirement.Service.Controllers
// {
// 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();
}