api ลา 04,05 และ 11
This commit is contained in:
parent
cffb53c1f5
commit
e130ce00d7
7 changed files with 198 additions and 4 deletions
|
|
@ -58,6 +58,35 @@ namespace BMA.EHR.Application.Repositories.Leaves.LeaveRequests
|
|||
|
||||
#region " Methods "
|
||||
|
||||
public async Task<List<LeaveRequest>> GetLeaveRequestByYearAsync(int year)
|
||||
{
|
||||
var data = await _dbContext.Set<LeaveRequest>().AsQueryable()
|
||||
.Include(x => x.Type)
|
||||
.Where(x => x.LeaveStartDate.Year == year)
|
||||
.ToListAsync();
|
||||
|
||||
return data;
|
||||
}
|
||||
|
||||
|
||||
public async Task<List<LeaveRequest>> GetLeaveRequestByUserIdAsync(Guid keycloakUserId, int year, Guid type, string status)
|
||||
{
|
||||
var rawData = _dbContext.Set<LeaveRequest>().AsQueryable()
|
||||
.Include(x => x.Type)
|
||||
.Where(x => x.KeycloakUserId == keycloakUserId);
|
||||
|
||||
if (year != 0)
|
||||
rawData = rawData.Where(x => x.LeaveStartDate.Year == year);
|
||||
|
||||
if (type != Guid.Empty)
|
||||
rawData = rawData.Where(x => x.Type.Id == type);
|
||||
|
||||
if (status.Trim().ToUpper() != "ALL")
|
||||
rawData = rawData.Where(x => x.LeaveStatus == status);
|
||||
|
||||
return await rawData.ToListAsync();
|
||||
}
|
||||
|
||||
public async Task<int> GetRestDayTotalByYearForUserAsync(Guid keycloakUserId, int year)
|
||||
{
|
||||
var leaveType = await _dbContext.Set<LeaveType>().AsQueryable().FirstOrDefaultAsync(l => l.Code.Trim().ToUpper() == "LV-005");
|
||||
|
|
|
|||
|
|
@ -124,7 +124,8 @@ namespace BMA.EHR.Leave.Service.Controllers
|
|||
LeaveAddress = req.LeaveAddress ?? "",
|
||||
LeaveNumber = req.LeaveNumber ?? "",
|
||||
LeaveTotal = req.LeaveStartDate.DiffDay(req.LeaveEndDate),
|
||||
LeaveSalaryText = req.LeaveSalaryText ?? ""
|
||||
LeaveSalaryText = req.LeaveSalaryText ?? "",
|
||||
LeaveStatus = "NEW"
|
||||
};
|
||||
|
||||
// get leave last
|
||||
|
|
@ -343,6 +344,99 @@ namespace BMA.EHR.Leave.Service.Controllers
|
|||
return Success(result);
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// LV2_004 - รายการลา Calendar (USER/ADMIN)
|
||||
/// </summary>
|
||||
/// <returns>
|
||||
/// </returns>
|
||||
/// <response code="200">เมื่อทำรายการสำเร็จ</response>
|
||||
/// <response code="401">ไม่ได้ Login เข้าระบบ</response>
|
||||
/// <response code="500">เมื่อเกิดข้อผิดพลาดในการทำงาน</response>
|
||||
[HttpPost("user/calendar")]
|
||||
[ProducesResponseType(StatusCodes.Status200OK)]
|
||||
[ProducesResponseType(StatusCodes.Status401Unauthorized)]
|
||||
[ProducesResponseType(StatusCodes.Status500InternalServerError)]
|
||||
public async Task<ActionResult<ResponseObject>> GetLeaveRequestCalendarAsync([FromBody] GetLeaveRequestCalendarDto req)
|
||||
{
|
||||
var thisYear = DateTime.Now.Year;
|
||||
var data = await _leaveRequestRepository.GetLeaveRequestByYearAsync(thisYear);
|
||||
|
||||
var result = new List<GetLeaveRequestCalendarResultDto>();
|
||||
|
||||
foreach (var item in data)
|
||||
{
|
||||
var profile = await _userProfileRepository.GetProfileByKeycloakIdAsync(item.KeycloakUserId);
|
||||
|
||||
var resData = new GetLeaveRequestCalendarResultDto
|
||||
{
|
||||
Id = item.Id,
|
||||
LeaveTypeName = item.Type.Name,
|
||||
LeaveTypeId = item.Type.Id,
|
||||
DateSendLeave = item.CreatedAt.Date,
|
||||
Status = item.LeaveStatus,
|
||||
FullName = $"{profile.Prefix.Name}{profile.FirstName} {profile.LastName}",
|
||||
LeaveStartDate = item.LeaveStartDate,
|
||||
LeaveEndDate = item.LeaveEndDate,
|
||||
};
|
||||
|
||||
result.Add(resData);
|
||||
}
|
||||
|
||||
return Success(result);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// LV2_005 - รายการลา Table (USER)
|
||||
/// </summary>
|
||||
/// <returns>
|
||||
/// </returns>
|
||||
/// <response code="200">เมื่อทำรายการสำเร็จ</response>
|
||||
/// <response code="401">ไม่ได้ Login เข้าระบบ</response>
|
||||
/// <response code="500">เมื่อเกิดข้อผิดพลาดในการทำงาน</response>
|
||||
[HttpPost("user/table")]
|
||||
[ProducesResponseType(StatusCodes.Status200OK)]
|
||||
[ProducesResponseType(StatusCodes.Status401Unauthorized)]
|
||||
[ProducesResponseType(StatusCodes.Status500InternalServerError)]
|
||||
public async Task<ActionResult<ResponseObject>> GetLeaveRequestTableAsync([FromBody] GetLeaveRequestTableDto req)
|
||||
{
|
||||
var userId = UserId == null ? Guid.Empty : Guid.Parse(UserId);
|
||||
|
||||
var profile = await _userProfileRepository.GetProfileByKeycloakIdAsync(userId);
|
||||
if (profile == null)
|
||||
{
|
||||
return Error(GlobalMessages.DataNotFound, StatusCodes.Status404NotFound);
|
||||
}
|
||||
|
||||
var rawData = await _leaveRequestRepository.GetLeaveRequestByUserIdAsync(userId, req.Year, req.Type, req.Status);
|
||||
|
||||
var result = new List<GetLeaveRequestTableResultDto>();
|
||||
|
||||
foreach (var item in rawData)
|
||||
{
|
||||
var res = new GetLeaveRequestTableResultDto
|
||||
{
|
||||
Id = item.Id,
|
||||
LeaveTypeId = item.Type.Id,
|
||||
LeaveTypeName = item.Type.Name,
|
||||
FullName = $"{profile.Prefix.Name}{profile.FirstName} {profile.LastName}",
|
||||
DateSendLeave = item.CreatedAt.Date,
|
||||
IsDelete = item.LeaveStatus == "DELETE",
|
||||
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
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -9,7 +9,7 @@ using System.Security.Claims;
|
|||
|
||||
namespace BMA.EHR.Leave.Service.Controllers
|
||||
{
|
||||
[Route("api/v{version:apiVersion}/leave-types")]
|
||||
[Route("api/v{version:apiVersion}/leave")]
|
||||
[ApiVersion("1.0")]
|
||||
[ApiController]
|
||||
[Produces("application/json")]
|
||||
|
|
@ -71,14 +71,14 @@ namespace BMA.EHR.Leave.Service.Controllers
|
|||
#region " Methods "
|
||||
|
||||
/// <summary>
|
||||
/// List รายการประเภทการลา
|
||||
/// LV2_011 - รายการประเภทการลา (ADMIN)
|
||||
/// </summary>
|
||||
/// <returns>
|
||||
/// </returns>
|
||||
/// <response code="200">เมื่อทำรายการสำเร็จ</response>
|
||||
/// <response code="401">ไม่ได้ Login เข้าระบบ</response>
|
||||
/// <response code="500">เมื่อเกิดข้อผิดพลาดในการทำงาน</response>
|
||||
[HttpPost]
|
||||
[HttpGet("type")]
|
||||
[ProducesResponseType(StatusCodes.Status200OK)]
|
||||
[ProducesResponseType(StatusCodes.Status401Unauthorized)]
|
||||
[ProducesResponseType(StatusCodes.Status500InternalServerError)]
|
||||
|
|
|
|||
|
|
@ -0,0 +1,7 @@
|
|||
namespace BMA.EHR.Leave.Service.DTOs.LeaveRequest
|
||||
{
|
||||
public class GetLeaveRequestCalendarDto
|
||||
{
|
||||
public int Year { get; set; } = DateTime.Now.Year;
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,21 @@
|
|||
namespace BMA.EHR.Leave.Service.DTOs.LeaveRequest
|
||||
{
|
||||
public class GetLeaveRequestCalendarResultDto
|
||||
{
|
||||
public Guid Id { get; set; }
|
||||
|
||||
public string LeaveTypeName { get; set; }
|
||||
|
||||
public Guid LeaveTypeId { get; set; }
|
||||
|
||||
public DateTime DateSendLeave { get; set; }
|
||||
|
||||
public string Status { get; set; }
|
||||
|
||||
public string FullName { get; set; }
|
||||
|
||||
public DateTime LeaveStartDate { get; set; }
|
||||
|
||||
public DateTime LeaveEndDate { get; set; }
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,24 @@
|
|||
using System.ComponentModel.DataAnnotations;
|
||||
|
||||
namespace BMA.EHR.Leave.Service.DTOs.LeaveRequest
|
||||
{
|
||||
public class GetLeaveRequestTableDto
|
||||
{
|
||||
[Required]
|
||||
public int Year { get; set; } = 0;
|
||||
|
||||
[Required]
|
||||
public Guid Type { get; set; } = Guid.Empty;
|
||||
|
||||
[Required]
|
||||
public string Status { get; set; } = "ALL";
|
||||
|
||||
[Required]
|
||||
public int Page = 1;
|
||||
|
||||
[Required]
|
||||
public int PageSize = 10;
|
||||
|
||||
public string? Keyword { get; set; } = string.Empty;
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,19 @@
|
|||
namespace BMA.EHR.Leave.Service.DTOs.LeaveRequest
|
||||
{
|
||||
public class GetLeaveRequestTableResultDto
|
||||
{
|
||||
public Guid Id { get; set; }
|
||||
|
||||
public string LeaveTypeName { get; set; }
|
||||
|
||||
public Guid LeaveTypeId { get; set; }
|
||||
|
||||
public string FullName { get; set; }
|
||||
|
||||
public DateTime DateSendLeave { get; set; }
|
||||
|
||||
public string Status { get; set; }
|
||||
|
||||
public bool IsDelete { get; set; }
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue