diff --git a/BMA.EHR.Application/Repositories/Leaves/LeaveRequests/LeaveRequestRepository.cs b/BMA.EHR.Application/Repositories/Leaves/LeaveRequests/LeaveRequestRepository.cs index 54a80a41..6363e258 100644 --- a/BMA.EHR.Application/Repositories/Leaves/LeaveRequests/LeaveRequestRepository.cs +++ b/BMA.EHR.Application/Repositories/Leaves/LeaveRequests/LeaveRequestRepository.cs @@ -32,9 +32,6 @@ namespace BMA.EHR.Application.Repositories.Leaves.LeaveRequests private readonly LeaveBeginningRepository _leaveBeginningRepository; private readonly ProcessUserTimeStampRepository _processUserTimeStampRepository; - - private readonly UserDutyTimeRepository _userDutyTimeRepository; - private readonly DutyTimeRepository _dutyTimeRepository; private readonly string URL = string.Empty; @@ -51,9 +48,7 @@ namespace BMA.EHR.Application.Repositories.Leaves.LeaveRequests IApplicationDBContext appDbContext, MinIOLeaveService minIOService, LeaveBeginningRepository leaveBeginningRepository, - ProcessUserTimeStampRepository processUserTimeStampRepository, - UserDutyTimeRepository userDutyTimeRepository, - DutyTimeRepository dutyTimeRepository) : base(dbContext, httpContextAccessor) + ProcessUserTimeStampRepository processUserTimeStampRepository) : base(dbContext, httpContextAccessor) { _dbContext = dbContext; _httpContextAccessor = httpContextAccessor; @@ -63,10 +58,6 @@ namespace BMA.EHR.Application.Repositories.Leaves.LeaveRequests _emailSenderService = emailSenderService; _appDbContext = appDbContext; - _userDutyTimeRepository = userDutyTimeRepository; - _dutyTimeRepository = dutyTimeRepository; - - URL = (_configuration["VITE_URL_MGT"]).Replace("/api/v1", ""); Console.WriteLine($"URL : {URL}"); _minIOService = minIOService; @@ -1340,20 +1331,6 @@ namespace BMA.EHR.Application.Repositories.Leaves.LeaveRequests await _appDbContext.SaveChangesAsync(); // ปรับสถานะการลงเวลา - var currentDate = rawData.LeaveStartDate; - var defaultRound = await _dutyTimeRepository.GetDefaultAsync(); - if (defaultRound is null) - { - throw new Exception("ไม่พบรอบการลงเวลาทำงาน Default"); - } - var effectiveDate = await _userDutyTimeRepository.GetLastEffectRound(profile.Id, currentDate); - var roundId = effectiveDate != null ? effectiveDate.DutyTimeId : Guid.Empty; - var userRound = await _dutyTimeRepository.GetByIdAsync(roundId); - - // TODO : รอดุึงรอบที่ผูกกับ user - var duty = userRound ?? defaultRound; - - if (rawData.LeaveStartDate.Date == rawData.LeaveEndDate.Date) { var processCheckIn = await _dbContext.Set() @@ -1364,39 +1341,13 @@ namespace BMA.EHR.Application.Repositories.Leaves.LeaveRequests if (processCheckIn is not null) { - var startTimeMorning = duty.StartTimeMorning; - var endTimeMorning = duty.EndTimeMorning; - var startTimeAfterNoon = duty.StartTimeAfternoon; - var endTimeAfterNoon = duty.EndTimeAfternoon; - - // var currentDateTime = DateTime.Parse(currentDate.ToString("yyyy-MM-dd HH:mm")); - // var dutyEndTimeAfternoon = DateTime.Parse($"{checkout.CheckIn.ToString("yyyy-MM-dd")} {endTime1}"); - // var dutyEndTimeMorning = DateTime.Parse($"{checkout.CheckIn.ToString("yyyy-MM-dd")} {endTimeMorning1}"); - switch (rawData.LeaveRange.Trim().ToUpper()) { case "MORNING": - var checkIn = DateTime.Parse(processCheckIn.CheckIn.ToString("yyyy-MM-dd HH:mm")); - var startAfternoon = DateTime.Parse($"{processCheckIn.CheckIn.ToString("yyyy-MM-dd")} {startTimeAfterNoon}"); - if (checkIn <= startAfternoon) - processCheckIn.CheckInStatus = "NORMAL"; - else - { - processCheckIn.CheckInStatus = "LATE"; - } + processCheckIn.CheckInStatus = "NORMAL"; break; case "AFTERNOON": - if (processCheckIn.CheckOut is not null) - { - var checkOut = DateTime.Parse(processCheckIn.CheckOut.Value.ToString("yyyy-MM-dd HH:mm")); - var endMorning = DateTime.Parse($"{processCheckIn.CheckIn.ToString("yyyy-MM-dd")} {endTimeMorning}"); - if(checkOut >= endMorning) - processCheckIn.CheckOutStatus = "NORMAL"; - else - { - processCheckIn.CheckOutStatus = "ABSENT"; - } - } + processCheckIn.CheckOutStatus = "NORMAL"; break; case "ALL": processCheckIn.CheckInStatus = "NORMAL"; @@ -1410,11 +1361,6 @@ namespace BMA.EHR.Application.Repositories.Leaves.LeaveRequests } else { - var startTimeMorning = duty.StartTimeMorning; - var endTimeMorning = duty.EndTimeMorning; - var startTimeAfterNoon = duty.StartTimeAfternoon; - var endTimeAfterNoon = duty.EndTimeAfternoon; - var from = rawData.LeaveStartDate.Date; var to = rawData.LeaveEndDate.Date; for (var day = from.Date; day <= to.Date; day = day.AddDays(1)) @@ -1429,34 +1375,14 @@ namespace BMA.EHR.Application.Repositories.Leaves.LeaveRequests switch (rawData.LeaveRange.Trim().ToUpper()) { case "MORNING": - var checkIn = DateTime.Parse(processCheckIn.CheckIn.ToString("yyyy-MM-dd HH:mm")); - var startAfternoon = DateTime.Parse($"{processCheckIn.CheckIn.ToString("yyyy-MM-dd")} {startTimeAfterNoon}"); - if (checkIn <= startAfternoon) - processCheckIn.CheckInStatus = "NORMAL"; - else - { - processCheckIn.CheckInStatus = "LATE"; - } + processCheckIn.CheckInStatus = "NORMAL"; break; case "AFTERNOON": - if (processCheckIn.CheckOut is not null) - { - var checkOut = DateTime.Parse(processCheckIn.CheckOut.Value.ToString("yyyy-MM-dd HH:mm")); - var endMorning = DateTime.Parse($"{processCheckIn.CheckIn.ToString("yyyy-MM-dd")} {endTimeMorning}"); - if (checkOut >= endMorning) - processCheckIn.CheckOutStatus = "NORMAL"; - else - { - processCheckIn.CheckOutStatus = "ABSENT"; - } - } + processCheckIn.CheckOutStatus = "NORMAL"; break; case "ALL": processCheckIn.CheckInStatus = "NORMAL"; - if (processCheckIn.CheckOut is not null) - { - processCheckIn.CheckOutStatus = "NORMAL"; - } + processCheckIn.CheckOutStatus = "NORMAL"; break; default: break; diff --git a/BMA.EHR.Leave/Controllers/LeaveController.cs b/BMA.EHR.Leave/Controllers/LeaveController.cs index 173f859d..66d49d39 100644 --- a/BMA.EHR.Leave/Controllers/LeaveController.cs +++ b/BMA.EHR.Leave/Controllers/LeaveController.cs @@ -1436,18 +1436,9 @@ namespace BMA.EHR.Leave.Service.Controllers var leaveReq = await _leaveRequestRepository.GetLeavePeriodAsync(userId, currentDate.Date); if (leaveReq != null) { - var startTimeAfternoon = duty.StartTimeAfternoon; - var endTimeAfterNoon = duty.EndTimeAfternoon; var leaveRange = leaveReq.LeaveRange == null ? "" : leaveReq.LeaveRange.ToUpper(); if (leaveRange == "MORNING" || leaveRange == "ALL") - if(DateTime.Parse(currentDate.ToString("yyyy-MM-dd HH:mm")) > - DateTime.Parse($"{currentDate.ToString("yyyy-MM-dd")} {startTimeAfternoon}")) - checkInStatus = "LATE"; - else if(DateTime.Parse(currentDate.ToString("yyyy-MM-dd HH:mm")) > - DateTime.Parse($"{currentDate.ToString("yyyy-MM-dd")} {endTimeAfterNoon}")) - checkInStatus = "ABSENT"; - else - checkInStatus = "NORMAL"; + checkInStatus = "NORMAL"; else { checkInStatus = DateTime.Parse(currentDate.ToString("yyyy-MM-dd HH:mm")) > @@ -3308,6 +3299,8 @@ namespace BMA.EHR.Leave.Service.Controllers return Error("ไม่สามารถขอลงเวลากรณีพิเศษในวันที่มากกว่าวันที่ปัจจุบันได้", StatusCodes.Status400BadRequest); } + + var userId = UserId != null ? Guid.Parse(UserId) : Guid.Empty; var checkin = await _userTimeStampRepository.GetTimestampByDateAsync(userId, req.CheckDate.Date); @@ -3567,21 +3560,9 @@ namespace BMA.EHR.Leave.Service.Controllers var roundId = effectiveDate != null ? effectiveDate.DutyTimeId : Guid.Empty; var userRound = await _dutyTimeRepository.GetByIdAsync(roundId); var checkInData = await _userTimeStampRepository.GetTimestampByDateAsync(data.KeycloakUserId, data.CheckDate); - - var duty = userRound ?? getDefaultRound; - var leaveReq = await _leaveRequestRepository.GetLeavePeriodAsync(data.KeycloakUserId, data.CheckDate.Date); - - var startTimeMorning = leaveReq is null ? duty.StartTimeMorning : - leaveReq.LeaveRange == "MORNING" ? duty.StartTimeAfternoon : duty.StartTimeMorning; - var endTimeMorning = leaveReq is null ? duty.EndTimeMorning : - leaveReq.LeaveRange == "MORNING" ? duty.StartTimeAfternoon : duty.EndTimeMorning; - - var startTimeAfterNoon = duty.StartTimeAfternoon; - var endTimeAfterNoon = duty.EndTimeAfternoon; - //var duty = getDefaultRound; // create result object to return @@ -3622,15 +3603,10 @@ namespace BMA.EHR.Leave.Service.Controllers "ABSENT" : "NORMAL", - // StartTimeMorning = duty.StartTimeMorning, - // EndTimeMorning = duty.EndTimeMorning, - // StartTimeAfternoon = duty.StartTimeAfternoon, - // EndTimeAfternoon = duty.EndTimeAfternoon, - - StartTimeMorning = startTimeMorning, - EndTimeMorning = endTimeMorning, - StartTimeAfternoon = startTimeAfterNoon, - EndTimeAfternoon = endTimeAfterNoon, + StartTimeMorning = duty.StartTimeMorning, + EndTimeMorning = duty.EndTimeMorning, + StartTimeAfternoon = duty.StartTimeAfternoon, + EndTimeAfternoon = duty.EndTimeAfternoon, Reason = data.Comment ?? "", Status = data.Status, @@ -4208,22 +4184,11 @@ namespace BMA.EHR.Leave.Service.Controllers DateTime? resultCheckInDate, resultCheckOutDate, resultCheckInDateAndTime, resultCheckOutDateAndTime; string resultCheckInTime, resultCheckOutTime; string resultCheckInLocation = "", resultCheckOutLocation = ""; - - var leaveReq = await _leaveRequestRepository.GetLeavePeriodAsync(data.KeycloakUserId, data.CheckDate.Date); - - var startTimeMorning = leaveReq is null ? duty.StartTimeMorning : - leaveReq.LeaveRange == "MORNING" ? duty.StartTimeAfternoon : duty.StartTimeMorning; - var endTimeMorning = leaveReq is null ? duty.EndTimeMorning : - leaveReq.LeaveRange == "MORNING" ? duty.StartTimeAfternoon : duty.EndTimeMorning; - - var startTimeAfterNoon = duty.StartTimeAfternoon; - var endTimeAfterNoon = duty.EndTimeAfternoon; if (data.CheckInEdit) { resultCheckInDate = data.CheckDate.Date; - //resultCheckInTime = duty.StartTimeMorning; - resultCheckInTime = startTimeMorning; + resultCheckInTime = duty.StartTimeMorning; resultCheckInLocation = data.POI ?? ""; } else diff --git a/BMA.EHR.Leave/Controllers/LeaveRequestController.cs b/BMA.EHR.Leave/Controllers/LeaveRequestController.cs index 8cfd6a34..9b1140cd 100644 --- a/BMA.EHR.Leave/Controllers/LeaveRequestController.cs +++ b/BMA.EHR.Leave/Controllers/LeaveRequestController.cs @@ -1111,22 +1111,9 @@ namespace BMA.EHR.Leave.Service.Controllers x.KeycloakUserId == userId) .ToListAsync(); - if (req.StartLeaveDate.Date == req.EndLeaveDate.Date) - { - isBetween = existingLeaves.Any(leave => - req.StartLeaveDate.Date == leave.LeaveEndDate.Date && - req.EndLeaveDate.Date == leave.LeaveStartDate.Date && - req.LeaveRange == leave.LeaveRange); - } - else - { - isBetween = existingLeaves.Any(leave => - req.StartLeaveDate.Date <= leave.LeaveEndDate.Date && - req.EndLeaveDate.Date >= leave.LeaveStartDate.Date); - } - - - + isBetween = existingLeaves.Any(leave => + req.StartLeaveDate.Date <= leave.LeaveEndDate.Date && + req.EndLeaveDate.Date >= leave.LeaveStartDate.Date); // var minLeave = (await _context.Set().Where(x => x.Type.Id == req.Type && // (x.LeaveStatus == "PENDING" || x.LeaveStatus == "APPROVE") &&