Approve + Reject ลงเวลากรณีพิเศษ
This commit is contained in:
parent
a8379303f9
commit
5ae67ee02e
3 changed files with 130 additions and 1 deletions
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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; }
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,7 @@
|
|||
namespace BMA.EHR.Leave.Service.DTOs.AdditionalCheck
|
||||
{
|
||||
public class RejectRequestDto
|
||||
{
|
||||
public string Reason { get; set; }
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue