add
- LV2_004 - รายละเอียดการลา (USER) - LV2_010 - รายการลา (ADMIN)
This commit is contained in:
parent
dd4a409855
commit
0109cc5d6d
5 changed files with 349 additions and 1 deletions
|
|
@ -9,6 +9,8 @@ using BMA.EHR.Infrastructure.Persistence;
|
|||
using BMA.EHR.Leave.Service.DTOs.LeaveRequest;
|
||||
using Microsoft.AspNetCore.Authorization;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
using Microsoft.AspNetCore.Mvc.Routing;
|
||||
using Sentry;
|
||||
using Swashbuckle.AspNetCore.Annotations;
|
||||
using System.Security.Claims;
|
||||
|
||||
|
|
@ -436,6 +438,149 @@ namespace BMA.EHR.Leave.Service.Controllers
|
|||
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// LV2_004 - รายละเอียดการลา (USER)
|
||||
/// </summary>
|
||||
/// <returns>
|
||||
/// </returns>
|
||||
/// <response code="200">เมื่อทำรายการสำเร็จ</response>
|
||||
/// <response code="401">ไม่ได้ Login เข้าระบบ</response>
|
||||
/// <response code="500">เมื่อเกิดข้อผิดพลาดในการทำงาน</response>
|
||||
[HttpGet("user/{id:guid}")]
|
||||
[ProducesResponseType(StatusCodes.Status200OK)]
|
||||
[ProducesResponseType(StatusCodes.Status401Unauthorized)]
|
||||
[ProducesResponseType(StatusCodes.Status500InternalServerError)]
|
||||
public async Task<ActionResult<ResponseObject>> GetLeaveRequestByIdAsync(Guid id)
|
||||
{
|
||||
var rawData = await _leaveRequestRepository.GetByIdAsync(id);
|
||||
|
||||
var thisYear = DateTime.Now.Year;
|
||||
|
||||
if (rawData == null)
|
||||
{
|
||||
return Error(GlobalMessages.DataNotFound, StatusCodes.Status404NotFound);
|
||||
}
|
||||
|
||||
var profile = await _userProfileRepository.GetProfileByKeycloakIdAsync(rawData.KeycloakUserId);
|
||||
|
||||
if (profile == null)
|
||||
{
|
||||
return Error(GlobalMessages.DataNotFound, StatusCodes.Status404NotFound);
|
||||
}
|
||||
|
||||
var lastSalary = profile.Salaries.OrderByDescending(x => x.Order).FirstOrDefault();
|
||||
var lastSalaryAmount = lastSalary == null ? 0 : lastSalary.Amount ?? 0;
|
||||
|
||||
var lastLeaveRequest = await _leaveRequestRepository.GetLastLeaveRequestByTypeForUserAsync(rawData.KeycloakUserId, rawData.Type.Id);
|
||||
|
||||
var result = new GetLeaveRequestByIdDto
|
||||
{
|
||||
Id = rawData.Id,
|
||||
LeaveTypeName = rawData.Type.Name,
|
||||
LeaveTypeId = rawData.Type.Id,
|
||||
FullName = $"{profile.Prefix.Name}{profile.FirstName} {profile.LastName}",
|
||||
DateSendLeave = rawData.CreatedAt,
|
||||
Status = rawData.LeaveStatus,
|
||||
LeaveStartDate = rawData.LeaveStartDate,
|
||||
LeaveEndDate = rawData.LeaveEndDate,
|
||||
LeaveWrote = rawData.LeaveWrote,
|
||||
LeaveAddress = rawData.LeaveAddress,
|
||||
LeaveNumber = rawData.LeaveNumber,
|
||||
LeaveDetail = rawData.LeaveDetail,
|
||||
LeaveDocument = await _minIOService.ImagesPath(rawData.LeaveDocument.Id),
|
||||
LeaveDraftDocument = await _minIOService.ImagesPath(rawData.LeaveDraftDocument.Id),
|
||||
|
||||
LeaveLastStart = lastLeaveRequest == null ? null : lastLeaveRequest.LeaveStartDate,
|
||||
LeaveLastEnd = lastLeaveRequest == null ? null : lastLeaveRequest.LeaveEndDate,
|
||||
LeaveTotal = rawData.LeaveStartDate.DiffDay(rawData.LeaveEndDate),
|
||||
LeaveBirthDate = profile.BirthDate,
|
||||
LeaveGovernmentDate = profile.DateAppoint == null ? null : profile.DateAppoint.Value,
|
||||
|
||||
LeaveSalary = lastSalary == null ? 0 : lastSalaryAmount,
|
||||
LeaveSalaryText = lastSalary == null ? "" : ((int)lastSalaryAmount).ToThaiBahtText(false),
|
||||
|
||||
WifeDayName = rawData.WifeDayName,
|
||||
WifeDayDateBorn = rawData.WifeDayDateBorn,
|
||||
RestDayOldTotal = rawData.RestDayOldTotal,
|
||||
RestDayCurrentTotal = rawData.RestDayCurrentTotal,
|
||||
OrdainDayStatus = rawData.OrdainDayStatus,
|
||||
OrdainDayLocationName = rawData.OrdainDayLocationName,
|
||||
OrdainDayLocationAddress = rawData.OrdainDayLocationAddress,
|
||||
OrdainDayLocationNumber = rawData.OrdainDayLocationNumber,
|
||||
OrdainDayOrdination = rawData.OrdainDayOrdination,
|
||||
OrdainDayBuddhistLentName = rawData.OrdainDayBuddhistLentName,
|
||||
OrdainDayBuddhistLentAddress = rawData.OrdainDayBuddhistLentAddress,
|
||||
HajjDayStatus = rawData.HajjDayStatus,
|
||||
|
||||
AbsentDaySummon = rawData.AbsentDaySummon,
|
||||
AbsentDayLocation = rawData.AbsentDayLocation,
|
||||
AbsentDayRegistorDate = rawData.AbsentDayRegistorDate,
|
||||
AbsentDayGetIn = rawData.AbsentDayGetIn,
|
||||
AbsentDayAt = rawData.AbsentDayAt,
|
||||
|
||||
StudyDaySubject = rawData.StudyDaySubject,
|
||||
StudyDayDegreeLevel = rawData.StudyDayDegreeLevel,
|
||||
StudyDayUniversityName = rawData.StudyDayUniversityName,
|
||||
StudyDayTrainingSubject = rawData.StudyDayTrainingSubject,
|
||||
StudyDayTrainingName = rawData.StudyDayTrainingName,
|
||||
StudyDayCountry = rawData.StudyDayCountry,
|
||||
StudyDayScholarship = rawData.StudyDayScholarship,
|
||||
|
||||
CoupleDayName = rawData.CoupleDayName,
|
||||
CoupleDayPosition = rawData.CoupleDayPosition,
|
||||
CoupleDayLevel = rawData.CoupleDayLevel,
|
||||
CoupleDayLevelCountry = rawData.CoupleDayLevelCountry,
|
||||
CoupleDayCountryHistory = rawData.CoupleDayCountryHistory,
|
||||
CoupleDayTotalHistory = rawData.CoupleDayTotalHistory,
|
||||
CoupleDayStartDateHistory = rawData.CoupleDayStartDateHistory,
|
||||
CoupleDayEndDateHistory = rawData.CoupleDayEndDateHistory,
|
||||
CoupleDaySumTotalHistory = rawData.CoupleDaySumTotalHistory,
|
||||
|
||||
};
|
||||
|
||||
return Success(result);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// LV2_010 - รายการลา (ADMIN)
|
||||
/// </summary>
|
||||
/// <returns>
|
||||
/// </returns>
|
||||
/// <response code="200">เมื่อทำรายการสำเร็จ</response>
|
||||
/// <response code="401">ไม่ได้ Login เข้าระบบ</response>
|
||||
/// <response code="500">เมื่อเกิดข้อผิดพลาดในการทำงาน</response>
|
||||
[HttpPost("admin")]
|
||||
[ProducesResponseType(StatusCodes.Status200OK)]
|
||||
[ProducesResponseType(StatusCodes.Status401Unauthorized)]
|
||||
[ProducesResponseType(StatusCodes.Status500InternalServerError)]
|
||||
public async Task<ActionResult<ResponseObject>> GetLeaveRequestForAdminAsync([FromBody] GetLeaveRequestForAdminDto req)
|
||||
{
|
||||
var rawData = await _leaveRequestRepository.GetLeaveRequestForAdminAsync(req.Year, req.Type, req.Status);
|
||||
|
||||
var result = new List<GetLeaveRequestForAdminResultDto>();
|
||||
|
||||
foreach (var item in rawData)
|
||||
{
|
||||
var profile = await _userProfileRepository.GetProfileByKeycloakIdAsync(item.KeycloakUserId);
|
||||
var res = new GetLeaveRequestForAdminResultDto
|
||||
{
|
||||
Id = item.Id,
|
||||
LeaveTypeId = item.Type.Id,
|
||||
LeaveTypeName = item.Type.Name,
|
||||
FullName = $"{profile.Prefix.Name}{profile.FirstName} {profile.LastName}",
|
||||
DateSendLeave = item.CreatedAt.Date,
|
||||
Status = item.LeaveStatus
|
||||
};
|
||||
result.Add(res);
|
||||
}
|
||||
|
||||
if (req.Keyword != "")
|
||||
result = result.Where(x => x.FullName.Contains(req.Keyword)).ToList();
|
||||
|
||||
var pageResult = result.Skip((req.Page - 1) * req.PageSize).Take(req.PageSize).ToList();
|
||||
|
||||
return Success(new { data = pageResult, total = result.Count });
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue