fix api defect
This commit is contained in:
parent
8d3c646151
commit
1a29f8151d
15 changed files with 78 additions and 37 deletions
|
|
@ -93,7 +93,7 @@ namespace BMA.EHR.Application.Repositories.Leaves.TimeAttendants
|
||||||
public async Task<List<UserTimeStamp>> GetTimeStampHistoryForAdminAsync(DateTime startDate,DateTime endDate, int page = 1, int pageSize = 10, string keyword = "")
|
public async Task<List<UserTimeStamp>> GetTimeStampHistoryForAdminAsync(DateTime startDate,DateTime endDate, int page = 1, int pageSize = 10, string keyword = "")
|
||||||
{
|
{
|
||||||
var data = await _dbContext.Set<UserTimeStamp>()
|
var data = await _dbContext.Set<UserTimeStamp>()
|
||||||
.Where(u => u.CheckIn >= startDate && u.CheckIn <= endDate)
|
.Where(u => u.CheckIn.Date >= startDate.Date && u.CheckIn.Date <= endDate.Date)
|
||||||
.OrderBy(u => u.CheckIn)
|
.OrderBy(u => u.CheckIn)
|
||||||
.Skip((page - 1) * pageSize)
|
.Skip((page - 1) * pageSize)
|
||||||
.Take(pageSize)
|
.Take(pageSize)
|
||||||
|
|
|
||||||
|
|
@ -8,7 +8,7 @@
|
||||||
<DockerDefaultTargetOS>Linux</DockerDefaultTargetOS>
|
<DockerDefaultTargetOS>Linux</DockerDefaultTargetOS>
|
||||||
<GenerateDocumentationFile>True</GenerateDocumentationFile>
|
<GenerateDocumentationFile>True</GenerateDocumentationFile>
|
||||||
<DockerfileContext>.</DockerfileContext>
|
<DockerfileContext>.</DockerfileContext>
|
||||||
<RootNamespace>BMA.EHR.Command.Service</RootNamespace>
|
<RootNamespace>BMA.EHR.Leave.Service</RootNamespace>
|
||||||
<NoWarn>$(NoWarn);1591</NoWarn>
|
<NoWarn>$(NoWarn);1591</NoWarn>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -4,7 +4,7 @@ using Microsoft.OpenApi.Models;
|
||||||
using Swashbuckle.AspNetCore.SwaggerGen;
|
using Swashbuckle.AspNetCore.SwaggerGen;
|
||||||
using System.Reflection;
|
using System.Reflection;
|
||||||
|
|
||||||
namespace BMA.EHR.Command.Service
|
namespace BMA.EHR.Leave.Service
|
||||||
{
|
{
|
||||||
public class ConfigureSwaggerOptions : IConfigureNamedOptions<SwaggerGenOptions>
|
public class ConfigureSwaggerOptions : IConfigureNamedOptions<SwaggerGenOptions>
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -1,11 +1,11 @@
|
||||||
using BMA.EHR.Application.Repositories;
|
using BMA.EHR.Application.Repositories;
|
||||||
using BMA.EHR.Application.Repositories.Leaves.TimeAttendants;
|
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.Common;
|
||||||
using BMA.EHR.Domain.Models.Leave.TimeAttendants;
|
using BMA.EHR.Domain.Models.Leave.TimeAttendants;
|
||||||
using BMA.EHR.Domain.Shared;
|
using BMA.EHR.Domain.Shared;
|
||||||
using BMA.EHR.Infrastructure.Persistence;
|
using BMA.EHR.Infrastructure.Persistence;
|
||||||
|
using BMA.EHR.Leave.Service.DTOs.CheckIn;
|
||||||
|
using BMA.EHR.Leave.Service.DTOs.DutyTime;
|
||||||
using iTextSharp.text;
|
using iTextSharp.text;
|
||||||
using Microsoft.AspNetCore.Authorization;
|
using Microsoft.AspNetCore.Authorization;
|
||||||
using Microsoft.AspNetCore.Mvc;
|
using Microsoft.AspNetCore.Mvc;
|
||||||
|
|
@ -14,7 +14,7 @@ using Swashbuckle.AspNetCore.Annotations;
|
||||||
using System.ComponentModel.DataAnnotations;
|
using System.ComponentModel.DataAnnotations;
|
||||||
using System.Security.Claims;
|
using System.Security.Claims;
|
||||||
|
|
||||||
namespace BMA.EHR.Command.Service.Controllers
|
namespace BMA.EHR.Leave.Service.Controllers
|
||||||
{
|
{
|
||||||
[Route("api/v{version:apiVersion}/leave")]
|
[Route("api/v{version:apiVersion}/leave")]
|
||||||
[ApiVersion("1.0")]
|
[ApiVersion("1.0")]
|
||||||
|
|
@ -461,14 +461,14 @@ namespace BMA.EHR.Command.Service.Controllers
|
||||||
CheckInId = d.Id,
|
CheckInId = d.Id,
|
||||||
|
|
||||||
CheckInDate = d.CheckIn.Date,
|
CheckInDate = d.CheckIn.Date,
|
||||||
CheckInTime = d.CheckIn.ToString("HH:mm"),
|
CheckInTime = d.CheckIn.ToString("HH:mm:ss"),
|
||||||
CheckInLocation = d.CheckInPOI,
|
CheckInLocation = d.CheckInPOI,
|
||||||
CheckInStatus = DateTime.Parse(d.CheckIn.ToString("yyyy-MM-dd HH:mm")) >
|
CheckInStatus = DateTime.Parse(d.CheckIn.ToString("yyyy-MM-dd HH:mm")) >
|
||||||
DateTime.Parse($"{d.CheckIn.Date.ToString("yyyy-MM-dd")} {duty.StartTimeMorning}") ?
|
DateTime.Parse($"{d.CheckIn.Date.ToString("yyyy-MM-dd")} {duty.StartTimeMorning}") ?
|
||||||
"LATE" :
|
"LATE" :
|
||||||
"NORMAL",
|
"NORMAL",
|
||||||
CheckOutDate = d.CheckOut == null ? null : d.CheckOut.Value.Date,
|
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 ?? "",
|
CheckOutLocation = d.CheckOutPOI ?? "",
|
||||||
CheckOutStatus = d.CheckOut == null ? null : DateTime.Parse(d.CheckOut.Value.ToString("yyyy-MM-dd HH:mm")) <
|
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}") ?
|
DateTime.Parse($"{d.CheckIn.Date.ToString("yyyy-MM-dd")} {duty.EndTimeAfternoon}") ?
|
||||||
|
|
@ -495,30 +495,41 @@ namespace BMA.EHR.Command.Service.Controllers
|
||||||
[ProducesResponseType(StatusCodes.Status500InternalServerError)]
|
[ProducesResponseType(StatusCodes.Status500InternalServerError)]
|
||||||
public async Task<ActionResult<ResponseObject>> LogRecordAsync([Required] DateTime startDate, [Required] DateTime endDate, int page = 1, int pageSize = 10, string keyword = "")
|
public async Task<ActionResult<ResponseObject>> 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 imgUrl = $"{_configuration["MinIO:Endpoint"]}{_configuration["MinIO:BucketName"]}";
|
||||||
var data = (await _userTimeStampRepository.GetTimeStampHistoryForAdminAsync(startDate, endDate, page, pageSize, keyword))
|
var data = (await _userTimeStampRepository.GetTimeStampHistoryForAdminAsync(startDate, endDate, page, pageSize, keyword))
|
||||||
.Select(d => new CheckInHistoryForAdminDto
|
.Select(d => new CheckInHistoryForAdminDto
|
||||||
{
|
{
|
||||||
CheckInId = d.Id,
|
Id = d.Id,
|
||||||
FullName = _userProfileRepository.GetUserFullName(d.KeycloakUserId),
|
FullName = _userProfileRepository.GetUserFullName(d.KeycloakUserId),
|
||||||
|
|
||||||
CheckInDate = d.CheckIn.Date,
|
CheckInDate = d.CheckIn.Date,
|
||||||
CheckInTime = d.CheckIn.ToString("HH:mm"),
|
CheckInTime = d.CheckIn.ToString("HH:mm:ss"),
|
||||||
CheckInLocation = d.CheckInPOI,
|
CheckInLocation = d.CheckInPOI,
|
||||||
CheckInLat = d.CheckInLat,
|
CheckInLat = d.CheckInLat,
|
||||||
CheckInLon = d.CheckInLon,
|
CheckInLon = d.CheckInLon,
|
||||||
CheckInImageUrl = $"{imgUrl}/{d.CheckInImageUrl}",
|
//CheckInImageUrl = $"{imgUrl}/{d.CheckInImageUrl}",
|
||||||
|
|
||||||
CheckOutDate = d.CheckOut == null ? null : d.CheckOut.Value.Date,
|
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,
|
CheckOutLocation = d.CheckOut == null ? "" : d.CheckOutPOI,
|
||||||
CheckOutLat = d.CheckOut == null ? null : d.CheckOutLat,
|
CheckOutLat = d.CheckOut == null ? null : d.CheckOutLat,
|
||||||
CheckOutLon = d.CheckOut == null ? null : d.CheckOutLon,
|
CheckOutLon = d.CheckOut == null ? null : d.CheckOutLon,
|
||||||
CheckOutImageUrl = d.CheckOut == null ? "" : $"{imgUrl}/{d.CheckOutImageUrl}",
|
//CheckOutImageUrl = d.CheckOut == null ? "" : $"{imgUrl}/{d.CheckOutImageUrl}",
|
||||||
})
|
})
|
||||||
.ToList();
|
.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 });
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
|
@ -537,30 +548,30 @@ namespace BMA.EHR.Command.Service.Controllers
|
||||||
{
|
{
|
||||||
var imgUrl = $"{_configuration["MinIO:Endpoint"]}{_configuration["MinIO:BucketName"]}";
|
var imgUrl = $"{_configuration["MinIO:Endpoint"]}{_configuration["MinIO:BucketName"]}";
|
||||||
var d = (await _userTimeStampRepository.GetTimeStampById(id));
|
var d = (await _userTimeStampRepository.GetTimeStampById(id));
|
||||||
if(d == null)
|
if (d == null)
|
||||||
{
|
{
|
||||||
throw new Exception(GlobalMessages.DataNotFound);
|
throw new Exception(GlobalMessages.DataNotFound);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
var result = new CheckInHistoryForAdminDto
|
var result = new CheckInDetailForAdminDto
|
||||||
{
|
{
|
||||||
CheckInId = d.Id,
|
Id = d.Id,
|
||||||
FullName = _userProfileRepository.GetUserFullName(d.KeycloakUserId),
|
FullName = _userProfileRepository.GetUserFullName(d.KeycloakUserId),
|
||||||
|
|
||||||
CheckInDate = d.CheckIn.Date,
|
CheckInDate = d.CheckIn.Date,
|
||||||
CheckInTime = d.CheckIn.ToString("HH:mm"),
|
CheckInTime = d.CheckIn.ToString("HH:mm:ss"),
|
||||||
CheckInLocation = d.CheckInPOI,
|
CheckInLocation = d.CheckInPOI,
|
||||||
CheckInLat = d.CheckInLat,
|
CheckInLat = d.CheckInLat,
|
||||||
CheckInLon = d.CheckInLon,
|
CheckInLon = d.CheckInLon,
|
||||||
CheckInImageUrl = $"{imgUrl}/{d.CheckInImageUrl}",
|
CheckInImg = $"{imgUrl}/{d.CheckInImageUrl}",
|
||||||
|
|
||||||
CheckOutDate = d.CheckOut == null ? null : d.CheckOut.Value.Date,
|
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,
|
CheckOutLocation = d.CheckOut == null ? "" : d.CheckOutPOI,
|
||||||
CheckOutLat = d.CheckOut == null ? null : d.CheckOutLat,
|
CheckOutLat = d.CheckOut == null ? null : d.CheckOutLat,
|
||||||
CheckOutLon = d.CheckOut == null ? null : d.CheckOutLon,
|
CheckOutLon = d.CheckOut == null ? null : d.CheckOutLon,
|
||||||
CheckOutImageUrl = d.CheckOut == null ? "" : $"{imgUrl}/{d.CheckOutImageUrl}",
|
CheckOutImg = d.CheckOut == null ? "" : $"{imgUrl}/{d.CheckOutImageUrl}",
|
||||||
};
|
};
|
||||||
|
|
||||||
return Success(result);
|
return Success(result);
|
||||||
|
|
|
||||||
|
|
@ -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;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
namespace BMA.EHR.Command.Service.DTOs.CheckIn
|
namespace BMA.EHR.Leave.Service.DTOs.CheckIn
|
||||||
{
|
{
|
||||||
public class CheckInHistoryDto
|
public class CheckInHistoryDto
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,8 @@
|
||||||
namespace BMA.EHR.Command.Service.DTOs.CheckIn
|
namespace BMA.EHR.Leave.Service.DTOs.CheckIn
|
||||||
{
|
{
|
||||||
public class CheckInHistoryForAdminDto
|
public class CheckInHistoryForAdminDto
|
||||||
{
|
{
|
||||||
public Guid CheckInId { get; set; } = Guid.Empty;
|
public Guid Id { get; set; } = Guid.Empty;
|
||||||
|
|
||||||
public string FullName { get; set; } = string.Empty;
|
public string FullName { get; set; } = string.Empty;
|
||||||
|
|
||||||
|
|
@ -16,7 +16,7 @@
|
||||||
|
|
||||||
public double? CheckInLon { get; set; } = 0;
|
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;
|
public DateTime? CheckOutDate { get; set; } = DateTime.MinValue;
|
||||||
|
|
||||||
|
|
@ -28,6 +28,6 @@
|
||||||
|
|
||||||
public double? CheckOutLon { get; set; } = 0;
|
public double? CheckOutLon { get; set; } = 0;
|
||||||
|
|
||||||
public string? CheckOutImageUrl { get; set; } = string.Empty;
|
//public string? CheckOutImageUrl { get; set; } = string.Empty;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,4 @@
|
||||||
using Microsoft.EntityFrameworkCore;
|
namespace BMA.EHR.Leave.Service.DTOs.CheckIn
|
||||||
using System.ComponentModel.DataAnnotations;
|
|
||||||
|
|
||||||
namespace BMA.EHR.Command.Service.DTOs.CheckIn
|
|
||||||
{
|
{
|
||||||
public class CheckInResultDto
|
public class CheckInResultDto
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
using System.ComponentModel.DataAnnotations;
|
using System.ComponentModel.DataAnnotations;
|
||||||
|
|
||||||
namespace BMA.EHR.Command.Service.DTOs.CheckIn
|
namespace BMA.EHR.Leave.Service.DTOs.CheckIn
|
||||||
{
|
{
|
||||||
public class CheckTimeDto
|
public class CheckTimeDto
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
using Microsoft.EntityFrameworkCore;
|
using Microsoft.EntityFrameworkCore;
|
||||||
using System.ComponentModel.DataAnnotations;
|
using System.ComponentModel.DataAnnotations;
|
||||||
|
|
||||||
namespace BMA.EHR.Command.Service.DTOs.DutyTime
|
namespace BMA.EHR.Leave.Service.DTOs.DutyTime
|
||||||
{
|
{
|
||||||
public class CreateDutyTimeDto
|
public class CreateDutyTimeDto
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
using Microsoft.EntityFrameworkCore;
|
using Microsoft.EntityFrameworkCore;
|
||||||
using System.ComponentModel.DataAnnotations;
|
using System.ComponentModel.DataAnnotations;
|
||||||
|
|
||||||
namespace BMA.EHR.Command.Service.DTOs.DutyTime
|
namespace BMA.EHR.Leave.Service.DTOs.DutyTime
|
||||||
{
|
{
|
||||||
public class UpdateDutyTimeDto
|
public class UpdateDutyTimeDto
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
namespace BMA.EHR.Command.Service.DTOs.POI
|
namespace BMA.EHR.Leave.Service.DTOs.POI
|
||||||
{
|
{
|
||||||
public class GetPOIDto
|
public class GetPOIDto
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
namespace BMA.EHR.Command.Service.DTOs.POI
|
namespace BMA.EHR.Leave.Service.DTOs.POI
|
||||||
{
|
{
|
||||||
public class GetPOIResultDto
|
public class GetPOIResultDto
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
namespace BMA.EHR.Command.Service.DTOs.POI
|
namespace BMA.EHR.Leave.Service.DTOs.POI
|
||||||
{
|
{
|
||||||
public class POIResultDto
|
public class POIResultDto
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
using BMA.EHR.Application;
|
using BMA.EHR.Application;
|
||||||
using BMA.EHR.Command.Service;
|
using BMA.EHR.Leave.Service;
|
||||||
using BMA.EHR.Domain.Middlewares;
|
using BMA.EHR.Domain.Middlewares;
|
||||||
using BMA.EHR.Infrastructure;
|
using BMA.EHR.Infrastructure;
|
||||||
using BMA.EHR.Infrastructure.Persistence;
|
using BMA.EHR.Infrastructure.Persistence;
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue