fix issue : SIT ระบบบันทึกเวลาปฏิบัติงาน>>ลงเวลากรณีพิเศษ (ไม่มีแจ้งเตือนไปยังผู้บังคับบัญชา) #969

This commit is contained in:
Suphonchai Phoonsawat 2025-01-24 10:18:41 +07:00
parent 752b1a5479
commit 6afb95fe1b
3 changed files with 116 additions and 37 deletions

View file

@ -73,47 +73,79 @@ namespace BMA.EHR.Application.Repositories.Leaves.TimeAttendants
var userId = UserId != null ? Guid.Parse(UserId) : Guid.Empty; var userId = UserId != null ? Guid.Parse(UserId) : Guid.Empty;
var profile = await _userProfileRepository.GetProfileByKeycloakIdAsync(userId, AccessToken ?? ""); var profile = await _userProfileRepository.GetProfileByKeycloakIdAsync(userId, AccessToken ?? "");
var profile_id = profile == null ? Guid.Empty : profile.Id;
var rootOc = _userProfileRepository.GetRootOcId(profile_id, AccessToken); // fix issue : SIT ระบบบันทึกเวลาปฏิบัติงาน>>ลงเวลากรณีพิเศษ (ไม่มีแจ้งเตือนไปยังผู้บังคับบัญชา) #969
var approver = string.Empty; // send noti + inbox + mail
var list = new List<OrganizationApproverResponse>(); // send inbox and notification
if (rootOc != null) var subject_str = $"มีการขออนุมัติลงเวลากรณีพิเศษ";
var body_str = $"โปรดพิจารณาคำร้องขอลงเวลาในกรณีพิเศษจาก {profile.Prefix}{profile.FirstName} {profile.LastName} ในวันที่ {entity.CheckDate.Date.ToThaiShortDate2()}";
var subject = subject_str;
var body = body_str;
_emailSenderService.SendMail(subject, body, "dev@frappet.com");
var inbox = new Inbox
{ {
list = await _commandRepository.GetOrgApproverAsync(rootOc ?? Guid.Empty); Subject = subject_str,
} Body = body_str,
if (list.Count > 0) ReceiverUserId = profile.CommanderId == Guid.Empty || profile.CommanderId == null ? Guid.Parse("08dbca3a-8b6a-4a4e-8b23-1f62e4f30ef6") : profile.CommanderId.Value,
Payload = "",
};
_appContext.Set<Inbox>().Add(inbox);
var noti = new Notification
{ {
var appr = list.FirstOrDefault(); Body = body_str,
ReceiverUserId = profile.CommanderId == Guid.Empty || profile.CommanderId == null ? Guid.Parse("08dbca3a-8b6a-4a4e-8b23-1f62e4f30ef6") : profile.CommanderId.Value,
// send inbox and notification Type = "",
var subject_str = $"มีการขออนุมัติลงเวลากรณีพิเศษ"; Payload = "",
var body_str = $"โปรดพิจารณาคำร้องขอลงเวลาในกรณีพิเศษจาก {profile.Prefix}{profile.FirstName} {profile.LastName} ในวันที่ {entity.CheckDate.Date.ToThaiShortDate2()}"; };
_appContext.Set<Notification>().Add(noti);
var subject = subject_str; await _appContext.SaveChangesAsync();
var body = body_str;
_emailSenderService.SendMail(subject, body, "dev@frappet.com");
var inbox = new Inbox //var profile_id = profile == null ? Guid.Empty : profile.Id;
{
Subject = subject_str,
Body = body_str,
ReceiverUserId = appr.Id == Guid.Empty ? Guid.Parse("08dbca3a-8b6a-4a4e-8b23-1f62e4f30ef6") : appr.Id,
Payload = "",
};
_appContext.Set<Inbox>().Add(inbox);
var noti = new Notification //var rootOc = _userProfileRepository.GetRootOcId(profile_id, AccessToken);
{ //var approver = string.Empty;
Body = body_str, //var list = new List<OrganizationApproverResponse>();
ReceiverUserId = appr.Id == Guid.Empty ? Guid.Parse("08dbca3a-8b6a-4a4e-8b23-1f62e4f30ef6") : appr.Id, //if (rootOc != null)
Type = "", //{
Payload = "", // list = await _commandRepository.GetOrgApproverAsync(rootOc ?? Guid.Empty);
}; //}
_appContext.Set<Notification>().Add(noti); //if (list.Count > 0)
await _appContext.SaveChangesAsync(); //{
} // var appr = list.FirstOrDefault();
// // send inbox and notification
// var subject_str = $"มีการขออนุมัติลงเวลากรณีพิเศษ";
// var body_str = $"โปรดพิจารณาคำร้องขอลงเวลาในกรณีพิเศษจาก {profile.Prefix}{profile.FirstName} {profile.LastName} ในวันที่ {entity.CheckDate.Date.ToThaiShortDate2()}";
// var subject = subject_str;
// var body = body_str;
// _emailSenderService.SendMail(subject, body, "dev@frappet.com");
// var inbox = new Inbox
// {
// Subject = subject_str,
// Body = body_str,
// ReceiverUserId = appr.Id == Guid.Empty ? Guid.Parse("08dbca3a-8b6a-4a4e-8b23-1f62e4f30ef6") : appr.Id,
// Payload = "",
// };
// _appContext.Set<Inbox>().Add(inbox);
// var noti = new Notification
// {
// Body = body_str,
// ReceiverUserId = appr.Id == Guid.Empty ? Guid.Parse("08dbca3a-8b6a-4a4e-8b23-1f62e4f30ef6") : appr.Id,
// Type = "",
// Payload = "",
// };
// _appContext.Set<Notification>().Add(noti);
// await _appContext.SaveChangesAsync();
//}
return entity; return entity;
} }

View file

@ -58,6 +58,10 @@ namespace BMA.EHR.Application.Responses.Profiles
public double? PositionSalaryAmount { get; set; } public double? PositionSalaryAmount { get; set; }
public string? Commander { get; set; } public string? Commander { get; set; }
public Guid? CommanderId { get; set; }
public Guid? CommanderKeycloak { get; set; }
} }
public class PosLevel public class PosLevel

View file

@ -703,12 +703,55 @@ namespace BMA.EHR.Leave.Service.Controllers
return Error(GlobalMessages.DataNotFound, StatusCodes.Status404NotFound); return Error(GlobalMessages.DataNotFound, StatusCodes.Status404NotFound);
} }
var govAge = (profile?.DateStart?.Date ?? DateTime.Now.Date).DiffDay(DateTime.Now.Date);
var leaveType = await _leaveTypeRepository.GetByIdAsync(req.Type); var leaveType = await _leaveTypeRepository.GetByIdAsync(req.Type);
if (leaveType == null) if (leaveType == null)
{ {
return Error(GlobalMessages.DataNotFound, StatusCodes.Status404NotFound); return Error(GlobalMessages.DataNotFound, StatusCodes.Status404NotFound);
} }
var leaveLimit = 0;
if (leaveType.Code.Trim().ToUpper() == "LV-005")
{
if (govAge >= 180)
{
if (govAge >= 3650) leaveLimit = 30;
else leaveLimit = 20;
}
else
{
leaveLimit = 0;
}
//var leavePrevYear = (await _leaveRequestRepository.GetSumApproveLeaveAsync(thisYear)).Where(x => x.LeaveTypeCode == "LV-005" && x.KeycloakUserId == userId).FirstOrDefault();
//var leavePrevYearRemain = 0;
////var leavePrevYearRemain = 10 - (leavePrevYear == null ? 0 : leavePrevYear.SumLeaveDay); // หายอดวันลาที่เหลือของปีก่อน
//if (govAge >= 180)
// if (govAge >= 3650)
// {
// // ถ้าอายุราชการเกิน 10 ปี ได้บวกเพิ่มอีก 10 วัน
// isLeave = (totalDay - (sumWorkDay + sumWeekend) + sumApproveLeave) <= (20 + leavePrevYearRemain);
// if (!isLeave) message = "จำนวนวันลาเกินที่กำหนด";
// }
// else
// {
// isLeave = (totalDay - (sumWorkDay + sumWeekend) + sumApproveLeave) <= (10 + leavePrevYearRemain);
// if (!isLeave) message = "จำนวนวันลาเกินที่กำหนด";
// }
//else
//{
// leavePrevYearRemain
//}
}
else
leaveLimit = leaveType.Limit;
var sumLeave = await _leaveRequestRepository.GetSumLeaveByTypeForUserAsync(userId, req.Type, thisYear); var sumLeave = await _leaveRequestRepository.GetSumLeaveByTypeForUserAsync(userId, req.Type, thisYear);
var restOldDay = await _leaveRequestRepository.GetRestDayTotalByYearForUserAsync(userId, thisYear - 1); var restOldDay = await _leaveRequestRepository.GetRestDayTotalByYearForUserAsync(userId, thisYear - 1);
@ -738,9 +781,9 @@ namespace BMA.EHR.Leave.Service.Controllers
PositionLevelName = profile.PosLevel == null ? "" : profile.PosLevel, PositionLevelName = profile.PosLevel == null ? "" : profile.PosLevel,
OrganizationName = profile.Root ?? "", //profile.Oc ?? "", OrganizationName = profile.Root ?? "", //profile.Oc ?? "",
LeaveLimit = leaveType.Limit, LeaveLimit = leaveLimit,
LeaveTotal = sumLeave, LeaveTotal = sumLeave,
LeaveRemain = leaveType.Limit - sumLeave, LeaveRemain = leaveLimit - sumLeave,
RestDayTotalOld = restOldDay, RestDayTotalOld = restOldDay,
BirthDate = profile.BirthDate.Date, BirthDate = profile.BirthDate.Date,
DateAppoint = profile.DateAppoint == null ? null : profile.DateAppoint.Value.Date, DateAppoint = profile.DateAppoint == null ? null : profile.DateAppoint.Value.Date,