From 7fa4ba9750bdf2d4a84a4c266ec866f83286cd3c Mon Sep 17 00:00:00 2001 From: Suphonchai Phoonsawat Date: Tue, 12 Dec 2023 14:17:00 +0700 Subject: [PATCH] fix defect 12/12/66 14:16 --- .vscode/launch.json | 35 +++++ .vscode/tasks.json | 41 ++++++ .../ApplicationServicesRegistration.cs | 2 + .../Repositories/UserProfileRepository.cs | 17 +++ .../Controllers/LeaveController.cs | 8 +- .../Controllers/LeaveRequestController.cs | 139 +++++++++++------- .../DTOs/DutyTime/CreateDutyTimeDto.cs | 3 + .../DTOs/DutyTime/UpdateDutyTimeDto.cs | 4 +- .../LeaveRequest/GetLeaveCheckResultDto.cs | 6 +- .../GetUserLeaveProfileResultDto.cs | 2 +- 10 files changed, 192 insertions(+), 65 deletions(-) create mode 100644 .vscode/launch.json create mode 100644 .vscode/tasks.json diff --git a/.vscode/launch.json b/.vscode/launch.json new file mode 100644 index 00000000..fd9cf53a --- /dev/null +++ b/.vscode/launch.json @@ -0,0 +1,35 @@ +{ + "version": "0.2.0", + "configurations": [ + { + // Use IntelliSense to find out which attributes exist for C# debugging + // Use hover for the description of the existing attributes + // For further information visit https://github.com/dotnet/vscode-csharp/blob/main/debugger-launchjson.md. + "name": ".NET Core Launch (web)", + "type": "coreclr", + "request": "launch", + "preLaunchTask": "build", + // If you have changed target frameworks, make sure to update the program path. + "program": "${workspaceFolder}/BMA.EHR.Leave.Service/bin/Debug/net7.0/BMA.EHR.Leave.Service.dll", + "args": [], + "cwd": "${workspaceFolder}/BMA.EHR.Leave.Service", + "stopAtEntry": false, + // Enable launching a web browser when ASP.NET Core starts. For more information: https://aka.ms/VSCode-CS-LaunchJson-WebBrowser + "serverReadyAction": { + "action": "openExternally", + "pattern": "\\bNow listening on:\\s+(https?://\\S+)" + }, + "env": { + "ASPNETCORE_ENVIRONMENT": "Development" + }, + "sourceFileMap": { + "/Views": "${workspaceFolder}/Views" + } + }, + { + "name": ".NET Core Attach", + "type": "coreclr", + "request": "attach" + } + ] +} \ No newline at end of file diff --git a/.vscode/tasks.json b/.vscode/tasks.json new file mode 100644 index 00000000..4782a92f --- /dev/null +++ b/.vscode/tasks.json @@ -0,0 +1,41 @@ +{ + "version": "2.0.0", + "tasks": [ + { + "label": "build", + "command": "dotnet", + "type": "process", + "args": [ + "build", + "${workspaceFolder}/BMA.EHR.Solution.sln", + "/property:GenerateFullPaths=true", + "/consoleloggerparameters:NoSummary;ForceNoAlign" + ], + "problemMatcher": "$msCompile" + }, + { + "label": "publish", + "command": "dotnet", + "type": "process", + "args": [ + "publish", + "${workspaceFolder}/BMA.EHR.Solution.sln", + "/property:GenerateFullPaths=true", + "/consoleloggerparameters:NoSummary;ForceNoAlign" + ], + "problemMatcher": "$msCompile" + }, + { + "label": "watch", + "command": "dotnet", + "type": "process", + "args": [ + "watch", + "run", + "--project", + "${workspaceFolder}/BMA.EHR.Solution.sln" + ], + "problemMatcher": "$msCompile" + } + ] +} \ No newline at end of file diff --git a/BMA.EHR.Application/ApplicationServicesRegistration.cs b/BMA.EHR.Application/ApplicationServicesRegistration.cs index 9a95c210..1f2c5298 100644 --- a/BMA.EHR.Application/ApplicationServicesRegistration.cs +++ b/BMA.EHR.Application/ApplicationServicesRegistration.cs @@ -39,6 +39,8 @@ namespace BMA.EHR.Application services.AddTransient(); + //services.AddTransient(); + return services; } diff --git a/BMA.EHR.Application/Repositories/UserProfileRepository.cs b/BMA.EHR.Application/Repositories/UserProfileRepository.cs index fc9f62b7..f250f80a 100644 --- a/BMA.EHR.Application/Repositories/UserProfileRepository.cs +++ b/BMA.EHR.Application/Repositories/UserProfileRepository.cs @@ -138,6 +138,23 @@ namespace BMA.EHR.Application.Repositories } } + public Guid? GetRootOcId(Guid ocId) + { + try + { + var data = _dbContext.Set() + .FirstOrDefault(o => o.Id == ocId); + + return data == null ? Guid.Empty : data.OrganizationAgencyId; + + + } + catch + { + throw; + } + } + #endregion } } diff --git a/BMA.EHR.Leave.Service/Controllers/LeaveController.cs b/BMA.EHR.Leave.Service/Controllers/LeaveController.cs index 7ac83031..6fe8bfbd 100644 --- a/BMA.EHR.Leave.Service/Controllers/LeaveController.cs +++ b/BMA.EHR.Leave.Service/Controllers/LeaveController.cs @@ -175,7 +175,7 @@ namespace BMA.EHR.Leave.Service.Controllers EndTimeMorning = data.EndTimeMorning, StartTimeAfternoon = data.StartTimeAfternoon, EndTimeAfternoon = data.EndTimeAfternoon, - IsActive = true, + IsActive = data.IsActive, IsDefault = true, }; @@ -244,7 +244,7 @@ namespace BMA.EHR.Leave.Service.Controllers } } - oldData.Description = data.Description; + oldData.Description = data.Description ?? ""; oldData.IsDefault = data.IsDefault; oldData.IsActive = data.IsActive; @@ -1309,8 +1309,8 @@ namespace BMA.EHR.Leave.Service.Controllers { Id = data.Id, - CheckInTime = checkInData == null ? "00:00" : checkInData.CheckIn.ToString("HH:mm"), - CheckOutTime = checkInData == null ? "00:00" : checkInData.CheckOut == null ? "00:00" : checkInData.CheckOut.Value.ToString("HH:mm"), + CheckInTime = checkInData == null ? duty.StartTimeMorning : checkInData.CheckIn.ToString("HH:mm"), + CheckOutTime = checkInData == null ? duty.EndTimeAfternoon : checkInData.CheckOut == null ? "00:00" : checkInData.CheckOut.Value.ToString("HH:mm"), CheckInStatus = checkInData == null ? null : DateTime.Parse(checkInData.CheckIn.ToString("yyyy-MM-dd HH:mm")) > diff --git a/BMA.EHR.Leave.Service/Controllers/LeaveRequestController.cs b/BMA.EHR.Leave.Service/Controllers/LeaveRequestController.cs index 8faa1aae..7d1b26f6 100644 --- a/BMA.EHR.Leave.Service/Controllers/LeaveRequestController.cs +++ b/BMA.EHR.Leave.Service/Controllers/LeaveRequestController.cs @@ -13,6 +13,7 @@ using Microsoft.AspNetCore.Mvc.Routing; using Sentry; using Swashbuckle.AspNetCore.Annotations; using System.Security.Claims; +using BMA.EHR.Application.Repositories.Commands; namespace BMA.EHR.Leave.Service.Controllers { @@ -35,20 +36,22 @@ namespace BMA.EHR.Leave.Service.Controllers private readonly LeaveRequestRepository _leaveRequestRepository; private readonly MinIOLeaveService _minIOService; private readonly HolidayRepository _holidayRepository; + private readonly CommandRepository _commandRepository; #endregion #region " Constuctor and Destructor " public LeaveRequestController(LeaveDbContext context, - IHttpContextAccessor httpContextAccessor, - IWebHostEnvironment hostingEnvironment, - IConfiguration configuration, - UserProfileRepository userProfileRepository, - LeaveTypeRepository leaveTypeRepository, - LeaveRequestRepository leaveRequestRepository, - MinIOLeaveService minIOService, - HolidayRepository holidayRepository) + IHttpContextAccessor httpContextAccessor, + IWebHostEnvironment hostingEnvironment, + IConfiguration configuration, + UserProfileRepository userProfileRepository, + LeaveTypeRepository leaveTypeRepository, + LeaveRequestRepository leaveRequestRepository, + MinIOLeaveService minIOService, + HolidayRepository holidayRepository, + CommandRepository commandRepository) { _context = context; _httpContextAccessor = httpContextAccessor; @@ -59,6 +62,7 @@ namespace BMA.EHR.Leave.Service.Controllers _leaveRequestRepository = leaveRequestRepository; _minIOService = minIOService; _holidayRepository = holidayRepository; + _commandRepository = commandRepository; } #endregion @@ -165,8 +169,10 @@ namespace BMA.EHR.Leave.Service.Controllers break; case "LV-005": { - leaveRequest.RestDayOldTotal = await _leaveRequestRepository.GetRestDayTotalByYearForUserAsync(userId, thisYear - 1); - leaveRequest.RestDayCurrentTotal = await _leaveRequestRepository.GetRestDayTotalByYearForUserAsync(userId, thisYear); + leaveRequest.RestDayOldTotal = + await _leaveRequestRepository.GetRestDayTotalByYearForUserAsync(userId, thisYear - 1); + leaveRequest.RestDayCurrentTotal = + await _leaveRequestRepository.GetRestDayTotalByYearForUserAsync(userId, thisYear); } break; case "LV-006": @@ -186,7 +192,6 @@ namespace BMA.EHR.Leave.Service.Controllers leaveRequest.LeaveGovernmentDate = profile.DateStart; leaveRequest.HajjDayStatus = req.HajjDayStatus ?? false; - } break; case "LV-007": @@ -206,7 +211,8 @@ namespace BMA.EHR.Leave.Service.Controllers var lastSalary = profile.Salaries.OrderByDescending(x => x.Order).FirstOrDefault(); leaveRequest.LeaveSalary = lastSalary == null ? 0 : (int)lastSalary.Amount.Value; - leaveRequest.LeaveSalaryText = lastSalary == null ? "" : ((int)lastSalary.Amount.Value).ToThaiBahtText(false); + leaveRequest.LeaveSalaryText = + lastSalary == null ? "" : ((int)lastSalary.Amount.Value).ToThaiBahtText(false); leaveRequest.LeaveBirthDate = profile.BirthDate; leaveRequest.LeaveGovernmentDate = profile.DateStart; @@ -218,7 +224,6 @@ namespace BMA.EHR.Leave.Service.Controllers leaveRequest.StudyDayTrainingSubject = req.StudyDayTrainingSubject ?? ""; leaveRequest.StudyDayTrainingName = req.StudyDayTrainingName ?? ""; - } break; case "LV-010": @@ -226,7 +231,8 @@ namespace BMA.EHR.Leave.Service.Controllers var lastSalary = profile.Salaries.OrderByDescending(x => x.Order).FirstOrDefault(); leaveRequest.LeaveSalary = lastSalary == null ? 0 : (int)lastSalary.Amount.Value; - leaveRequest.LeaveSalaryText = lastSalary == null ? "" : ((int)lastSalary.Amount.Value).ToThaiBahtText(false); + leaveRequest.LeaveSalaryText = + lastSalary == null ? "" : ((int)lastSalary.Amount.Value).ToThaiBahtText(false); leaveRequest.CoupleDayName = req.CoupleDayName ?? ""; leaveRequest.CoupleDayPosition = req.CoupleDayPosition ?? ""; @@ -242,8 +248,6 @@ namespace BMA.EHR.Leave.Service.Controllers leaveRequest.CoupleDayEndDateHistory = req.CoupleDayEndDateHistory.Value; leaveRequest.CoupleDaySumTotalHistory = req.CoupleDaySumTotalHistory ?? ""; - - } break; } @@ -288,24 +292,32 @@ namespace BMA.EHR.Leave.Service.Controllers var lastSalary = profile.Salaries.OrderByDescending(x => x.Order).FirstOrDefault(); + var rootOc = _userProfileRepository.GetRootOcId(profile.OcId ?? Guid.Empty); + var approver = string.Empty; + if (rootOc != null) + { + var list = await _commandRepository.GetOrgApproverAsync(rootOc ?? Guid.Empty); + if (list.Count > 0) + approver = list.First().Name; + } + var result = new GetUserLeaveProfileResultDto { DateSendLeave = DateTime.Now.Date, LeaveTypeName = leaveType.Name, - Dear = "นายณัฐพงษ์ ดิษยบุตร", + Dear = approver, FullName = $"{profile.Prefix.Name}{profile.FirstName} {profile.LastName}", - PositionName = profile.Position.Name, - PositionLevelName = profile.PositionEmployeeLevel.Name, - OrganizationName = profile.Oc, + PositionName = profile.Position == null ? "" : profile.Position.Name, + PositionLevelName = profile.PositionLevel == null ? "" : profile.PositionLevel.Name, + OrganizationName = profile.Oc ?? "", LeaveLimit = leaveType.Limit, LeaveTotal = sumLeave, LeaveRemain = leaveType.Limit - sumLeave, RestDayTotalOld = restOldDay, BirthDate = profile.BirthDate.Date, - DateAppoint = profile.DateAppoint.Value.Date, + DateAppoint = profile.DateAppoint == null ? null : profile.DateAppoint.Value.Date, Salary = lastSalary == null ? 0 : (int)lastSalary.Amount.Value, SalaryText = lastSalary == null ? "" : ((int)lastSalary.Amount.Value).ToThaiBahtText(false), - }; return Success(result); @@ -332,9 +344,12 @@ namespace BMA.EHR.Leave.Service.Controllers return Error(GlobalMessages.DataNotFound, StatusCodes.Status404NotFound); } - var sumLeave = await _leaveRequestRepository.GetSumLeaveByTypeForUserAsync(userId, req.Type, req.StartLeaveDate.Year); + var sumLeave = + await _leaveRequestRepository.GetSumLeaveByTypeForUserAsync(userId, req.Type, req.StartLeaveDate.Year); var sumWorkDay = await _holidayRepository.GetHolidayCountAsync(req.StartLeaveDate, req.EndLeaveDate); var totalDay = req.StartLeaveDate.DiffDay(req.EndLeaveDate); + var sumWeekend = _holidayRepository.GetWeekEndCount(req.StartLeaveDate, req.EndLeaveDate); + var isLeave = sumLeave + (totalDay - sumWorkDay) <= leaveType.Limit; var result = new GetLeaveCheckResultDto @@ -342,6 +357,7 @@ namespace BMA.EHR.Leave.Service.Controllers IsLeave = isLeave, SumDateWork = sumWorkDay, TotalDate = totalDay, + SumDateHoliday = sumWeekend }; return Success(result); @@ -360,7 +376,8 @@ namespace BMA.EHR.Leave.Service.Controllers [ProducesResponseType(StatusCodes.Status200OK)] [ProducesResponseType(StatusCodes.Status401Unauthorized)] [ProducesResponseType(StatusCodes.Status500InternalServerError)] - public async Task> GetLeaveRequestCalendarAsync([FromBody] GetLeaveRequestCalendarDto req) + public async Task> GetLeaveRequestCalendarAsync( + [FromBody] GetLeaveRequestCalendarDto req) { //var thisYear = DateTime.Now.Year; var data = await _leaveRequestRepository.GetLeaveRequestByYearAsync(req.Year); @@ -402,7 +419,8 @@ namespace BMA.EHR.Leave.Service.Controllers [ProducesResponseType(StatusCodes.Status200OK)] [ProducesResponseType(StatusCodes.Status401Unauthorized)] [ProducesResponseType(StatusCodes.Status500InternalServerError)] - public async Task> GetLeaveRequestTableAsync([FromBody] GetLeaveRequestTableDto req) + public async Task> GetLeaveRequestTableAsync( + [FromBody] GetLeaveRequestTableDto req) { var userId = UserId == null ? Guid.Empty : Guid.Parse(UserId); @@ -412,7 +430,8 @@ namespace BMA.EHR.Leave.Service.Controllers return Error(GlobalMessages.DataNotFound, StatusCodes.Status404NotFound); } - var rawData = await _leaveRequestRepository.GetLeaveRequestByUserIdAsync(userId, req.Year, req.Type, req.Status); + var rawData = + await _leaveRequestRepository.GetLeaveRequestByUserIdAsync(userId, req.Year, req.Type, req.Status); var result = new List(); @@ -437,7 +456,6 @@ namespace BMA.EHR.Leave.Service.Controllers var pageResult = result.Skip((req.Page - 1) * req.PageSize).Take(req.PageSize).ToList(); return Success(new { data = pageResult, total = result.Count }); - } /// @@ -473,7 +491,9 @@ namespace BMA.EHR.Leave.Service.Controllers var lastSalary = profile.Salaries.OrderByDescending(x => x.Order).FirstOrDefault(); var lastSalaryAmount = lastSalary == null ? 0 : lastSalary.Amount ?? 0; - var lastLeaveRequest = await _leaveRequestRepository.GetLastLeaveRequestByTypeForUserAsync(rawData.KeycloakUserId, rawData.Type.Id); + var lastLeaveRequest = + await _leaveRequestRepository.GetLastLeaveRequestByTypeForUserAsync(rawData.KeycloakUserId, + rawData.Type.Id); var result = new GetLeaveRequestByIdDto { @@ -537,7 +557,6 @@ namespace BMA.EHR.Leave.Service.Controllers CoupleDayStartDateHistory = rawData.CoupleDayStartDateHistory, CoupleDayEndDateHistory = rawData.CoupleDayEndDateHistory, CoupleDaySumTotalHistory = rawData.CoupleDaySumTotalHistory, - }; return Success(result); @@ -555,7 +574,8 @@ namespace BMA.EHR.Leave.Service.Controllers [ProducesResponseType(StatusCodes.Status200OK)] [ProducesResponseType(StatusCodes.Status401Unauthorized)] [ProducesResponseType(StatusCodes.Status500InternalServerError)] - public async Task> GetLeaveRequestForAdminAsync([FromBody] GetLeaveRequestForAdminDto req) + public async Task> GetLeaveRequestForAdminAsync( + [FromBody] GetLeaveRequestForAdminDto req) { var rawData = await _leaveRequestRepository.GetLeaveRequestForAdminAsync(req.Year, req.Type, req.Status); @@ -597,7 +617,8 @@ namespace BMA.EHR.Leave.Service.Controllers [ProducesResponseType(StatusCodes.Status200OK)] [ProducesResponseType(StatusCodes.Status401Unauthorized)] [ProducesResponseType(StatusCodes.Status500InternalServerError)] - public async Task> CancelLeaveRequestAsync([FromForm] CancelLeaveRequestDto req, Guid id) + public async Task> CancelLeaveRequestAsync([FromForm] CancelLeaveRequestDto req, + Guid id) { var data = await _leaveRequestRepository.GetByIdAsync(id); if (data == null) @@ -627,10 +648,9 @@ namespace BMA.EHR.Leave.Service.Controllers // save to database await _leaveRequestRepository.UpdateAsync(data); - // await _leaveRequestRepository.AddAsync(data); + // await _leaveRequestRepository.AddAsync(data); return Success(); - } /// @@ -645,9 +665,11 @@ namespace BMA.EHR.Leave.Service.Controllers [ProducesResponseType(StatusCodes.Status200OK)] [ProducesResponseType(StatusCodes.Status401Unauthorized)] [ProducesResponseType(StatusCodes.Status500InternalServerError)] - public async Task> GetCancelLeaveRequestForAdminAsync([FromBody] GetLeaveRequestForAdminDto req) + public async Task> GetCancelLeaveRequestForAdminAsync( + [FromBody] GetLeaveRequestForAdminDto req) { - var rawData = await _leaveRequestRepository.GetCancelLeaveRequestForAdminAsync(req.Year, req.Type, req.Status); + var rawData = + await _leaveRequestRepository.GetCancelLeaveRequestForAdminAsync(req.Year, req.Type, req.Status); var result = new List(); @@ -717,7 +739,9 @@ namespace BMA.EHR.Leave.Service.Controllers LeaveAddress = rawData.LeaveAddress, LeaveNumber = rawData.LeaveNumber, LeaveDetail = rawData.LeaveDetail, - LeaveDocDelete = rawData.LeaveCancelDocument == null ? "" : await _minIOService.ImagesPath(rawData.LeaveCancelDocument.Id), + LeaveDocDelete = rawData.LeaveCancelDocument == null + ? "" + : await _minIOService.ImagesPath(rawData.LeaveCancelDocument.Id), LeaveReasonDelete = rawData.LeaveCancelComment ?? "", LeaveTotal = rawData.LeaveTotal, }; @@ -737,9 +761,9 @@ namespace BMA.EHR.Leave.Service.Controllers [ProducesResponseType(StatusCodes.Status200OK)] [ProducesResponseType(StatusCodes.Status401Unauthorized)] [ProducesResponseType(StatusCodes.Status500InternalServerError)] - public async Task> ApproveCancelLeaveRequestAsync(Guid id, [FromBody] CancelLeaveRequestApproveDto req) + public async Task> ApproveCancelLeaveRequestAsync(Guid id, + [FromBody] CancelLeaveRequestApproveDto req) { - await _leaveRequestRepository.ApproveCancelLeaveRequestAsync(id, req.Reason ?? ""); return Success(); @@ -758,9 +782,9 @@ namespace BMA.EHR.Leave.Service.Controllers [ProducesResponseType(StatusCodes.Status200OK)] [ProducesResponseType(StatusCodes.Status401Unauthorized)] [ProducesResponseType(StatusCodes.Status500InternalServerError)] - public async Task> RejectCancelLeaveRequestAsync(Guid id, [FromBody] CancelLeaveRequestApproveDto req) + public async Task> RejectCancelLeaveRequestAsync(Guid id, + [FromBody] CancelLeaveRequestApproveDto req) { - await _leaveRequestRepository.RejectCancelLeaveRequestAsync(id, req.Reason ?? ""); return Success(); @@ -780,7 +804,6 @@ namespace BMA.EHR.Leave.Service.Controllers [ProducesResponseType(StatusCodes.Status500InternalServerError)] public async Task> OfficerApproveLeaveRequestAsync(Guid id) { - await _leaveRequestRepository.OfficerApproveLeaveRequest(id); return Success(); @@ -794,13 +817,13 @@ namespace BMA.EHR.Leave.Service.Controllers /// เมื่อทำรายการสำเร็จ /// ไม่ได้ Login เข้าระบบ /// เมื่อเกิดข้อผิดพลาดในการทำงาน - [HttpPut("admin/approve/commander/{id:guid}")] + [HttpPut("admin/approve/comander/{id:guid}")] [ProducesResponseType(StatusCodes.Status200OK)] [ProducesResponseType(StatusCodes.Status401Unauthorized)] [ProducesResponseType(StatusCodes.Status500InternalServerError)] - public async Task> CommanderApproveLeaveRequestAsync(Guid id, [FromBody] LeaveRequestApproveDto req) + public async Task> CommanderApproveLeaveRequestAsync(Guid id, + [FromBody] LeaveRequestApproveDto req) { - await _leaveRequestRepository.CommanderApproveLeaveRequest(id, req.Reason ?? ""); return Success(); @@ -818,9 +841,9 @@ namespace BMA.EHR.Leave.Service.Controllers [ProducesResponseType(StatusCodes.Status200OK)] [ProducesResponseType(StatusCodes.Status401Unauthorized)] [ProducesResponseType(StatusCodes.Status500InternalServerError)] - public async Task> ApproveLeaveRequestAsync(Guid id, [FromBody] LeaveRequestApproveDto req) + public async Task> ApproveLeaveRequestAsync(Guid id, + [FromBody] LeaveRequestApproveDto req) { - await _leaveRequestRepository.ApproveLeaveRequest(id, req.Reason ?? ""); return Success(); @@ -838,9 +861,9 @@ namespace BMA.EHR.Leave.Service.Controllers [ProducesResponseType(StatusCodes.Status200OK)] [ProducesResponseType(StatusCodes.Status401Unauthorized)] [ProducesResponseType(StatusCodes.Status500InternalServerError)] - public async Task> RejectLeaveRequestAsync(Guid id, [FromBody] LeaveRequestApproveDto req) + public async Task> RejectLeaveRequestAsync(Guid id, + [FromBody] LeaveRequestApproveDto req) { - await _leaveRequestRepository.RejectLeaveRequest(id, req.Reason ?? ""); return Success(); @@ -879,7 +902,9 @@ namespace BMA.EHR.Leave.Service.Controllers var lastSalary = profile.Salaries.OrderByDescending(x => x.Order).FirstOrDefault(); var lastSalaryAmount = lastSalary == null ? 0 : lastSalary.Amount ?? 0; - var lastLeaveRequest = await _leaveRequestRepository.GetLastLeaveRequestByTypeForUserAsync(rawData.KeycloakUserId, rawData.Type.Id); + var lastLeaveRequest = + await _leaveRequestRepository.GetLastLeaveRequestByTypeForUserAsync(rawData.KeycloakUserId, + rawData.Type.Id); var result = new GetLeaveRequestForAdminByIdDto { @@ -948,7 +973,6 @@ namespace BMA.EHR.Leave.Service.Controllers CoupleDayStartDateHistory = rawData.CoupleDayStartDateHistory, CoupleDayEndDateHistory = rawData.CoupleDayEndDateHistory, CoupleDaySumTotalHistory = rawData.CoupleDaySumTotalHistory, - }; return Success(result); @@ -976,13 +1000,17 @@ namespace BMA.EHR.Leave.Service.Controllers var result = new List(); foreach (var leaveType in leaveTypes) { - var send = await _leaveRequestRepository.GetSumSendLeaveByTypeForUserAsync(userId, leaveType.Id, thisYear); + var send = await _leaveRequestRepository.GetSumSendLeaveByTypeForUserAsync(userId, leaveType.Id, + thisYear); - var approve = await _leaveRequestRepository.GetSumApproveLeaveByTypeForUserAsync(userId, leaveType.Id, thisYear); + var approve = + await _leaveRequestRepository.GetSumApproveLeaveByTypeForUserAsync(userId, leaveType.Id, thisYear); - var reject = await _leaveRequestRepository.GetSumRejectLeaveByTypeForUserAsync(userId, leaveType.Id, thisYear); + var reject = + await _leaveRequestRepository.GetSumRejectLeaveByTypeForUserAsync(userId, leaveType.Id, thisYear); - var delete = await _leaveRequestRepository.GetSumDeleteLeaveByTypeForUserAsync(userId, leaveType.Id, thisYear); + var delete = + await _leaveRequestRepository.GetSumDeleteLeaveByTypeForUserAsync(userId, leaveType.Id, thisYear); var data = new { @@ -997,7 +1025,6 @@ namespace BMA.EHR.Leave.Service.Controllers LeaveCountDelete = delete, }; result.Add(data); - } return Success(result); @@ -1005,4 +1032,4 @@ namespace BMA.EHR.Leave.Service.Controllers #endregion } -} +} \ No newline at end of file diff --git a/BMA.EHR.Leave.Service/DTOs/DutyTime/CreateDutyTimeDto.cs b/BMA.EHR.Leave.Service/DTOs/DutyTime/CreateDutyTimeDto.cs index c5b7b803..c55b39de 100644 --- a/BMA.EHR.Leave.Service/DTOs/DutyTime/CreateDutyTimeDto.cs +++ b/BMA.EHR.Leave.Service/DTOs/DutyTime/CreateDutyTimeDto.cs @@ -23,5 +23,8 @@ namespace BMA.EHR.Leave.Service.DTOs.DutyTime [Required, Comment("สถานะว่ารอบใดเป็นค่า Default ของข้าราชการ (สำหรับทุกคนที่ยังไม่ได้ทำการเลือกรอบ)")] public bool IsDefault { get; set; } = false; + + [Required, Comment("Is Active")] + public bool IsActive { get; set; } = false; } } diff --git a/BMA.EHR.Leave.Service/DTOs/DutyTime/UpdateDutyTimeDto.cs b/BMA.EHR.Leave.Service/DTOs/DutyTime/UpdateDutyTimeDto.cs index aa919e48..7b1c2daf 100644 --- a/BMA.EHR.Leave.Service/DTOs/DutyTime/UpdateDutyTimeDto.cs +++ b/BMA.EHR.Leave.Service/DTOs/DutyTime/UpdateDutyTimeDto.cs @@ -5,8 +5,8 @@ namespace BMA.EHR.Leave.Service.DTOs.DutyTime { public class UpdateDutyTimeDto { - [Required, Comment("คำอธิบาย")] - public string Description { get; set; } = string.Empty; + [Comment("คำอธิบาย")] + public string? Description { get; set; } = string.Empty; [Required, Comment("สถานะว่ารอบใดเป็นค่า Default ของข้าราชการ (สำหรับทุกคนที่ยังไม่ได้ทำการเลือกรอบ)")] public bool IsDefault { get; set; } = false; diff --git a/BMA.EHR.Leave.Service/DTOs/LeaveRequest/GetLeaveCheckResultDto.cs b/BMA.EHR.Leave.Service/DTOs/LeaveRequest/GetLeaveCheckResultDto.cs index 7dd45c21..db739e17 100644 --- a/BMA.EHR.Leave.Service/DTOs/LeaveRequest/GetLeaveCheckResultDto.cs +++ b/BMA.EHR.Leave.Service/DTOs/LeaveRequest/GetLeaveCheckResultDto.cs @@ -2,10 +2,12 @@ { public class GetLeaveCheckResultDto { - public bool IsLeave { get;set; } = false; + public bool IsLeave { get; set; } = false; public double SumDateWork { get; set; } = 0; public double TotalDate { get; set; } = 0; + + public double SumDateHoliday { get; set; } = 0; } -} +} \ No newline at end of file diff --git a/BMA.EHR.Leave.Service/DTOs/LeaveRequest/GetUserLeaveProfileResultDto.cs b/BMA.EHR.Leave.Service/DTOs/LeaveRequest/GetUserLeaveProfileResultDto.cs index 4dbe9664..1b945f08 100644 --- a/BMA.EHR.Leave.Service/DTOs/LeaveRequest/GetUserLeaveProfileResultDto.cs +++ b/BMA.EHR.Leave.Service/DTOs/LeaveRequest/GetUserLeaveProfileResultDto.cs @@ -26,7 +26,7 @@ public DateTime BirthDate { get; set; } - public DateTime DateAppoint { get; set; } + public DateTime? DateAppoint { get; set; } public int Salary { get; set; }