Merge branch 'develop' of github.com:Frappet/BMA-EHR-BackEnd into develop

This commit is contained in:
kittapath 2024-10-28 09:57:23 +07:00
commit 5e4394fd33
2 changed files with 85 additions and 55 deletions

View file

@ -271,6 +271,19 @@ namespace BMA.EHR.Application.Repositories.Leaves.LeaveRequests
return data.Sum(x => x.LeaveTotal);
}
//public async Task<double> GetSumApproveLeaveByTypeForUserAsync(Guid keycloakUserId, Guid leaveTypeId, int year)
//{
// var data = await _dbContext.Set<LeaveRequest>().AsQueryable().AsNoTracking()
// .Include(x => x.Type)
// .Where(x => x.KeycloakUserId == keycloakUserId)
// .Where(x => x.Type.Id == leaveTypeId)
// .Where(x => x.LeaveStartDate.Year == year)
// .Where(x => x.LeaveStatus == "APPROVE")
// .ToListAsync();
// return data.Sum(x => x.LeaveTotal);
//}
public async Task<DateTime?> GetLeaveLastByTypeForUserAsync(Guid keycloakUserId, Guid leaveTypeId)
{
var data = await _dbContext.Set<LeaveRequest>().AsQueryable().AsNoTracking()

View file

@ -393,6 +393,19 @@ namespace BMA.EHR.Leave.Service.Controllers
// else
// leaveTotal = sumLeave - sumHoliday - sumWeekend;
// ลองใช้ oldData
oldData.LeaveRange = req.LeaveRange;
oldData.LeaveStartDate = req.LeaveStartDate;
oldData.LeaveEndDate = req.LeaveEndDate;
oldData.LeaveWrote = req.LeaveWrote ?? "";
oldData.LeaveDetail = req.LeaveDetail ?? "";
oldData.LeaveAddress = req.LeaveAddress ?? "";
oldData.LeaveNumber = req.LeaveNumber ?? "";
oldData.LeaveTotal = req.LeaveTotal;
oldData.LeaveSalaryText = req.LeaveSalaryText ?? "";
/*** remove old code
var leaveRequest = new LeaveRequest
{
Id = id,
@ -422,6 +435,8 @@ namespace BMA.EHR.Leave.Service.Controllers
// get leave last
leaveRequest.LeaveLast = await _leaveRequestRepository.GetLeaveLastByTypeForUserAsync(userId, req.Type);
**/
// upload document
if (req.LeaveDocument != null)
{
@ -430,8 +445,8 @@ namespace BMA.EHR.Leave.Service.Controllers
var doc = await _minIOService.UploadFileAsync(d);
if (doc != null)
{
leaveRequest.LeaveDocument.Add(new LeaveDocument { Document = doc });
var a = leaveRequest.LeaveDocument.Last();
oldData.LeaveDocument.Add(new LeaveDocument { Document = doc });
var a = oldData.LeaveDocument.Last();
_context.Entry(a).State = Microsoft.EntityFrameworkCore.EntityState.Modified;
}
}
@ -443,8 +458,8 @@ namespace BMA.EHR.Leave.Service.Controllers
var doc = await _minIOService.UploadFileAsync(req.LeaveDraftDocument);
if (doc != null)
{
leaveRequest.LeaveDraftDocument = doc;
_context.Entry(leaveRequest.LeaveDraftDocument).State = Microsoft.EntityFrameworkCore.EntityState.Modified;
oldData.LeaveDraftDocument = doc;
_context.Entry(oldData.LeaveDraftDocument).State = Microsoft.EntityFrameworkCore.EntityState.Modified;
}
}
@ -453,91 +468,91 @@ namespace BMA.EHR.Leave.Service.Controllers
{
case "LV-004":
{
leaveRequest.WifeDayName = req.WifeDayName ?? "";
leaveRequest.WifeDayDateBorn = req.WifeDayDateBorn ?? "";
oldData.WifeDayName = req.WifeDayName ?? "";
oldData.WifeDayDateBorn = req.WifeDayDateBorn ?? "";
}
break;
case "LV-005":
{
leaveRequest.RestDayOldTotal =
oldData.RestDayOldTotal =
await _leaveRequestRepository.GetRestDayTotalByYearForUserAsync(userId, thisYear - 1);
leaveRequest.RestDayCurrentTotal =
oldData.RestDayCurrentTotal =
await _leaveRequestRepository.GetRestDayTotalByYearForUserAsync(userId, thisYear);
}
break;
case "LV-006":
{
leaveRequest.OrdainDayStatus = req.OrdainDayStatus ?? false;
leaveRequest.OrdainDayLocationName = req.OrdainDayLocationName ?? "";
leaveRequest.OrdainDayLocationAddress = req.OrdainDayLocationAddress ?? "";
leaveRequest.OrdainDayLocationNumber = req.OrdainDayLocationNumber ?? "";
oldData.OrdainDayStatus = req.OrdainDayStatus ?? false;
oldData.OrdainDayLocationName = req.OrdainDayLocationName ?? "";
oldData.OrdainDayLocationAddress = req.OrdainDayLocationAddress ?? "";
oldData.OrdainDayLocationNumber = req.OrdainDayLocationNumber ?? "";
if (req.OrdainDayOrdination != null)
leaveRequest.OrdainDayOrdination = req.OrdainDayOrdination.Value;
oldData.OrdainDayOrdination = req.OrdainDayOrdination.Value;
leaveRequest.OrdainDayBuddhistLentName = req.OrdainDayBuddhistLentName ?? "";
oldData.OrdainDayBuddhistLentName = req.OrdainDayBuddhistLentName ?? "";
leaveRequest.OrdainDayBuddhistLentAddress = req.OrdainDayBuddhistLentAddress ?? "";
oldData.OrdainDayBuddhistLentAddress = req.OrdainDayBuddhistLentAddress ?? "";
leaveRequest.LeaveBirthDate = profile.BirthDate;
leaveRequest.LeaveGovernmentDate = profile.DateStart;
oldData.LeaveBirthDate = profile.BirthDate;
oldData.LeaveGovernmentDate = profile.DateStart;
leaveRequest.HajjDayStatus = req.HajjDayStatus ?? false;
oldData.HajjDayStatus = req.HajjDayStatus ?? false;
}
break;
case "LV-007":
{
leaveRequest.AbsentDayLocation = req.AbsentDayLocation ?? "";
leaveRequest.AbsentDaySummon = req.AbsentDaySummon ?? "";
oldData.AbsentDayLocation = req.AbsentDayLocation ?? "";
oldData.AbsentDaySummon = req.AbsentDaySummon ?? "";
if (req.AbsentDayRegistorDate != null)
leaveRequest.AbsentDayRegistorDate = req.AbsentDayRegistorDate.Value;
oldData.AbsentDayRegistorDate = req.AbsentDayRegistorDate.Value;
leaveRequest.AbsentDayGetIn = req.AbsentDayGetIn ?? "";
oldData.AbsentDayGetIn = req.AbsentDayGetIn ?? "";
leaveRequest.AbsentDayAt = req.AbsentDayAt ?? "";
oldData.AbsentDayAt = req.AbsentDayAt ?? "";
}
break;
case "LV-008":
{
var lastSalary = profile.ProfileSalary;
leaveRequest.LeaveSalary = lastSalary == null ? 0 : (int)lastSalary.Amount.Value;
leaveRequest.LeaveSalaryText =
oldData.LeaveSalary = lastSalary == null ? 0 : (int)lastSalary.Amount.Value;
oldData.LeaveSalaryText =
lastSalary == null ? "" : ((int)lastSalary.Amount.Value).ToThaiBahtText(false);
leaveRequest.LeaveBirthDate = profile.BirthDate;
leaveRequest.LeaveGovernmentDate = profile.DateStart;
oldData.LeaveBirthDate = profile.BirthDate;
oldData.LeaveGovernmentDate = profile.DateStart;
leaveRequest.StudyDaySubject = req.StudyDaySubject ?? "";
leaveRequest.StudyDayDegreeLevel = req.StudyDayDegreeLevel ?? "";
leaveRequest.StudyDayUniversityName = req.StudyDayUniversityName ?? "";
leaveRequest.StudyDayCountry = req.StudyDayCountry ?? "";
leaveRequest.StudyDayScholarship = req.StudyDayScholarship ?? "";
oldData.StudyDaySubject = req.StudyDaySubject ?? "";
oldData.StudyDayDegreeLevel = req.StudyDayDegreeLevel ?? "";
oldData.StudyDayUniversityName = req.StudyDayUniversityName ?? "";
oldData.StudyDayCountry = req.StudyDayCountry ?? "";
oldData.StudyDayScholarship = req.StudyDayScholarship ?? "";
leaveRequest.StudyDayTrainingSubject = req.StudyDayTrainingSubject ?? "";
leaveRequest.StudyDayTrainingName = req.StudyDayTrainingName ?? "";
oldData.StudyDayTrainingSubject = req.StudyDayTrainingSubject ?? "";
oldData.StudyDayTrainingName = req.StudyDayTrainingName ?? "";
}
break;
case "LV-010":
{
var lastSalary = profile.ProfileSalary;
leaveRequest.LeaveSalary = lastSalary == null ? 0 : (int)lastSalary.Amount.Value;
leaveRequest.LeaveSalaryText =
oldData.LeaveSalary = lastSalary == null ? 0 : (int)lastSalary.Amount.Value;
oldData.LeaveSalaryText =
lastSalary == null ? "" : ((int)lastSalary.Amount.Value).ToThaiBahtText(false);
leaveRequest.CoupleDayName = req.CoupleDayName ?? "";
leaveRequest.CoupleDayPosition = req.CoupleDayPosition ?? "";
leaveRequest.CoupleDayLevel = req.CoupleDayLevel ?? "";
leaveRequest.CoupleDayLevelCountry = req.CoupleDayLevelCountry ?? "";
leaveRequest.CoupleDayCountryHistory = req.CoupleDayCountryHistory ?? "";
leaveRequest.CoupleDayTotalHistory = req.CoupleDayTotalHistory ?? "";
oldData.CoupleDayName = req.CoupleDayName ?? "";
oldData.CoupleDayPosition = req.CoupleDayPosition ?? "";
oldData.CoupleDayLevel = req.CoupleDayLevel ?? "";
oldData.CoupleDayLevelCountry = req.CoupleDayLevelCountry ?? "";
oldData.CoupleDayCountryHistory = req.CoupleDayCountryHistory ?? "";
oldData.CoupleDayTotalHistory = req.CoupleDayTotalHistory ?? "";
if (req.CoupleDayStartDateHistory != null)
leaveRequest.CoupleDayStartDateHistory = req.CoupleDayStartDateHistory.Value;
oldData.CoupleDayStartDateHistory = req.CoupleDayStartDateHistory.Value;
if (req.CoupleDayEndDateHistory != null)
leaveRequest.CoupleDayEndDateHistory = req.CoupleDayEndDateHistory.Value;
oldData.CoupleDayEndDateHistory = req.CoupleDayEndDateHistory.Value;
leaveRequest.CoupleDaySumTotalHistory = req.CoupleDaySumTotalHistory ?? "";
oldData.CoupleDaySumTotalHistory = req.CoupleDaySumTotalHistory ?? "";
}
break;
}
@ -552,13 +567,13 @@ namespace BMA.EHR.Leave.Service.Controllers
approver = list.First().Name;
}
leaveRequest.LeaveTypeCode = leaveType.Code;
leaveRequest.Dear = approver;
leaveRequest.PositionName = profile.Position == null ? "" : profile.Position;
leaveRequest.PositionLevelName = profile.PosLevel == null ? "" : profile.PosLevel.PosLevelName;
leaveRequest.OrganizationName = profile.Oc ?? "";
oldData.LeaveTypeCode = leaveType.Code;
oldData.Dear = approver;
oldData.PositionName = profile.Position == null ? "" : profile.Position;
oldData.PositionLevelName = profile.PosLevel == null ? "" : profile.PosLevel.PosLevelName;
oldData.OrganizationName = profile.Oc ?? "";
_context.Entry(leaveRequest.Type).State = Microsoft.EntityFrameworkCore.EntityState.Detached;
_context.Entry(oldData.Type).State = Microsoft.EntityFrameworkCore.EntityState.Detached;
//_context.Entry(leaveRequest.Type).State = Microsoft.EntityFrameworkCore.EntityState.Modified;
@ -567,9 +582,9 @@ namespace BMA.EHR.Leave.Service.Controllers
//await _leaveRequestRepository.DeleteAsync(oldData);
// save to database
await _leaveRequestRepository.UpdateAsync(leaveRequest);
await _leaveRequestRepository.UpdateAsync(oldData);
return Success(new { id = leaveRequest.Id });
return Success(new { id = oldData.Id });
}
@ -712,6 +727,8 @@ namespace BMA.EHR.Leave.Service.Controllers
var totalDay = req.StartLeaveDate.DiffDay(req.EndLeaveDate.Date);
var sumWeekend = _holidayRepository.GetWeekEndCount(req.StartLeaveDate.Date, req.EndLeaveDate.Date, category);
var sumApproveLeave = await _leaveRequestRepository.GetSumApproveLeaveByTypeForUserAsync(userId, req.Type, req.StartLeaveDate.Year);
var isLeave = false;
switch (leaveType.Code.ToUpper().Trim())
@ -728,7 +745,7 @@ namespace BMA.EHR.Leave.Service.Controllers
isLeave = (totalDay - sumWorkDay - sumWeekend) <= 15;
break;
case "LV-005":
isLeave = (totalDay - sumWorkDay - sumWeekend) <= 10;
isLeave = (totalDay - sumWorkDay - sumWeekend - sumApproveLeave) <= 10;
break;
case "LV-006":
isLeave = totalDay <= 120;
@ -1560,7 +1577,7 @@ namespace BMA.EHR.Leave.Service.Controllers
approver = list.First().Name;
}
var leaveSummary = await _leaveRequestRepository.GetSumApproveLeaveByTypeForUserAsync(userId, rawData.Type.Id, thisYear);
var leaveSummary = await _leaveRequestRepository.GetSumApproveLeaveByTypeForUserAsync(rawData.KeycloakUserId, rawData.Type.Id, thisYear);
var sumLeave = rawData.LeaveStartDate.DiffDay(rawData.LeaveEndDate);
var sumHoliday = await _holidayRepository.GetHolidayCountAsync(rawData.LeaveStartDate, rawData.LeaveEndDate, category);