Add
LV1_022 - ประวัติการยื่นขอลงเวลาพิเศษ (USER) Edit LV1_007 - ประวัติการลงเวลา (USER)
This commit is contained in:
parent
130cbb8042
commit
32686c3e0b
4 changed files with 135 additions and 4 deletions
|
|
@ -1,6 +1,7 @@
|
|||
using BMA.EHR.Application.Common.Interfaces;
|
||||
using BMA.EHR.Application.Messaging;
|
||||
using BMA.EHR.Domain.Models.Leave.TimeAttendants;
|
||||
using BMA.EHR.Domain.Shared;
|
||||
using Microsoft.AspNetCore.Http;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using Microsoft.Extensions.Configuration;
|
||||
|
|
@ -56,6 +57,23 @@ namespace BMA.EHR.Application.Repositories.Leaves.TimeAttendants
|
|||
|
||||
#region " Methods "
|
||||
|
||||
public async Task<List<AdditionalCheckRequest>> GetAdditionalCheckRequestsByUserId(Guid keycloakId, int year, int month)
|
||||
{
|
||||
try
|
||||
{
|
||||
var data = await _dbContext.Set<AdditionalCheckRequest>().AsQueryable()
|
||||
.Where(x => x.KeycloakUserId == keycloakId)
|
||||
.Where(x => (x.CheckDate.Year == year && x.CheckDate.Month == month))
|
||||
.ToListAsync();
|
||||
|
||||
return data;
|
||||
}
|
||||
catch
|
||||
{
|
||||
throw;
|
||||
}
|
||||
}
|
||||
|
||||
public async Task<List<AdditionalCheckRequest>> GetAdditionalCheckRequests(int year, int month)
|
||||
{
|
||||
try
|
||||
|
|
|
|||
|
|
@ -536,8 +536,10 @@ namespace BMA.EHR.Leave.Service.Controllers
|
|||
"LATE" :
|
||||
"NORMAL",
|
||||
|
||||
EditReason = d.EditReason ?? "",
|
||||
EditStatus = d.EditStatus ?? ""
|
||||
IsEdit = (d.EditStatus != null || d.EditStatus != "")
|
||||
|
||||
//EditReason = d.EditReason ?? "",
|
||||
//EditStatus = d.EditStatus ?? ""
|
||||
|
||||
})
|
||||
.ToList();
|
||||
|
|
@ -1246,6 +1248,88 @@ namespace BMA.EHR.Leave.Service.Controllers
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// LV1_022 - ประวัติการยื่นขอลงเวลาพิเศษ (USER)
|
||||
/// </summary>
|
||||
/// <returns>
|
||||
/// </returns>
|
||||
/// <response code="200">เมื่อทำรายการสำเร็จ</response>
|
||||
/// <response code="401">ไม่ได้ Login เข้าระบบ</response>
|
||||
/// <response code="500">เมื่อเกิดข้อผิดพลาดในการทำงาน</response>
|
||||
[HttpGet("edit/history")]
|
||||
[ProducesResponseType(StatusCodes.Status200OK)]
|
||||
[ProducesResponseType(StatusCodes.Status401Unauthorized)]
|
||||
[ProducesResponseType(StatusCodes.Status500InternalServerError)]
|
||||
public async Task<ActionResult<ResponseObject>> GetAdditionalCheckRequestHistoryAsync([Required] int year, [Required] int month, [Required] int page = 1, [Required] int pageSize = 10, string keyword = "")
|
||||
{
|
||||
var userId = UserId == null ? Guid.Empty : Guid.Parse(UserId);
|
||||
|
||||
var rawData = await _additionalCheckRequestRepository.GetAdditionalCheckRequestsByUserId(userId, year, month);
|
||||
|
||||
var getDefaultRound = await _dutyTimeRepository.GetDefaultAsync();
|
||||
if (getDefaultRound == null)
|
||||
{
|
||||
return Error("ไม่พบรอบลงเวลา Default", StatusCodes.Status404NotFound);
|
||||
}
|
||||
|
||||
var result = new List<GetAdditionalCheckRequestHistoryDto>();
|
||||
|
||||
foreach (var data in rawData)
|
||||
{
|
||||
var profile = await _userProfileRepository.GetProfileByKeycloakIdAsync(data.KeycloakUserId);
|
||||
if (profile == null)
|
||||
{
|
||||
return Error(GlobalMessages.DataNotFound, StatusCodes.Status404NotFound);
|
||||
}
|
||||
var userRound = await _dutyTimeRepository.GetByIdAsync(profile.DutyTimeId ?? Guid.Empty);
|
||||
var checkInData = await _userTimeStampRepository.GetTimestampByDateAsync(data.KeycloakUserId, data.CheckDate);
|
||||
|
||||
var duty = userRound ?? getDefaultRound;
|
||||
|
||||
// create result object to return
|
||||
var resObj = new GetAdditionalCheckRequestHistoryDto
|
||||
{
|
||||
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"),
|
||||
|
||||
CheckInStatus = checkInData == null ? null :
|
||||
DateTime.Parse(checkInData.CheckIn.ToString("yyyy-MM-dd HH:mm")) >
|
||||
DateTime.Parse($"{checkInData.CheckIn.Date.ToString("yyyy-MM-dd")} {duty.StartTimeMorning}") ?
|
||||
"LATE" :
|
||||
"NORMAL",
|
||||
|
||||
CheckOutStatus = checkInData == null ? null :
|
||||
checkInData.CheckOut == null ? null :
|
||||
DateTime.Parse(checkInData.CheckOut.Value.ToString("yyyy-MM-dd HH:mm")) <
|
||||
DateTime.Parse($"{checkInData.CheckIn.Date.ToString("yyyy-MM-dd")} {duty.EndTimeAfternoon}") ?
|
||||
"LATE" :
|
||||
"NORMAL",
|
||||
|
||||
CheckInLocation = checkInData == null ? "" : checkInData.CheckInPOI,
|
||||
CheckOutLocation = checkInData == null ? "" : checkInData.CheckOutPOI ?? "",
|
||||
|
||||
EditReason = data.Comment ?? "",
|
||||
EditStatus = data.Status,
|
||||
|
||||
};
|
||||
|
||||
result.Add(resObj);
|
||||
}
|
||||
|
||||
if (keyword != "")
|
||||
{
|
||||
result = result.Where(x => x.EditReason!.Contains(keyword)).ToList();
|
||||
}
|
||||
|
||||
var pageResult = result.Skip((page - 1) * pageSize).Take(pageSize)
|
||||
.ToList();
|
||||
|
||||
return Success(new { data = pageResult, total = result.Count });
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#endregion
|
||||
|
|
|
|||
|
|
@ -0,0 +1,27 @@
|
|||
namespace BMA.EHR.Leave.Service.DTOs.AdditionalCheck
|
||||
{
|
||||
public class GetAdditionalCheckRequestHistoryDto
|
||||
{
|
||||
public Guid Id { get; set; }
|
||||
|
||||
public DateTime CheckInDate { get; set; }
|
||||
|
||||
public DateTime CheckOutDate { get; set; }
|
||||
|
||||
public string CheckInTime { get; set; }
|
||||
|
||||
public string CheckOutTime { get; set; }
|
||||
|
||||
public string CheckInLocation { get; set; }
|
||||
|
||||
public string CheckOutLocation { get; set; }
|
||||
|
||||
public string? CheckInStatus { get; set; }
|
||||
|
||||
public string? CheckOutStatus { get; set; }
|
||||
|
||||
public string? EditReason { get; set; }
|
||||
|
||||
public string? EditStatus { get; set; }
|
||||
}
|
||||
}
|
||||
|
|
@ -20,8 +20,10 @@
|
|||
|
||||
public string? CheckOutStatus { get; set; } = string.Empty;
|
||||
|
||||
public string EditStatus { get; set; } = string.Empty;
|
||||
//public string EditStatus { get; set; } = string.Empty;
|
||||
|
||||
public string EditReason { get; set; } = string.Empty;
|
||||
//public string EditReason { get; set; } = string.Empty;
|
||||
|
||||
public bool IsEdit { get; set; } = false;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue