Approve + Reject ลงเวลากรณีพิเศษ

This commit is contained in:
Suphonchai Phoonsawat 2023-11-24 13:05:22 +07:00
parent a8379303f9
commit 5ae67ee02e
3 changed files with 130 additions and 1 deletions

View file

@ -1,4 +1,5 @@
using Amazon.S3.Model.Internal.MarshallTransformations;
using Amazon.S3.Model;
using Amazon.S3.Model.Internal.MarshallTransformations;
using BMA.EHR.Application.Repositories;
using BMA.EHR.Application.Repositories.Leaves.TimeAttendants;
using BMA.EHR.Domain.Common;
@ -957,6 +958,112 @@ namespace BMA.EHR.Leave.Service.Controllers
return Success(new { data = pageResult, total = result.Count });
}
/// <summary>
/// LV1_019 - อนุมัติลงเวลากรณีพิเศษ (ADMIN)
/// </summary>
/// <returns>
/// </returns>
/// <response code="200">เมื่อทำรายการสำเร็จ</response>
/// <response code="401">ไม่ได้ Login เข้าระบบ</response>
/// <response code="500">เมื่อเกิดข้อผิดพลาดในการทำงาน</response>
[HttpPut("admin/edit/approve/{id:guid}")]
public async Task<ActionResult<ResponseObject>> ApproveRequestAsync(Guid id, [FromBody] ApproveRequestDto req)
{
if (req.Reason == null || req.Reason == string.Empty)
{
return Error("กรุณากรอกเหตุผล", (int)StatusCodes.Status400BadRequest);
}
var requestData = await _additionalCheckRequestRepository.GetByIdAsync(id);
if (requestData == null)
{
return Error(GlobalMessages.DataNotFound, (int)StatusCodes.Status404NotFound);
}
requestData.Status = "APPROVE";
requestData.Comment = req.Reason;
await _additionalCheckRequestRepository.UpdateAsync(requestData);
// change user timestamp
var processTimeStamp = await _processUserTimeStampRepository.GetTimestampByDateAsync(requestData.KeycloakUserId, requestData.CheckDate.Date);
if (processTimeStamp == null)
{
processTimeStamp = new ProcessUserTimeStamp
{
KeycloakUserId = requestData.KeycloakUserId,
CheckIn = DateTime.Parse($"{requestData.CheckDate.Date.ToString("yyyy-MM-dd")} {req.CheckInTime}"),
CheckOut = DateTime.Parse($"{requestData.CheckDate.Date.ToString("yyyy-MM-dd")} {req.CheckOutTime}"),
CheckInRemark = req.Reason,
CheckOutRemark = req.Reason,
CheckInLat = 0,
CheckInLon = 0,
CheckOutLat = 0,
CheckOutLon = 0,
CheckInPOI = "ลงเวลากรณีพิเศษ",
CheckOutPOI = "ลงเวลากรณีพิเศษ",
};
await _processUserTimeStampRepository.AddAsync(processTimeStamp);
}
else
{
if (requestData.CheckInEdit)
{
processTimeStamp.CheckIn = DateTime.Parse($"{requestData.CheckDate.Date.ToString("yyyy-MM-dd")} {req.CheckInTime}");
processTimeStamp.CheckInRemark = req.Reason;
processTimeStamp.CheckInLat = 0;
processTimeStamp.CheckInLon = 0;
processTimeStamp.CheckInPOI = "ลงเวลากรณีพิเศษ";
}
if (requestData.CheckOutEdit)
{
processTimeStamp.CheckOut = DateTime.Parse($"{requestData.CheckDate.Date.ToString("yyyy-MM-dd")} {req.CheckOutTime}");
processTimeStamp.CheckOutRemark = req.Reason;
processTimeStamp.CheckOutLat = 0;
processTimeStamp.CheckOutLon = 0;
processTimeStamp.CheckOutPOI = "ลงเวลากรณีพิเศษ";
}
await _processUserTimeStampRepository.UpdateAsync(processTimeStamp);
}
return Success();
}
/// <summary>
/// LV1_020 - ไม่อนุมัติลงเวลากรณีพิเศษ (ADMIN)
/// </summary>
/// <returns>
/// </returns>
/// <response code="200">เมื่อทำรายการสำเร็จ</response>
/// <response code="401">ไม่ได้ Login เข้าระบบ</response>
/// <response code="500">เมื่อเกิดข้อผิดพลาดในการทำงาน</response>
[HttpPut("admin/edit/reject/{id:guid}")]
public async Task<ActionResult<ResponseObject>> RejectRequestAsync(Guid id, [FromBody] RejectRequestDto req)
{
if (req.Reason == null || req.Reason == string.Empty)
{
return Error("กรุณากรอกเหตุผล", (int)StatusCodes.Status400BadRequest);
}
var requestData = await _additionalCheckRequestRepository.GetByIdAsync(id);
if (requestData == null)
{
return Error(GlobalMessages.DataNotFound, (int)StatusCodes.Status404NotFound);
}
requestData.Status = "REJECT";
requestData.Comment = req.Reason;
await _additionalCheckRequestRepository.UpdateAsync(requestData);
return Success();
}
#endregion
#endregion

View file

@ -0,0 +1,15 @@
namespace BMA.EHR.Leave.Service.DTOs.AdditionalCheck
{
public class ApproveRequestDto
{
public string CheckInTime { get; set; }
public string CheckOutTime { get; set; }
public string CheckInStatus { get; set; }
public string CheckOutStatus { get; set; }
public string Reason { get; set; }
}
}

View file

@ -0,0 +1,7 @@
namespace BMA.EHR.Leave.Service.DTOs.AdditionalCheck
{
public class RejectRequestDto
{
public string Reason { get; set; }
}
}