Compare commits

...

3 commits

Author SHA1 Message Date
Suphonchai Phoonsawat
c65a4a04ac Merge branch 'develop' into working
All checks were successful
Build & Deploy Leave Service / build (push) Successful in 1m44s
Build & Deploy Placement Service / build (push) Successful in 2m8s
2026-04-23 19:12:24 +07:00
Suphonchai Phoonsawat
d58c7dc07e Logic การคำนวนวันลา แบบร่าง และ นะหว่างพิจาณา #1567 2026-04-23 19:11:54 +07:00
Suphonchai Phoonsawat
bb329f86de เพิ่ม DateSendLeave และปรับ Logic การดึงค่าวันที่ยื่นลา #1567 2026-04-23 15:48:20 +07:00
9 changed files with 1942 additions and 29 deletions

View file

@ -354,7 +354,7 @@ namespace BMA.EHR.Application.Repositories.Leaves.LeaveRequests
var rawData = _dbContext.Set<LeaveRequest>().AsNoTracking() var rawData = _dbContext.Set<LeaveRequest>().AsNoTracking()
.Include(x => x.Type) .Include(x => x.Type)
.Where(x => x.LeaveStatus != "DRAFT") .Where(x => x.LeaveStatus != "DRAFT")
.OrderByDescending(x => x.CreatedAt) .OrderByDescending(x => (x.DateSendLeave ?? x.CreatedAt))
.AsQueryable(); .AsQueryable();
if (year != 0) if (year != 0)
@ -380,7 +380,7 @@ namespace BMA.EHR.Application.Repositories.Leaves.LeaveRequests
var rawData = _dbContext.Set<LeaveRequest>().AsNoTracking() var rawData = _dbContext.Set<LeaveRequest>().AsNoTracking()
.Include(x => x.Type) .Include(x => x.Type)
.Where(x => x.LeaveStatus != "DRAFT") .Where(x => x.LeaveStatus != "DRAFT")
.OrderByDescending(x => x.CreatedAt) .OrderByDescending(x => (x.DateSendLeave ?? x.CreatedAt))
.AsQueryable(); .AsQueryable();
// fix issue : 1830 // fix issue : 1830
if (year != 0) if (year != 0)
@ -447,7 +447,7 @@ namespace BMA.EHR.Application.Repositories.Leaves.LeaveRequests
.Include(x => x.Type) .Include(x => x.Type)
.Where(x => keycloakIdList.Contains(x.KeycloakUserId)) .Where(x => keycloakIdList.Contains(x.KeycloakUserId))
.Where(x => x.LeaveStatus != "DRAFT") .Where(x => x.LeaveStatus != "DRAFT")
.OrderByDescending(x => x.CreatedAt) .OrderByDescending(x =>(x.DateSendLeave ?? x.CreatedAt))
.AsQueryable(); .AsQueryable();
if (year != 0) if (year != 0)
@ -574,12 +574,12 @@ namespace BMA.EHR.Application.Repositories.Leaves.LeaveRequests
var data = await _dbContext.Set<LeaveRequest>().AsQueryable().AsNoTracking() var data = await _dbContext.Set<LeaveRequest>().AsQueryable().AsNoTracking()
.Include(x => x.Type) .Include(x => x.Type)
//.Where(x => x.LeaveStartDate.Date < beforeDate.Date) //.Where(x => x.LeaveStartDate.Date < beforeDate.Date)
.Where(x => x.CreatedAt < beforeDate) .Where(x => (x.DateSendLeave ?? x.CreatedAt) < beforeDate)
.Where(x => x.KeycloakUserId == keycloakUserId) .Where(x => x.KeycloakUserId == keycloakUserId)
.Where(x => x.Type.Id == leaveTypeId) .Where(x => x.Type.Id == leaveTypeId)
.Where(x => x.LeaveStatus == "APPROVE" || x.LeaveStatus == "DELETING") .Where(x => x.LeaveStatus == "APPROVE" || x.LeaveStatus == "DELETING")
//.Where(x => x.LeaveStatus != "REJECT" && x.LeaveStatus != "DELETE") //.Where(x => x.LeaveStatus != "REJECT" && x.LeaveStatus != "DELETE")
.OrderByDescending(x => x.CreatedAt) .OrderByDescending(x => (x.DateSendLeave ?? x.CreatedAt))
.FirstOrDefaultAsync(); .FirstOrDefaultAsync();
return data; return data;
@ -904,6 +904,7 @@ namespace BMA.EHR.Application.Repositories.Leaves.LeaveRequests
rawData.LeaveStatus = "NEW"; rawData.LeaveStatus = "NEW";
rawData.DateSendLeave = DateTime.Now; // Update วันที่ยื่นลาเป็นวันที่ปัจจุบัน
//rawData.ApproveStep = "st2"; //rawData.ApproveStep = "st2";
await UpdateAsync(rawData); await UpdateAsync(rawData);
@ -1876,7 +1877,7 @@ namespace BMA.EHR.Application.Repositories.Leaves.LeaveRequests
.Include(x => x.Type) .Include(x => x.Type)
.Where(x => x.KeycloakUserId == keycloakUserId) .Where(x => x.KeycloakUserId == keycloakUserId)
.Where(x => x.Type.Id == leaveTypeId) .Where(x => x.Type.Id == leaveTypeId)
.Where(x => x.CreatedAt.Date >= startDate && x.CreatedAt < endDate) .Where(x => (x.DateSendLeave ?? x.CreatedAt).Date >= startDate && (x.DateSendLeave ??x.CreatedAt).Date < endDate)
//.Where(x => x.LeaveStartDate.Date >= startDate.Date && x.LeaveStartDate.Date <= endDate.Date) //.Where(x => x.LeaveStartDate.Date >= startDate.Date && x.LeaveStartDate.Date <= endDate.Date)
.Where(x => x.LeaveStatus == "APPROVE" || x.LeaveStatus == "DELETING") .Where(x => x.LeaveStatus == "APPROVE" || x.LeaveStatus == "DELETING")
.ToListAsync(); .ToListAsync();
@ -1887,6 +1888,57 @@ namespace BMA.EHR.Application.Repositories.Leaves.LeaveRequests
return 0; return 0;
} }
/// <summary>
/// วันลาที่สร้างแบบร่างยังไม่ได้ยื่น
/// </summary>
/// <param name="keycloakUserId"></param>
/// <param name="leaveTypeId"></param>
/// <param name="startDate"></param>
/// <param name="endDate"></param>
/// <returns></returns>
public async Task<double> GetSumDraftLeaveTotalByTypeAndRangeForUser2(Guid keycloakUserId, Guid leaveTypeId, DateTime startDate, DateTime endDate)
{
var data = await _dbContext.Set<LeaveRequest>().AsQueryable().AsNoTracking()
.Include(x => x.Type)
.Where(x => x.KeycloakUserId == keycloakUserId)
.Where(x => x.Type.Id == leaveTypeId)
.Where(x => (x.DateSendLeave ?? x.CreatedAt).Date >= startDate
&& (x.DateSendLeave ?? x.CreatedAt).Date < endDate)
//.Where(x => x.LeaveStartDate.Date >= startDate.Date && x.LeaveStartDate.Date <= endDate.Date)
.Where(x => x.LeaveStatus == "DRAFT")
.ToListAsync();
if (data.Count > 0)
return data.Sum(x => x.LeaveTotal);
else
return 0;
}
/// <summary>
/// วันลาที่ยื่นแล้วรอพิจารณา
/// </summary>
/// <param name="keycloakUserId"></param>
/// <param name="leaveTypeId"></param>
/// <param name="startDate"></param>
/// <param name="endDate"></param>
/// <returns></returns>
public async Task<double> GetSumNewLeaveTotalByTypeAndRangeForUser2(Guid keycloakUserId, Guid leaveTypeId, DateTime startDate, DateTime endDate)
{
var data = await _dbContext.Set<LeaveRequest>().AsQueryable().AsNoTracking()
.Include(x => x.Type)
.Where(x => x.KeycloakUserId == keycloakUserId)
.Where(x => x.Type.Id == leaveTypeId)
.Where(x => (x.DateSendLeave ?? x.CreatedAt).Date >= startDate && (x.DateSendLeave ??x.CreatedAt).Date < endDate)
//.Where(x => x.LeaveStartDate.Date >= startDate.Date && x.LeaveStartDate.Date <= endDate.Date)
.Where(x => x.LeaveStatus == "NEW")
.ToListAsync();
if (data.Count > 0)
return data.Sum(x => x.LeaveTotal);
else
return 0;
}
public async Task<int> GetCountApproveLeaveByTypeAndRangeForUser(Guid keycloakUserId, Guid leaveTypeId, DateTime startDate, DateTime endDate) public async Task<int> GetCountApproveLeaveByTypeAndRangeForUser(Guid keycloakUserId, Guid leaveTypeId, DateTime startDate, DateTime endDate)
{ {
var data = await _dbContext.Set<LeaveRequest>().AsQueryable().AsNoTracking() var data = await _dbContext.Set<LeaveRequest>().AsQueryable().AsNoTracking()

View file

@ -210,5 +210,7 @@ namespace BMA.EHR.Domain.Models.Leave.Requests
public Guid? Child4DnaId { get; set; } = Guid.Empty; public Guid? Child4DnaId { get; set; } = Guid.Empty;
public DateTime? DateSendLeave { get; set; }
} }
} }

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,29 @@
using System;
using Microsoft.EntityFrameworkCore.Migrations;
#nullable disable
namespace BMA.EHR.Infrastructure.Migrations.LeaveDb
{
/// <inheritdoc />
public partial class AddDateSendLeave : Migration
{
/// <inheritdoc />
protected override void Up(MigrationBuilder migrationBuilder)
{
migrationBuilder.AddColumn<DateTime>(
name: "DateSendLeave",
table: "LeaveRequests",
type: "datetime(6)",
nullable: true);
}
/// <inheritdoc />
protected override void Down(MigrationBuilder migrationBuilder)
{
migrationBuilder.DropColumn(
name: "DateSendLeave",
table: "LeaveRequests");
}
}
}

