From 1f7b5cd21f9f3d93096a6901772a7a08736093d4 Mon Sep 17 00:00:00 2001 From: Suphonchai Phoonsawat Date: Tue, 9 Jan 2024 10:34:02 +0700 Subject: [PATCH] =?UTF-8?q?=E0=B8=9B=E0=B8=A3=E0=B8=B1=E0=B8=9A=E0=B8=81?= =?UTF-8?q?=E0=B8=B2=E0=B8=A3=E0=B8=84=E0=B8=B3=E0=B8=99=E0=B8=A7=E0=B8=99?= =?UTF-8?q?=E0=B8=A7=E0=B8=B1=E0=B8=99=E0=B8=AB=E0=B8=A2=E0=B8=B8=E0=B8=94?= =?UTF-8?q?=E0=B8=99=E0=B8=B1=E0=B8=81=E0=B8=82=E0=B8=B1=E0=B8=95=E0=B8=A4?= =?UTF-8?q?=E0=B8=81=E0=B8=A9=E0=B9=8C=20=E0=B9=81=E0=B8=A5=E0=B8=B0?= =?UTF-8?q?=E0=B8=AA=E0=B8=B8=E0=B8=94=E0=B8=AA=E0=B8=B1=E0=B8=9B=E0=B8=94?= =?UTF-8?q?=E0=B8=B2=E0=B8=AB=E0=B9=8C=20=E0=B8=95=E0=B8=B2=E0=B8=A1?= =?UTF-8?q?=E0=B8=81=E0=B8=B2=E0=B8=A3=E0=B8=95=E0=B8=B1=E0=B9=89=E0=B8=87?= =?UTF-8?q?=E0=B8=84=E0=B9=88=E0=B8=B2=E0=B8=9B=E0=B8=8F=E0=B8=B4=E0=B8=97?= =?UTF-8?q?=E0=B8=B4=E0=B8=99=E0=B8=81=E0=B8=B2=E0=B8=A3=E0=B8=97=E0=B8=B3?= =?UTF-8?q?=E0=B8=87=E0=B8=B2=E0=B8=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Controllers/LeaveController.cs | 1 + .../Controllers/LeaveRequestController.cs | 49 ++++++++++++++----- 2 files changed, 39 insertions(+), 11 deletions(-) diff --git a/BMA.EHR.Leave.Service/Controllers/LeaveController.cs b/BMA.EHR.Leave.Service/Controllers/LeaveController.cs index 959101ed..03f9798a 100644 --- a/BMA.EHR.Leave.Service/Controllers/LeaveController.cs +++ b/BMA.EHR.Leave.Service/Controllers/LeaveController.cs @@ -1557,3 +1557,4 @@ namespace BMA.EHR.Leave.Service.Controllers #endregion } } +} diff --git a/BMA.EHR.Leave.Service/Controllers/LeaveRequestController.cs b/BMA.EHR.Leave.Service/Controllers/LeaveRequestController.cs index 55e01c67..719a0ae9 100644 --- a/BMA.EHR.Leave.Service/Controllers/LeaveRequestController.cs +++ b/BMA.EHR.Leave.Service/Controllers/LeaveRequestController.cs @@ -12,6 +12,7 @@ using Microsoft.AspNetCore.Mvc; using Swashbuckle.AspNetCore.Annotations; using System.Security.Claims; using BMA.EHR.Application.Repositories.Commands; +using BMA.EHR.Application.Repositories.Leaves.TimeAttendants; namespace BMA.EHR.Leave.Service.Controllers { @@ -35,6 +36,7 @@ namespace BMA.EHR.Leave.Service.Controllers private readonly MinIOLeaveService _minIOService; private readonly HolidayRepository _holidayRepository; private readonly CommandRepository _commandRepository; + private readonly UserCalendarRepository _userCalendarRepository; private const string APPROVE_STEP_CREATE = "st1"; private const string APPROVE_STEP_OFFICER_APPROVE = "st2"; @@ -55,7 +57,8 @@ namespace BMA.EHR.Leave.Service.Controllers LeaveRequestRepository leaveRequestRepository, MinIOLeaveService minIOService, HolidayRepository holidayRepository, - CommandRepository commandRepository) + CommandRepository commandRepository, + UserCalendarRepository userCalendarRepository) { _context = context; _httpContextAccessor = httpContextAccessor; @@ -67,6 +70,7 @@ namespace BMA.EHR.Leave.Service.Controllers _minIOService = minIOService; _holidayRepository = holidayRepository; _commandRepository = commandRepository; + _userCalendarRepository = userCalendarRepository; } #endregion @@ -118,6 +122,9 @@ namespace BMA.EHR.Leave.Service.Controllers return Error(GlobalMessages.DataNotFound, StatusCodes.Status404NotFound); } + var userCalendar = await _userCalendarRepository.GetExist(profile.Id); + var category = userCalendar == null ? "NORMAL" : userCalendar.Calendar; + var leaveType = await _leaveTypeRepository.GetByIdAsync(req.Type); if (leaveType == null) { @@ -125,8 +132,8 @@ namespace BMA.EHR.Leave.Service.Controllers } var sumLeave = req.LeaveStartDate.DiffDay(req.LeaveEndDate); - var sumHoliday = await _holidayRepository.GetHolidayCountAsync(req.LeaveStartDate, req.LeaveEndDate); - var sumWeekend = _holidayRepository.GetWeekEndCount(req.LeaveStartDate, req.LeaveEndDate); + var sumHoliday = await _holidayRepository.GetHolidayCountAsync(req.LeaveStartDate, req.LeaveEndDate, category); + var sumWeekend = _holidayRepository.GetWeekEndCount(req.LeaveStartDate, req.LeaveEndDate, category); var leaveTotal = 0.0; if (req.LeaveRange != "ALL") @@ -328,6 +335,9 @@ namespace BMA.EHR.Leave.Service.Controllers return Error(GlobalMessages.DataNotFound, StatusCodes.Status404NotFound); } + var userCalendar = await _userCalendarRepository.GetExist(profile.Id); + var category = userCalendar == null ? "NORMAL" : userCalendar.Calendar; + var leaveType = await _leaveTypeRepository.GetByIdAsync(req.Type); if (leaveType == null) { @@ -335,8 +345,8 @@ namespace BMA.EHR.Leave.Service.Controllers } var sumLeave = req.LeaveStartDate.DiffDay(req.LeaveEndDate); - var sumHoliday = await _holidayRepository.GetHolidayCountAsync(req.LeaveStartDate, req.LeaveEndDate); - var sumWeekend = _holidayRepository.GetWeekEndCount(req.LeaveStartDate, req.LeaveEndDate); + var sumHoliday = await _holidayRepository.GetHolidayCountAsync(req.LeaveStartDate, req.LeaveEndDate, category); + var sumWeekend = _holidayRepository.GetWeekEndCount(req.LeaveStartDate, req.LeaveEndDate, category); var leaveTotal = 0.0; if (req.LeaveRange != "ALL") @@ -593,17 +603,28 @@ namespace BMA.EHR.Leave.Service.Controllers public async Task> CheckUserLeaveAsync([FromBody] GetLeaveCheckDto req) { var userId = UserId == null ? Guid.Empty : Guid.Parse(UserId); + + var profile = await _userProfileRepository.GetProfileByKeycloakIdAsync(userId); + + if (profile == null) + { + return Error(GlobalMessages.DataNotFound, StatusCodes.Status404NotFound); + } + var leaveType = await _leaveTypeRepository.GetByIdAsync(req.Type); if (leaveType == null) { return Error(GlobalMessages.DataNotFound, StatusCodes.Status404NotFound); } + var userCalendar = await _userCalendarRepository.GetExist(profile.Id); + var category = userCalendar == null ? "NORMAL" : userCalendar.Calendar; + var sumLeave = await _leaveRequestRepository.GetSumLeaveByTypeForUserAsync(userId, req.Type, req.StartLeaveDate.Year); - var sumWorkDay = await _holidayRepository.GetHolidayCountAsync(req.StartLeaveDate, req.EndLeaveDate); + var sumWorkDay = await _holidayRepository.GetHolidayCountAsync(req.StartLeaveDate, req.EndLeaveDate, category); var totalDay = req.StartLeaveDate.DiffDay(req.EndLeaveDate); - var sumWeekend = _holidayRepository.GetWeekEndCount(req.StartLeaveDate, req.EndLeaveDate); + var sumWeekend = _holidayRepository.GetWeekEndCount(req.StartLeaveDate, req.EndLeaveDate, category); var isLeave = sumLeave + (totalDay - sumWorkDay) <= leaveType.Limit; @@ -745,6 +766,9 @@ namespace BMA.EHR.Leave.Service.Controllers return Error(GlobalMessages.DataNotFound, StatusCodes.Status404NotFound); } + var userCalendar = await _userCalendarRepository.GetExist(profile.Id); + var category = userCalendar == null ? "NORMAL" : userCalendar.Calendar; + var lastSalary = profile.Salaries.OrderByDescending(x => x.Order).FirstOrDefault(); var lastSalaryAmount = lastSalary == null ? 0 : lastSalary.Amount ?? 0; @@ -753,8 +777,8 @@ namespace BMA.EHR.Leave.Service.Controllers rawData.Type.Id); var sumLeave = rawData.LeaveStartDate.DiffDay(rawData.LeaveEndDate); - var sumHoliday = await _holidayRepository.GetHolidayCountAsync(rawData.LeaveStartDate, rawData.LeaveEndDate); - var sumWeekend = _holidayRepository.GetWeekEndCount(rawData.LeaveStartDate, rawData.LeaveEndDate); + var sumHoliday = await _holidayRepository.GetHolidayCountAsync(rawData.LeaveStartDate, rawData.LeaveEndDate, category); + var sumWeekend = _holidayRepository.GetWeekEndCount(rawData.LeaveStartDate, rawData.LeaveEndDate, category); var result = new GetLeaveRequestByIdDto { @@ -1201,6 +1225,9 @@ namespace BMA.EHR.Leave.Service.Controllers return Error(GlobalMessages.DataNotFound, StatusCodes.Status404NotFound); } + var userCalendar = await _userCalendarRepository.GetExist(profile.Id); + var category = userCalendar == null ? "NORMAL" : userCalendar.Calendar; + var lastSalary = profile.Salaries.OrderByDescending(x => x.Order).FirstOrDefault(); var lastSalaryAmount = lastSalary == null ? 0 : lastSalary.Amount ?? 0; @@ -1220,8 +1247,8 @@ namespace BMA.EHR.Leave.Service.Controllers var leaveSummary = await _leaveRequestRepository.GetSumApproveLeaveByTypeForUserAsync(userId, rawData.Type.Id, thisYear); var sumLeave = rawData.LeaveStartDate.DiffDay(rawData.LeaveEndDate); - var sumHoliday = await _holidayRepository.GetHolidayCountAsync(rawData.LeaveStartDate, rawData.LeaveEndDate); - var sumWeekend = _holidayRepository.GetWeekEndCount(rawData.LeaveStartDate, rawData.LeaveEndDate); + var sumHoliday = await _holidayRepository.GetHolidayCountAsync(rawData.LeaveStartDate, rawData.LeaveEndDate, category); + var sumWeekend = _holidayRepository.GetWeekEndCount(rawData.LeaveStartDate, rawData.LeaveEndDate, category); var result = new GetLeaveRequestForAdminByIdDto {