From 1a29f8151d16faef71db5151af518877f62addbe Mon Sep 17 00:00:00 2001 From: Suphonchai Phoonsawat Date: Wed, 15 Nov 2023 15:38:39 +0700 Subject: [PATCH] fix api defect --- .../TimeAttendants/UserTimeStampRepository.cs | 2 +- .../BMA.EHR.Leave.Service.csproj | 2 +- .../ConfigureSwaggerOptions.cs | 2 +- .../Controllers/LeaveController.cs | 47 ++++++++++++------- .../DTOs/CheckIn/CheckInDetailForAdminDto.cs | 33 +++++++++++++ .../DTOs/CheckIn/CheckInHistoryDto.cs | 2 +- .../DTOs/CheckIn/CheckInHistoryForAdminDto.cs | 8 ++-- .../DTOs/CheckIn/CheckInResultDto.cs | 5 +- .../DTOs/CheckIn/CheckTimeDto.cs | 2 +- .../DTOs/DutyTime/CreateDutyTimeDto.cs | 2 +- .../DTOs/DutyTime/UpdateDutyTimeDto.cs | 2 +- BMA.EHR.Leave.Service/DTOs/POI/GetPOIDto.cs | 2 +- .../DTOs/POI/GetPOIResultDto.cs | 2 +- .../DTOs/POI/POIResultDto.cs | 2 +- BMA.EHR.Leave.Service/Program.cs | 2 +- 15 files changed, 78 insertions(+), 37 deletions(-) create mode 100644 BMA.EHR.Leave.Service/DTOs/CheckIn/CheckInDetailForAdminDto.cs diff --git a/BMA.EHR.Application/Repositories/Leaves/TimeAttendants/UserTimeStampRepository.cs b/BMA.EHR.Application/Repositories/Leaves/TimeAttendants/UserTimeStampRepository.cs index d3adcdda..b9497fbb 100644 --- a/BMA.EHR.Application/Repositories/Leaves/TimeAttendants/UserTimeStampRepository.cs +++ b/BMA.EHR.Application/Repositories/Leaves/TimeAttendants/UserTimeStampRepository.cs @@ -93,7 +93,7 @@ namespace BMA.EHR.Application.Repositories.Leaves.TimeAttendants public async Task> GetTimeStampHistoryForAdminAsync(DateTime startDate,DateTime endDate, int page = 1, int pageSize = 10, string keyword = "") { var data = await _dbContext.Set() - .Where(u => u.CheckIn >= startDate && u.CheckIn <= endDate) + .Where(u => u.CheckIn.Date >= startDate.Date && u.CheckIn.Date <= endDate.Date) .OrderBy(u => u.CheckIn) .Skip((page - 1) * pageSize) .Take(pageSize) diff --git a/BMA.EHR.Leave.Service/BMA.EHR.Leave.Service.csproj b/BMA.EHR.Leave.Service/BMA.EHR.Leave.Service.csproj index 9711cd8c..57b7f1cd 100644 --- a/BMA.EHR.Leave.Service/BMA.EHR.Leave.Service.csproj +++ b/BMA.EHR.Leave.Service/BMA.EHR.Leave.Service.csproj @@ -8,7 +8,7 @@ Linux True . - BMA.EHR.Command.Service + BMA.EHR.Leave.Service $(NoWarn);1591 diff --git a/BMA.EHR.Leave.Service/ConfigureSwaggerOptions.cs b/BMA.EHR.Leave.Service/ConfigureSwaggerOptions.cs index 1c6b1671..0ccc42fa 100644 --- a/BMA.EHR.Leave.Service/ConfigureSwaggerOptions.cs +++ b/BMA.EHR.Leave.Service/ConfigureSwaggerOptions.cs @@ -4,7 +4,7 @@ using Microsoft.OpenApi.Models; using Swashbuckle.AspNetCore.SwaggerGen; using System.Reflection; -namespace BMA.EHR.Command.Service +namespace BMA.EHR.Leave.Service { public class ConfigureSwaggerOptions : IConfigureNamedOptions { diff --git a/BMA.EHR.Leave.Service/Controllers/LeaveController.cs b/BMA.EHR.Leave.Service/Controllers/LeaveController.cs index 16b4f23b..7fab8a83 100644 --- a/BMA.EHR.Leave.Service/Controllers/LeaveController.cs +++ b/BMA.EHR.Leave.Service/Controllers/LeaveController.cs @@ -1,11 +1,11 @@ using BMA.EHR.Application.Repositories; using BMA.EHR.Application.Repositories.Leaves.TimeAttendants; -using BMA.EHR.Command.Service.DTOs.CheckIn; -using BMA.EHR.Command.Service.DTOs.DutyTime; using BMA.EHR.Domain.Common; using BMA.EHR.Domain.Models.Leave.TimeAttendants; using BMA.EHR.Domain.Shared; using BMA.EHR.Infrastructure.Persistence; +using BMA.EHR.Leave.Service.DTOs.CheckIn; +using BMA.EHR.Leave.Service.DTOs.DutyTime; using iTextSharp.text; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; @@ -14,7 +14,7 @@ using Swashbuckle.AspNetCore.Annotations; using System.ComponentModel.DataAnnotations; using System.Security.Claims; -namespace BMA.EHR.Command.Service.Controllers +namespace BMA.EHR.Leave.Service.Controllers { [Route("api/v{version:apiVersion}/leave")] [ApiVersion("1.0")] @@ -461,14 +461,14 @@ namespace BMA.EHR.Command.Service.Controllers CheckInId = d.Id, CheckInDate = d.CheckIn.Date, - CheckInTime = d.CheckIn.ToString("HH:mm"), + CheckInTime = d.CheckIn.ToString("HH:mm:ss"), CheckInLocation = d.CheckInPOI, CheckInStatus = DateTime.Parse(d.CheckIn.ToString("yyyy-MM-dd HH:mm")) > DateTime.Parse($"{d.CheckIn.Date.ToString("yyyy-MM-dd")} {duty.StartTimeMorning}") ? "LATE" : "NORMAL", CheckOutDate = d.CheckOut == null ? null : d.CheckOut.Value.Date, - CheckOutTime = d.CheckOut == null ? "" : d.CheckOut.Value.ToString("HH:mm"), + CheckOutTime = d.CheckOut == null ? "" : d.CheckOut.Value.ToString("HH:mm:ss"), CheckOutLocation = d.CheckOutPOI ?? "", CheckOutStatus = d.CheckOut == null ? null : DateTime.Parse(d.CheckOut.Value.ToString("yyyy-MM-dd HH:mm")) < DateTime.Parse($"{d.CheckIn.Date.ToString("yyyy-MM-dd")} {duty.EndTimeAfternoon}") ? @@ -495,30 +495,41 @@ namespace BMA.EHR.Command.Service.Controllers [ProducesResponseType(StatusCodes.Status500InternalServerError)] public async Task> LogRecordAsync([Required] DateTime startDate, [Required] DateTime endDate, int page = 1, int pageSize = 10, string keyword = "") { + if (startDate.Date > endDate.Date) + { + return Error(new Exception("วันเริ่มต้นต้องมีค่าน้อยกว่าหรือเท่ากับวันสิ้นสุด"), (int)StatusCodes.Status400BadRequest); + } + + var imgUrl = $"{_configuration["MinIO:Endpoint"]}{_configuration["MinIO:BucketName"]}"; var data = (await _userTimeStampRepository.GetTimeStampHistoryForAdminAsync(startDate, endDate, page, pageSize, keyword)) .Select(d => new CheckInHistoryForAdminDto { - CheckInId = d.Id, + Id = d.Id, FullName = _userProfileRepository.GetUserFullName(d.KeycloakUserId), CheckInDate = d.CheckIn.Date, - CheckInTime = d.CheckIn.ToString("HH:mm"), + CheckInTime = d.CheckIn.ToString("HH:mm:ss"), CheckInLocation = d.CheckInPOI, CheckInLat = d.CheckInLat, CheckInLon = d.CheckInLon, - CheckInImageUrl = $"{imgUrl}/{d.CheckInImageUrl}", + //CheckInImageUrl = $"{imgUrl}/{d.CheckInImageUrl}", CheckOutDate = d.CheckOut == null ? null : d.CheckOut.Value.Date, - CheckOutTime = d.CheckOut == null ? "" : d.CheckOut.Value.ToString("HH:mm"), + CheckOutTime = d.CheckOut == null ? "" : d.CheckOut.Value.ToString("HH:mm:ss"), CheckOutLocation = d.CheckOut == null ? "" : d.CheckOutPOI, CheckOutLat = d.CheckOut == null ? null : d.CheckOutLat, CheckOutLon = d.CheckOut == null ? null : d.CheckOutLon, - CheckOutImageUrl = d.CheckOut == null ? "" : $"{imgUrl}/{d.CheckOutImageUrl}", + //CheckOutImageUrl = d.CheckOut == null ? "" : $"{imgUrl}/{d.CheckOutImageUrl}", }) .ToList(); - return Success(data); + if (data == null || data.Count == 0) + { + return Error(new Exception(GlobalMessages.DataNotFound), (int)StatusCodes.Status404NotFound); + } + + return Success(new { data = data, total = data.Count }); } /// @@ -537,30 +548,30 @@ namespace BMA.EHR.Command.Service.Controllers { var imgUrl = $"{_configuration["MinIO:Endpoint"]}{_configuration["MinIO:BucketName"]}"; var d = (await _userTimeStampRepository.GetTimeStampById(id)); - if(d == null) + if (d == null) { throw new Exception(GlobalMessages.DataNotFound); } else { - var result = new CheckInHistoryForAdminDto + var result = new CheckInDetailForAdminDto { - CheckInId = d.Id, + Id = d.Id, FullName = _userProfileRepository.GetUserFullName(d.KeycloakUserId), CheckInDate = d.CheckIn.Date, - CheckInTime = d.CheckIn.ToString("HH:mm"), + CheckInTime = d.CheckIn.ToString("HH:mm:ss"), CheckInLocation = d.CheckInPOI, CheckInLat = d.CheckInLat, CheckInLon = d.CheckInLon, - CheckInImageUrl = $"{imgUrl}/{d.CheckInImageUrl}", + CheckInImg = $"{imgUrl}/{d.CheckInImageUrl}", CheckOutDate = d.CheckOut == null ? null : d.CheckOut.Value.Date, - CheckOutTime = d.CheckOut == null ? "" : d.CheckOut.Value.ToString("HH:mm"), + CheckOutTime = d.CheckOut == null ? "" : d.CheckOut.Value.ToString("HH:mm:ss"), CheckOutLocation = d.CheckOut == null ? "" : d.CheckOutPOI, CheckOutLat = d.CheckOut == null ? null : d.CheckOutLat, CheckOutLon = d.CheckOut == null ? null : d.CheckOutLon, - CheckOutImageUrl = d.CheckOut == null ? "" : $"{imgUrl}/{d.CheckOutImageUrl}", + CheckOutImg = d.CheckOut == null ? "" : $"{imgUrl}/{d.CheckOutImageUrl}", }; return Success(result); diff --git a/BMA.EHR.Leave.Service/DTOs/CheckIn/CheckInDetailForAdminDto.cs b/BMA.EHR.Leave.Service/DTOs/CheckIn/CheckInDetailForAdminDto.cs new file mode 100644 index 00000000..2f120fa3 --- /dev/null +++ b/BMA.EHR.Leave.Service/DTOs/CheckIn/CheckInDetailForAdminDto.cs @@ -0,0 +1,33 @@ +namespace BMA.EHR.Leave.Service.DTOs.CheckIn +{ + public class CheckInDetailForAdminDto + { + public Guid Id { get; set; } = Guid.Empty; + + public string FullName { get; set; } = string.Empty; + + public DateTime? CheckInDate { get; set; } = DateTime.MinValue; + + public string? CheckInTime { get; set; } = "00:00"; + + public string? CheckInLocation { get; set; } = string.Empty; + + public double? CheckInLat { get; set; } = 0; + + public double? CheckInLon { get; set; } = 0; + + public string? CheckInImg { get; set; } = string.Empty; + + public DateTime? CheckOutDate { get; set; } = DateTime.MinValue; + + public string? CheckOutTime { get; set; } = "00:00"; + + public string? CheckOutLocation { get; set; } = string.Empty; + + public double? CheckOutLat { get; set; } = 0; + + public double? CheckOutLon { get; set; } = 0; + + public string? CheckOutImg { get; set; } = string.Empty; + } +} diff --git a/BMA.EHR.Leave.Service/DTOs/CheckIn/CheckInHistoryDto.cs b/BMA.EHR.Leave.Service/DTOs/CheckIn/CheckInHistoryDto.cs index e6661414..3d49d782 100644 --- a/BMA.EHR.Leave.Service/DTOs/CheckIn/CheckInHistoryDto.cs +++ b/BMA.EHR.Leave.Service/DTOs/CheckIn/CheckInHistoryDto.cs @@ -1,4 +1,4 @@ -namespace BMA.EHR.Command.Service.DTOs.CheckIn +namespace BMA.EHR.Leave.Service.DTOs.CheckIn { public class CheckInHistoryDto { diff --git a/BMA.EHR.Leave.Service/DTOs/CheckIn/CheckInHistoryForAdminDto.cs b/BMA.EHR.Leave.Service/DTOs/CheckIn/CheckInHistoryForAdminDto.cs index d4fd1f60..eb0bb771 100644 --- a/BMA.EHR.Leave.Service/DTOs/CheckIn/CheckInHistoryForAdminDto.cs +++ b/BMA.EHR.Leave.Service/DTOs/CheckIn/CheckInHistoryForAdminDto.cs @@ -1,8 +1,8 @@ -namespace BMA.EHR.Command.Service.DTOs.CheckIn +namespace BMA.EHR.Leave.Service.DTOs.CheckIn { public class CheckInHistoryForAdminDto { - public Guid CheckInId { get; set; } = Guid.Empty; + public Guid Id { get; set; } = Guid.Empty; public string FullName { get; set; } = string.Empty; @@ -16,7 +16,7 @@ public double? CheckInLon { get; set; } = 0; - public string? CheckInImageUrl { get; set; } = string.Empty; + //public string? CheckInImageUrl { get; set; } = string.Empty; public DateTime? CheckOutDate { get; set; } = DateTime.MinValue; @@ -28,6 +28,6 @@ public double? CheckOutLon { get; set; } = 0; - public string? CheckOutImageUrl { get; set; } = string.Empty; + //public string? CheckOutImageUrl { get; set; } = string.Empty; } } diff --git a/BMA.EHR.Leave.Service/DTOs/CheckIn/CheckInResultDto.cs b/BMA.EHR.Leave.Service/DTOs/CheckIn/CheckInResultDto.cs index 74a8bb71..a6d93c20 100644 --- a/BMA.EHR.Leave.Service/DTOs/CheckIn/CheckInResultDto.cs +++ b/BMA.EHR.Leave.Service/DTOs/CheckIn/CheckInResultDto.cs @@ -1,7 +1,4 @@ -using Microsoft.EntityFrameworkCore; -using System.ComponentModel.DataAnnotations; - -namespace BMA.EHR.Command.Service.DTOs.CheckIn +namespace BMA.EHR.Leave.Service.DTOs.CheckIn { public class CheckInResultDto { diff --git a/BMA.EHR.Leave.Service/DTOs/CheckIn/CheckTimeDto.cs b/BMA.EHR.Leave.Service/DTOs/CheckIn/CheckTimeDto.cs index b5cf8df0..55d0c7d9 100644 --- a/BMA.EHR.Leave.Service/DTOs/CheckIn/CheckTimeDto.cs +++ b/BMA.EHR.Leave.Service/DTOs/CheckIn/CheckTimeDto.cs @@ -1,6 +1,6 @@ using System.ComponentModel.DataAnnotations; -namespace BMA.EHR.Command.Service.DTOs.CheckIn +namespace BMA.EHR.Leave.Service.DTOs.CheckIn { public class CheckTimeDto { diff --git a/BMA.EHR.Leave.Service/DTOs/DutyTime/CreateDutyTimeDto.cs b/BMA.EHR.Leave.Service/DTOs/DutyTime/CreateDutyTimeDto.cs index 703685ae..5cc376c0 100644 --- a/BMA.EHR.Leave.Service/DTOs/DutyTime/CreateDutyTimeDto.cs +++ b/BMA.EHR.Leave.Service/DTOs/DutyTime/CreateDutyTimeDto.cs @@ -1,7 +1,7 @@ using Microsoft.EntityFrameworkCore; using System.ComponentModel.DataAnnotations; -namespace BMA.EHR.Command.Service.DTOs.DutyTime +namespace BMA.EHR.Leave.Service.DTOs.DutyTime { public class CreateDutyTimeDto { diff --git a/BMA.EHR.Leave.Service/DTOs/DutyTime/UpdateDutyTimeDto.cs b/BMA.EHR.Leave.Service/DTOs/DutyTime/UpdateDutyTimeDto.cs index 9de15df3..aa919e48 100644 --- a/BMA.EHR.Leave.Service/DTOs/DutyTime/UpdateDutyTimeDto.cs +++ b/BMA.EHR.Leave.Service/DTOs/DutyTime/UpdateDutyTimeDto.cs @@ -1,7 +1,7 @@ using Microsoft.EntityFrameworkCore; using System.ComponentModel.DataAnnotations; -namespace BMA.EHR.Command.Service.DTOs.DutyTime +namespace BMA.EHR.Leave.Service.DTOs.DutyTime { public class UpdateDutyTimeDto { diff --git a/BMA.EHR.Leave.Service/DTOs/POI/GetPOIDto.cs b/BMA.EHR.Leave.Service/DTOs/POI/GetPOIDto.cs index edb99700..38c3e1ec 100644 --- a/BMA.EHR.Leave.Service/DTOs/POI/GetPOIDto.cs +++ b/BMA.EHR.Leave.Service/DTOs/POI/GetPOIDto.cs @@ -1,4 +1,4 @@ -namespace BMA.EHR.Command.Service.DTOs.POI +namespace BMA.EHR.Leave.Service.DTOs.POI { public class GetPOIDto { diff --git a/BMA.EHR.Leave.Service/DTOs/POI/GetPOIResultDto.cs b/BMA.EHR.Leave.Service/DTOs/POI/GetPOIResultDto.cs index dea68594..33bd769a 100644 --- a/BMA.EHR.Leave.Service/DTOs/POI/GetPOIResultDto.cs +++ b/BMA.EHR.Leave.Service/DTOs/POI/GetPOIResultDto.cs @@ -1,4 +1,4 @@ -namespace BMA.EHR.Command.Service.DTOs.POI +namespace BMA.EHR.Leave.Service.DTOs.POI { public class GetPOIResultDto { diff --git a/BMA.EHR.Leave.Service/DTOs/POI/POIResultDto.cs b/BMA.EHR.Leave.Service/DTOs/POI/POIResultDto.cs index 1655a5cc..38eb94d9 100644 --- a/BMA.EHR.Leave.Service/DTOs/POI/POIResultDto.cs +++ b/BMA.EHR.Leave.Service/DTOs/POI/POIResultDto.cs @@ -1,4 +1,4 @@ -namespace BMA.EHR.Command.Service.DTOs.POI +namespace BMA.EHR.Leave.Service.DTOs.POI { public class POIResultDto { diff --git a/BMA.EHR.Leave.Service/Program.cs b/BMA.EHR.Leave.Service/Program.cs index 401f0a46..a0fccfd1 100644 --- a/BMA.EHR.Leave.Service/Program.cs +++ b/BMA.EHR.Leave.Service/Program.cs @@ -1,5 +1,5 @@ using BMA.EHR.Application; -using BMA.EHR.Command.Service; +using BMA.EHR.Leave.Service; using BMA.EHR.Domain.Middlewares; using BMA.EHR.Infrastructure; using BMA.EHR.Infrastructure.Persistence;