- LV2_004 - รายละเอียดการลา (USER)
- LV2_010 - รายการลา (ADMIN)
This commit is contained in:
Suphonchai Phoonsawat 2023-11-30 10:15:44 +07:00
parent dd4a409855
commit 0109cc5d6d
5 changed files with 349 additions and 1 deletions

View file

@ -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
}