View file

@ -428,6 +428,9 @@ namespace BMA.EHR.Infrastructure.Migrations.LeaveDb
b.Property<DateTime?>("DateAppoint") b.Property<DateTime?>("DateAppoint")
.HasColumnType("datetime(6)"); .HasColumnType("datetime(6)");
b.Property<DateTime?>("DateSendLeave")
.HasColumnType("datetime(6)");
b.Property<string>("Dear") b.Property<string>("Dear")
.HasColumnType("longtext") .HasColumnType("longtext")
.HasComment("เรียนใคร"); .HasComment("เรียนใคร");

View file

@ -182,7 +182,7 @@ namespace BMA.EHR.Leave.Service.Controllers
data = new data = new
{ {
leaveWrote = data.LeaveWrote.ToThaiNumber() ?? "", leaveWrote = data.LeaveWrote.ToThaiNumber() ?? "",
dateSendLeave = data.CreatedAt.Date.ToThaiShortDate().ToThaiNumber(), dateSendLeave = data.DateSendLeave != null ? data.DateSendLeave.Value.Date.ToThaiShortDate().ToThaiNumber() : data.CreatedAt.Date.ToThaiShortDate().ToThaiNumber(),
leaveTypeName = data.Type.Name, leaveTypeName = data.Type.Name,
leaveSubTypeName = data.LeaveSubTypeName != null ? data.LeaveSubTypeName.ToThaiNumber() : "", leaveSubTypeName = data.LeaveSubTypeName != null ? data.LeaveSubTypeName.ToThaiNumber() : "",
dear = data.CommanderPosition == null ? data.Dear : data.CommanderPosition.ToThaiNumber(), dear = data.CommanderPosition == null ? data.Dear : data.CommanderPosition.ToThaiNumber(),
@ -272,7 +272,7 @@ namespace BMA.EHR.Leave.Service.Controllers
data = new data = new
{ {
leaveWrote = data.LeaveWrote.ToThaiNumber() ?? "", leaveWrote = data.LeaveWrote.ToThaiNumber() ?? "",
dateSendLeave = data.CreatedAt.Date.ToThaiShortDate().ToThaiNumber(), dateSendLeave = data.DateSendLeave != null ? data.DateSendLeave.Value.Date.ToThaiShortDate().ToThaiNumber() : data.CreatedAt.Date.ToThaiShortDate().ToThaiNumber(),
leaveTypeName = data.Type.Name, leaveTypeName = data.Type.Name,
leaveSubTypeName = data.LeaveSubTypeName != null ? data.LeaveSubTypeName.ToThaiNumber() : "", leaveSubTypeName = data.LeaveSubTypeName != null ? data.LeaveSubTypeName.ToThaiNumber() : "",
dear = data.CommanderPosition == null ? data.Dear : data.CommanderPosition.ToThaiNumber(), dear = data.CommanderPosition == null ? data.Dear : data.CommanderPosition.ToThaiNumber(),
@ -366,7 +366,7 @@ namespace BMA.EHR.Leave.Service.Controllers
data = new data = new
{ {
leaveWrote = data.LeaveWrote.ToThaiNumber() ?? "", leaveWrote = data.LeaveWrote.ToThaiNumber() ?? "",
dateSendLeave = data.CreatedAt.Date.ToThaiShortDate().ToThaiNumber(), dateSendLeave = data.DateSendLeave != null ? data.DateSendLeave.Value.Date.ToThaiShortDate().ToThaiNumber() : data.CreatedAt.Date.ToThaiShortDate().ToThaiNumber(),
leaveTypeName = data.Type.Name, leaveTypeName = data.Type.Name,
leaveSubTypeName = data.LeaveSubTypeName != null ? data.LeaveSubTypeName.ToThaiNumber() : "", leaveSubTypeName = data.LeaveSubTypeName != null ? data.LeaveSubTypeName.ToThaiNumber() : "",
dear = data.CommanderPosition == null ? data.Dear : data.CommanderPosition.ToThaiNumber(), dear = data.CommanderPosition == null ? data.Dear : data.CommanderPosition.ToThaiNumber(),
@ -461,7 +461,7 @@ namespace BMA.EHR.Leave.Service.Controllers
data = new data = new
{ {
leaveWrote = data.LeaveWrote.ToThaiNumber() ?? "", leaveWrote = data.LeaveWrote.ToThaiNumber() ?? "",
dateSendLeave = data.CreatedAt.Date.ToThaiShortDate().ToThaiNumber(), dateSendLeave = data.DateSendLeave != null ? data.DateSendLeave.Value.Date.ToThaiShortDate().ToThaiNumber() : data.CreatedAt.Date.ToThaiShortDate().ToThaiNumber(),
leaveTypeName = data.Type.Name, leaveTypeName = data.Type.Name,
leaveSubTypeName = data.LeaveSubTypeName != null ? data.LeaveSubTypeName.ToThaiNumber() : "", leaveSubTypeName = data.LeaveSubTypeName != null ? data.LeaveSubTypeName.ToThaiNumber() : "",
dear = data.CommanderPosition == null ? data.Dear : data.CommanderPosition.ToThaiNumber(), dear = data.CommanderPosition == null ? data.Dear : data.CommanderPosition.ToThaiNumber(),
@ -515,7 +515,7 @@ namespace BMA.EHR.Leave.Service.Controllers
data = new data = new
{ {
leaveWrote = data.LeaveWrote.ToThaiNumber() ?? "", leaveWrote = data.LeaveWrote.ToThaiNumber() ?? "",
dateSendLeave = data.CreatedAt.Date.ToThaiShortDate().ToThaiNumber(), dateSendLeave = data.DateSendLeave != null ? data.DateSendLeave.Value.Date.ToThaiShortDate().ToThaiNumber() : data.CreatedAt.Date.ToThaiShortDate().ToThaiNumber(),
leaveTypeName = data.Type.Name, leaveTypeName = data.Type.Name,
leaveSubTypeName = data.LeaveSubTypeName != null ? data.LeaveSubTypeName.ToThaiNumber() : "", leaveSubTypeName = data.LeaveSubTypeName != null ? data.LeaveSubTypeName.ToThaiNumber() : "",
dear = data.CommanderPosition == null ? data.Dear : data.CommanderPosition.ToThaiNumber(), dear = data.CommanderPosition == null ? data.Dear : data.CommanderPosition.ToThaiNumber(),
@ -602,7 +602,7 @@ namespace BMA.EHR.Leave.Service.Controllers
data = new data = new
{ {
leaveWrote = data.LeaveWrote.ToThaiNumber() ?? "", leaveWrote = data.LeaveWrote.ToThaiNumber() ?? "",
dateSendLeave = data.CreatedAt.Date.ToThaiShortDate().ToThaiNumber(), dateSendLeave = data.DateSendLeave != null ? data.DateSendLeave.Value.Date.ToThaiShortDate().ToThaiNumber() : data.CreatedAt.Date.ToThaiShortDate().ToThaiNumber(),
leaveTypeName = data.Type.Name, leaveTypeName = data.Type.Name,
leaveSubTypeName = data.LeaveSubTypeName != null ? data.LeaveSubTypeName.ToThaiNumber() : "", leaveSubTypeName = data.LeaveSubTypeName != null ? data.LeaveSubTypeName.ToThaiNumber() : "",
dear = data.CommanderPosition == null ? data.Dear : data.CommanderPosition.ToThaiNumber(), dear = data.CommanderPosition == null ? data.Dear : data.CommanderPosition.ToThaiNumber(),
@ -683,7 +683,7 @@ namespace BMA.EHR.Leave.Service.Controllers
data = new data = new
{ {
leaveWrote = data.LeaveWrote.ToThaiNumber() ?? "", leaveWrote = data.LeaveWrote.ToThaiNumber() ?? "",
dateSendLeave = data.CreatedAt.Date.ToThaiShortDate().ToThaiNumber(), dateSendLeave = data.DateSendLeave != null ? data.DateSendLeave.Value.Date.ToThaiShortDate().ToThaiNumber() : data.CreatedAt.Date.ToThaiShortDate().ToThaiNumber(),
leaveTypeName = data.Type.Name, leaveTypeName = data.Type.Name,
leaveSubTypeName = data.LeaveSubTypeName != null ? data.LeaveSubTypeName.ToThaiNumber() : "", leaveSubTypeName = data.LeaveSubTypeName != null ? data.LeaveSubTypeName.ToThaiNumber() : "",
dear = data.CommanderPosition == null ? data.Dear : data.CommanderPosition.ToThaiNumber(), dear = data.CommanderPosition == null ? data.Dear : data.CommanderPosition.ToThaiNumber(),
@ -786,7 +786,7 @@ namespace BMA.EHR.Leave.Service.Controllers
data = new data = new
{ {
leaveWrote = data.LeaveWrote.ToThaiNumber() ?? "", leaveWrote = data.LeaveWrote.ToThaiNumber() ?? "",
dateSendLeave = data.CreatedAt.Date.ToThaiShortDate().ToThaiNumber(), dateSendLeave = data.DateSendLeave != null ? data.DateSendLeave.Value.Date.ToThaiShortDate().ToThaiNumber() : data.CreatedAt.Date.ToThaiShortDate().ToThaiNumber(),
leaveTypeName = data.Type.Name, leaveTypeName = data.Type.Name,
leaveSubTypeName = data.LeaveSubTypeName != null ? data.LeaveSubTypeName.ToThaiNumber() : "", leaveSubTypeName = data.LeaveSubTypeName != null ? data.LeaveSubTypeName.ToThaiNumber() : "",
dear = data.CommanderPosition == null ? data.Dear : data.CommanderPosition.ToThaiNumber(), dear = data.CommanderPosition == null ? data.Dear : data.CommanderPosition.ToThaiNumber(),
@ -905,7 +905,7 @@ namespace BMA.EHR.Leave.Service.Controllers
data = new data = new
{ {
leaveWrote = data.LeaveWrote.ToThaiNumber() ?? "", leaveWrote = data.LeaveWrote.ToThaiNumber() ?? "",
dateSendLeave = data.CreatedAt.Date.ToThaiShortDate().ToThaiNumber(), dateSendLeave = data.DateSendLeave != null ? data.DateSendLeave.Value.Date.ToThaiShortDate().ToThaiNumber() : data.CreatedAt.Date.ToThaiShortDate().ToThaiNumber(),
leaveTypeName = data.Type.Name, leaveTypeName = data.Type.Name,
leaveSubTypeName = data.LeaveSubTypeName != null ? data.LeaveSubTypeName.ToThaiNumber() : "", leaveSubTypeName = data.LeaveSubTypeName != null ? data.LeaveSubTypeName.ToThaiNumber() : "",
dear = data.CommanderPosition == null ? data.Dear : data.CommanderPosition.ToThaiNumber(), dear = data.CommanderPosition == null ? data.Dear : data.CommanderPosition.ToThaiNumber(),
@ -1001,7 +1001,7 @@ namespace BMA.EHR.Leave.Service.Controllers
data = new data = new
{ {
leaveWrote = data.LeaveWrote.ToThaiNumber() ?? "", leaveWrote = data.LeaveWrote.ToThaiNumber() ?? "",
dateSendLeave = data.CreatedAt.Date.ToThaiShortDate().ToThaiNumber(), dateSendLeave = data.DateSendLeave != null ? data.DateSendLeave.Value.Date.ToThaiShortDate().ToThaiNumber() : data.CreatedAt.Date.ToThaiShortDate().ToThaiNumber(),
leaveTypeName = data.Type.Name, leaveTypeName = data.Type.Name,
leaveSubTypeName = data.LeaveSubTypeName != null ? data.LeaveSubTypeName.ToThaiNumber() : "", leaveSubTypeName = data.LeaveSubTypeName != null ? data.LeaveSubTypeName.ToThaiNumber() : "",
dear = data.CommanderPosition == null ? data.Dear : data.CommanderPosition.ToThaiNumber(), dear = data.CommanderPosition == null ? data.Dear : data.CommanderPosition.ToThaiNumber(),
@ -1227,7 +1227,7 @@ namespace BMA.EHR.Leave.Service.Controllers
data = new data = new
{ {
leaveWrote = data.CancelLeaveWrote!.ToThaiNumber() ?? "", leaveWrote = data.CancelLeaveWrote!.ToThaiNumber() ?? "",
dateSendLeave = data.CreatedAt.Date.ToThaiShortDate().ToThaiNumber(), dateSendLeave = data.DateSendLeave != null ? data.DateSendLeave.Value.Date.ToThaiShortDate().ToThaiNumber() : data.CreatedAt.Date.ToThaiShortDate().ToThaiNumber(),
leaveTypeName = data.Type.Name, leaveTypeName = data.Type.Name,
fullname = fullName, fullname = fullName,
position = string.IsNullOrEmpty(profile.Position) ? "-" : profile.Position, position = string.IsNullOrEmpty(profile.Position) ? "-" : profile.Position,

View file

@ -855,10 +855,10 @@ namespace BMA.EHR.Leave.Service.Controllers
{ {
var userId = UserId == null ? Guid.Empty : Guid.Parse(UserId); var userId = UserId == null ? Guid.Empty : Guid.Parse(UserId);
var thisYear = DateTime.Now.Year; var thisYear = DateTime.Now.Year - 1;
var toDay = DateTime.Now.Date; var toDay = DateTime.Now.Date;
var startFiscalDate = new DateTime(DateTime.Now.Year, 10, 1); var startFiscalDate = new DateTime(DateTime.Now.Year - 1, 10, 1);
var endFiscalDate = new DateTime(DateTime.Now.Year + 1, 9, 30); var endFiscalDate = new DateTime(DateTime.Now.Year, 9, 30);
if (toDay >= startFiscalDate && toDay <= endFiscalDate) if (toDay >= startFiscalDate && toDay <= endFiscalDate)
thisYear = thisYear + 1; thisYear = thisYear + 1;
@ -925,6 +925,9 @@ namespace BMA.EHR.Leave.Service.Controllers
var leaveLast = await _leaveRequestRepository.GetLeaveLastByTypeForUserAsync(userId, req.Type); var leaveLast = await _leaveRequestRepository.GetLeaveLastByTypeForUserAsync(userId, req.Type);
var leaveDraftSummary = await _leaveRequestRepository.GetSumDraftLeaveTotalByTypeAndRangeForUser2(userId, req.Type, startFiscalDate, endFiscalDate);
var leaveWaitingSummary = await _leaveRequestRepository.GetSumNewLeaveTotalByTypeAndRangeForUser2(userId, req.Type, startFiscalDate, endFiscalDate);
var result = new GetUserLeaveProfileResultDto var result = new GetUserLeaveProfileResultDto
{ {
DateSendLeave = DateTime.Now.Date, DateSendLeave = DateTime.Now.Date,
@ -960,7 +963,10 @@ namespace BMA.EHR.Leave.Service.Controllers
CurrentDistrict = profile.CurrentDistrict ?? "", CurrentDistrict = profile.CurrentDistrict ?? "",
CurrentProvince = profile.CurrentProvince ?? "", CurrentProvince = profile.CurrentProvince ?? "",
CurrentZipCode = profile.CurrentZipCode ?? "", CurrentZipCode = profile.CurrentZipCode ?? "",
GovAge = govAge GovAge = govAge,
LeaveDraftSummary = leaveDraftSummary,
LeaveWaitingSummary = leaveWaitingSummary
}; };
return Success(result); return Success(result);
@ -1324,7 +1330,7 @@ namespace BMA.EHR.Leave.Service.Controllers
Id = d.Id, Id = d.Id,
LeaveTypeId = d.Type.Id, LeaveTypeId = d.Type.Id,
LeaveTypeName = d.Type.Name, LeaveTypeName = d.Type.Name,
DateSendLeave = d.CreatedAt.Date, DateSendLeave = d.DateSendLeave != null ? d.DateSendLeave.Value.Date : d.CreatedAt.Date,
Status = d.LeaveStatus, Status = d.LeaveStatus,
FullName = $"{d.Prefix}{d.FirstName} {d.LastName}", FullName = $"{d.Prefix}{d.FirstName} {d.LastName}",
LeaveEndDate = d.LeaveEndDate, LeaveEndDate = d.LeaveEndDate,
@ -1483,7 +1489,7 @@ namespace BMA.EHR.Leave.Service.Controllers
Id = d.Id, Id = d.Id,
LeaveTypeId = d.Type.Id, LeaveTypeId = d.Type.Id,
LeaveTypeName = d.Type.Name, LeaveTypeName = d.Type.Name,
DateSendLeave = d.CreatedAt.Date, DateSendLeave = d.DateSendLeave != null ? d.DateSendLeave.Value.Date : d.CreatedAt.Date,
Status = d.LeaveStatus, Status = d.LeaveStatus,
FullName = $"{d.Prefix}{d.FirstName} {d.LastName}", FullName = $"{d.Prefix}{d.FirstName} {d.LastName}",
LeaveEndDate = d.LeaveEndDate, LeaveEndDate = d.LeaveEndDate,
@ -1536,7 +1542,7 @@ namespace BMA.EHR.Leave.Service.Controllers
LeaveTypeName = item.Type.Name, LeaveTypeName = item.Type.Name,
LeaveSubTypeName = item.LeaveSubTypeName ?? "", LeaveSubTypeName = item.LeaveSubTypeName ?? "",
FullName = $"{item.Prefix}{item.FirstName} {item.LastName}", FullName = $"{item.Prefix}{item.FirstName} {item.LastName}",
DateSendLeave = item.CreatedAt, DateSendLeave = item.DateSendLeave ?? item.CreatedAt,
IsDelete = item.LeaveStatus == "DELETE", IsDelete = item.LeaveStatus == "DELETE",
Status = item.LeaveStatus, Status = item.LeaveStatus,
LeaveStartDate = item.LeaveStartDate, LeaveStartDate = item.LeaveStartDate,
@ -1711,7 +1717,7 @@ namespace BMA.EHR.Leave.Service.Controllers
LeaveSubTypeName = rawData.LeaveSubTypeName, LeaveSubTypeName = rawData.LeaveSubTypeName,
LeaveTypeId = rawData.Type.Id, LeaveTypeId = rawData.Type.Id,
FullName = $"{rawData.Prefix}{rawData.FirstName} {rawData.LastName}", FullName = $"{rawData.Prefix}{rawData.FirstName} {rawData.LastName}",
DateSendLeave = rawData.CreatedAt, DateSendLeave = rawData.DateSendLeave ?? rawData.CreatedAt,
Status = rawData.LeaveStatus, Status = rawData.LeaveStatus,
LeaveStartDate = rawData.LeaveStartDate, LeaveStartDate = rawData.LeaveStartDate,
LeaveEndDate = rawData.LeaveEndDate, LeaveEndDate = rawData.LeaveEndDate,
@ -1986,7 +1992,7 @@ namespace BMA.EHR.Leave.Service.Controllers
LeaveSubTypeName = item.LeaveSubTypeName, LeaveSubTypeName = item.LeaveSubTypeName,
FullName = $"{item.Prefix}{item.FirstName} {item.LastName}", FullName = $"{item.Prefix}{item.FirstName} {item.LastName}",
ProfileType = item.ProfileType ?? "-", ProfileType = item.ProfileType ?? "-",
DateSendLeave = item.CreatedAt, DateSendLeave = item.DateSendLeave ?? item.CreatedAt,
Status = item.LeaveStatus, Status = item.LeaveStatus,
CitizenId = item.CitizenId ?? "", CitizenId = item.CitizenId ?? "",
LeaveStartDate = item.LeaveStartDate, LeaveStartDate = item.LeaveStartDate,
@ -2281,7 +2287,7 @@ namespace BMA.EHR.Leave.Service.Controllers
LeaveSubTypeName = item.LeaveSubTypeName, LeaveSubTypeName = item.LeaveSubTypeName,
ProfileType = item.ProfileType ?? "-", ProfileType = item.ProfileType ?? "-",
FullName = $"{item.Prefix}{item.FirstName} {item.LastName}", FullName = $"{item.Prefix}{item.FirstName} {item.LastName}",
DateSendLeave = item.CreatedAt.Date, DateSendLeave = item.DateSendLeave != null ? item.DateSendLeave.Value.Date : item.CreatedAt.Date,
Status = item.LeaveCancelStatus ?? "" Status = item.LeaveCancelStatus ?? ""
}; };
result.Add(res); result.Add(res);
@ -2830,7 +2836,13 @@ namespace BMA.EHR.Leave.Service.Controllers
var startFiscalYear = new DateTime(rawData.LeaveStartDate.Year - 1, 10, 1); var startFiscalYear = new DateTime(rawData.LeaveStartDate.Year - 1, 10, 1);
var endFiscalYear = rawData.CreatedAt; var endFiscalYear = rawData.CreatedAt;
var endFiscalYear2 = new DateTime(rawData.LeaveStartDate.Year, 9, 30);
var leaveSummary = await _leaveRequestRepository.GetSumApproveLeaveTotalByTypeAndRangeForUser2(rawData.KeycloakUserId, rawData.Type.Id, startFiscalYear, endFiscalYear); var leaveSummary = await _leaveRequestRepository.GetSumApproveLeaveTotalByTypeAndRangeForUser2(rawData.KeycloakUserId, rawData.Type.Id, startFiscalYear, endFiscalYear);
// วันลาแบบร่างและที่ยื่นลาไปแล้ว
var leaveDraftSummary = await _leaveRequestRepository.GetSumDraftLeaveTotalByTypeAndRangeForUser2(rawData.KeycloakUserId, rawData.Type.Id, startFiscalYear, endFiscalYear2);
var leaveWaitingSummary = await _leaveRequestRepository.GetSumNewLeaveTotalByTypeAndRangeForUser2(rawData.KeycloakUserId, rawData.Type.Id, startFiscalYear, endFiscalYear2);
//var leaveSummary = leaveData == null ? 0.0 : leaveData.LeaveDaysUsed; //var leaveSummary = leaveData == null ? 0.0 : leaveData.LeaveDaysUsed;
if (leaveData != null) if (leaveData != null)
leaveSummary += leaveData.BeginningLeaveDays; leaveSummary += leaveData.BeginningLeaveDays;
@ -2854,7 +2866,7 @@ namespace BMA.EHR.Leave.Service.Controllers
LeaveSubTypeName = rawData.LeaveSubTypeName, LeaveSubTypeName = rawData.LeaveSubTypeName,
LeaveTypeId = rawData.Type.Id, LeaveTypeId = rawData.Type.Id,
FullName = $"{rawData.Prefix}{rawData.FirstName} {rawData.LastName}", FullName = $"{rawData.Prefix}{rawData.FirstName} {rawData.LastName}",
DateSendLeave = rawData.CreatedAt, DateSendLeave = rawData.DateSendLeave ?? rawData.CreatedAt,
Status = rawData.LeaveStatus, Status = rawData.LeaveStatus,
LeaveStartDate = rawData.LeaveStartDate, LeaveStartDate = rawData.LeaveStartDate,
LeaveEndDate = rawData.LeaveEndDate, LeaveEndDate = rawData.LeaveEndDate,
@ -2944,7 +2956,10 @@ namespace BMA.EHR.Leave.Service.Controllers
LeaveLimit = rawData.Type.Limit + extendLeave, LeaveLimit = rawData.Type.Limit + extendLeave,
LeaveSummary = leaveSummary, LeaveSummary = leaveSummary,
LeaveRemain = (rawData.Type.Limit + extendLeave) - leaveSummary LeaveRemain = (rawData.Type.Limit + extendLeave) - leaveSummary,
LeaveDraftSummary = leaveDraftSummary,
LeaveWaitingSummary = leaveWaitingSummary
}; };
if (rawData.LeaveDocument != null && rawData.LeaveDocument.Count > 0) if (rawData.LeaveDocument != null && rawData.LeaveDocument.Count > 0)

View file

@ -147,6 +147,10 @@ namespace BMA.EHR.Leave.Service.DTOs.LeaveRequest
public List<GetLeaveApproverDto> Approvers { get; set; } = new(); public List<GetLeaveApproverDto> Approvers { get; set; } = new();
public Guid? KeycloakUserId { get; set; } = Guid.Empty; public Guid? KeycloakUserId { get; set; } = Guid.Empty;
public double LeaveDraftSummary { get; set; } = 0;
public double LeaveWaitingSummary { get; set; } = 0;
} }
public class GetLeaveApproverDto public class GetLeaveApproverDto

View file

@ -53,5 +53,8 @@
public string? CurrentZipCode { get; set; } public string? CurrentZipCode { get; set; }
public int GovAge { get; set; } = 0; public int GovAge { get; set; } = 0;
public double LeaveDraftSummary { get; set; } = 0;
public double LeaveWaitingSummary { get; set; } = 0;
} }
} }