add API #1600
All checks were successful
Build & Deploy Leave Service / build (push) Successful in 1m58s
All checks were successful
Build & Deploy Leave Service / build (push) Successful in 1m58s
This commit is contained in:
parent
a2dc4b5b82
commit
ae417e4777
2 changed files with 159 additions and 0 deletions
|
|
@ -3818,6 +3818,148 @@ namespace BMA.EHR.Leave.Service.Controllers
|
|||
return Success();
|
||||
}
|
||||
|
||||
|
||||
[HttpPut("admin/edit/approve-list")]
|
||||
[ProducesResponseType(StatusCodes.Status200OK)]
|
||||
[ProducesResponseType(StatusCodes.Status401Unauthorized)]
|
||||
[ProducesResponseType(StatusCodes.Status500InternalServerError)]
|
||||
public async Task<ActionResult<ResponseObject>> ApproveRequestListAsync([FromBody] List<ApproveRequestListItemDto> reqs)
|
||||
{
|
||||
var getPermission = await _permission.GetPermissionAPIAsync("UPDATE", "SYS_CHECKIN_SPECIAL");
|
||||
var jsonData = JsonConvert.DeserializeObject<JObject>(getPermission);
|
||||
if (jsonData["status"]?.ToString() != "200")
|
||||
{
|
||||
return Error(jsonData["message"]?.ToString(), StatusCodes.Status403Forbidden);
|
||||
}
|
||||
|
||||
foreach (var req in reqs)
|
||||
{
|
||||
if (req.Reason == null || req.Reason == string.Empty)
|
||||
{
|
||||
return Error("กรุณากรอกเหตุผล", StatusCodes.Status400BadRequest);
|
||||
}
|
||||
|
||||
var requestData = await _additionalCheckRequestRepository.GetByIdAsync(req.RecId);
|
||||
if (requestData == null)
|
||||
{
|
||||
return Error(GlobalMessages.DataNotFound, 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);
|
||||
|
||||
var profile = await _userProfileRepository.GetProfileByKeycloakIdNew2Async(requestData.KeycloakUserId, AccessToken);
|
||||
|
||||
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 = "",
|
||||
CheckInStatus = req.CheckInStatus,
|
||||
CheckOutStatus = req.CheckOutStatus,
|
||||
|
||||
Prefix = profile.Prefix,
|
||||
FirstName = profile.FirstName,
|
||||
LastName = profile.LastName,
|
||||
|
||||
// Add ข้อมูลจาก profile
|
||||
CitizenId = profile.CitizenId,
|
||||
ProfileType = profile.ProfileType,
|
||||
Root = profile.Root,
|
||||
RootId = profile.RootId,
|
||||
Child1 = profile.Child1,
|
||||
Child1Id = profile.Child1Id,
|
||||
Child2 = profile.Child2,
|
||||
Child2Id = profile.Child2Id,
|
||||
Child3 = profile.Child3,
|
||||
Child3Id = profile.Child3Id,
|
||||
Child4 = profile.Child4,
|
||||
Child4Id = profile.Child4Id,
|
||||
Gender = profile.Gender,
|
||||
ProfileId = profile.Id,
|
||||
|
||||
|
||||
};
|
||||
|
||||
processTimeStamp.EditStatus = "APPROVE";
|
||||
processTimeStamp.EditReason = req.Reason;
|
||||
|
||||
if (requestData.CheckInEdit)
|
||||
{
|
||||
processTimeStamp.CheckInPOI = requestData.POI ?? "";
|
||||
processTimeStamp.CheckInLat = requestData.Latitude ?? 0;
|
||||
processTimeStamp.CheckInLon = requestData.Longitude ?? 0;
|
||||
}
|
||||
|
||||
if (requestData.CheckOutEdit)
|
||||
{
|
||||
processTimeStamp.CheckOutPOI = requestData.POI ?? "";
|
||||
processTimeStamp.CheckOutLat = requestData.Latitude ?? 0;
|
||||
processTimeStamp.CheckOutLon = requestData.Longitude ?? 0;
|
||||
}
|
||||
|
||||
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 = "ลงเวลากรณีพิเศษ";
|
||||
processTimeStamp.CheckInStatus = req.CheckInStatus;
|
||||
|
||||
processTimeStamp.CheckInPOI = requestData.POI ?? "";
|
||||
processTimeStamp.CheckInLat = requestData.Latitude ?? 0;
|
||||
processTimeStamp.CheckInLon = requestData.Longitude ?? 0;
|
||||
}
|
||||
|
||||
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 = "ลงเวลากรณีพิเศษ";
|
||||
processTimeStamp.CheckOutStatus = req.CheckOutStatus;
|
||||
|
||||
processTimeStamp.CheckOutPOI = requestData.POI ?? "";
|
||||
processTimeStamp.CheckOutLat = requestData.Latitude ?? 0;
|
||||
processTimeStamp.CheckOutLon = requestData.Longitude ?? 0;
|
||||
}
|
||||
|
||||
|
||||
processTimeStamp.EditStatus = "APPROVE";
|
||||
processTimeStamp.EditReason = req.Reason;
|
||||
|
||||
await _processUserTimeStampRepository.UpdateAsync(processTimeStamp);
|
||||
}
|
||||
|
||||
var recvId = new List<Guid> { profile.Id };
|
||||
await _notificationRepository.PushNotificationsAsync(recvId.ToArray(), "ลงเวลากรณีพิเศษ",
|
||||
"การขอลงเวลากรณีพิเศษของคุณได้รับการอนุมัติ", "", "", true, false);
|
||||
}
|
||||
return Success();
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// LV1_020 - ไม่อนุมัติลงเวลากรณีพิเศษ (ADMIN)
|
||||
/// </summary>
|
||||
|
|
|
|||
|
|
@ -12,4 +12,21 @@
|
|||
|
||||
public string Reason { get; set; }
|
||||
}
|
||||
|
||||
public class ApproveRequestListItemDto
|
||||
{
|
||||
/// <summary>
|
||||
/// id ของ record รายการคำขอลงเวลาพิเศษนั้นๆ
|
||||
/// </summary>
|
||||
public Guid RecId { get; set; }
|
||||
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; }
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue