แก้ไข /leave/user/check
เพิ่ม range and rangeEnd เพื่อตรวจสอบการลา เพื่อให้สามารถลาครึ่งวัน รวมกับลาเต็มวันได้
This commit is contained in:
parent
cd54079a47
commit
3659d03d94
6 changed files with 1590 additions and 3 deletions
|
|
@ -137,9 +137,12 @@ namespace BMA.EHR.Domain.Models.Leave.Requests
|
||||||
[Comment("เขียนที่ (ขอยกเลิก)")]
|
[Comment("เขียนที่ (ขอยกเลิก)")]
|
||||||
public string? CancelLeaveWrote { get; set; } = string.Empty;
|
public string? CancelLeaveWrote { get; set; } = string.Empty;
|
||||||
|
|
||||||
[Comment("ช่วงของการลา เช่น ลาทั้งวัน ครึ่งวันเช้า ครึ่งวันบ่าย")]
|
[Comment("ช่วงของการลาของวันเริ่ม เช่น ลาทั้งวัน ครึ่งวันเช้า ครึ่งวันบ่าย")]
|
||||||
public string? LeaveRange { get; set; } = string.Empty;
|
public string? LeaveRange { get; set; } = string.Empty;
|
||||||
|
|
||||||
|
[Comment("ช่วงของการลาของวันสิ้นสุด เช่น ลาทั้งวัน ครึ่งวันเช้า ครึ่งวันบ่าย")]
|
||||||
|
public string? LeaveRangeEnd { get; set; } = string.Empty;
|
||||||
|
|
||||||
[Comment("เรียนใคร")]
|
[Comment("เรียนใคร")]
|
||||||
public string? Dear { get; set; } = string.Empty;
|
public string? Dear { get; set; } = string.Empty;
|
||||||
|
|
||||||
|
|
|
||||||
1478
BMA.EHR.Infrastructure/Migrations/LeaveDb/20250421230201_Add Leave Range End.Designer.cs
generated
Normal file
1478
BMA.EHR.Infrastructure/Migrations/LeaveDb/20250421230201_Add Leave Range End.Designer.cs
generated
Normal file
File diff suppressed because it is too large
Load diff
|
|
@ -0,0 +1,56 @@
|
||||||
|
using Microsoft.EntityFrameworkCore.Migrations;
|
||||||
|
|
||||||
|
#nullable disable
|
||||||
|
|
||||||
|
namespace BMA.EHR.Infrastructure.Migrations.LeaveDb
|
||||||
|
{
|
||||||
|
/// <inheritdoc />
|
||||||
|
public partial class AddLeaveRangeEnd : Migration
|
||||||
|
{
|
||||||
|
/// <inheritdoc />
|
||||||
|
protected override void Up(MigrationBuilder migrationBuilder)
|
||||||
|
{
|
||||||
|
migrationBuilder.AlterColumn<string>(
|
||||||
|
name: "LeaveRange",
|
||||||
|
table: "LeaveRequests",
|
||||||
|
type: "longtext",
|
||||||
|
nullable: true,
|
||||||
|
comment: "ช่วงของการลาของวันเริ่ม เช่น ลาทั้งวัน ครึ่งวันเช้า ครึ่งวันบ่าย",
|
||||||
|
oldClrType: typeof(string),
|
||||||
|
oldType: "longtext",
|
||||||
|
oldNullable: true,
|
||||||
|
oldComment: "ช่วงของการลา เช่น ลาทั้งวัน ครึ่งวันเช้า ครึ่งวันบ่าย")
|
||||||
|
.Annotation("MySql:CharSet", "utf8mb4")
|
||||||
|
.OldAnnotation("MySql:CharSet", "utf8mb4");
|
||||||
|
|
||||||
|
migrationBuilder.AddColumn<string>(
|
||||||
|
name: "LeaveRangeEnd",
|
||||||
|
table: "LeaveRequests",
|
||||||
|
type: "longtext",
|
||||||
|
nullable: true,
|
||||||
|
comment: "ช่วงของการลาของวันสิ้นสุด เช่น ลาทั้งวัน ครึ่งวันเช้า ครึ่งวันบ่าย")
|
||||||
|
.Annotation("MySql:CharSet", "utf8mb4");
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <inheritdoc />
|
||||||
|
protected override void Down(MigrationBuilder migrationBuilder)
|
||||||
|
{
|
||||||
|
migrationBuilder.DropColumn(
|
||||||
|
name: "LeaveRangeEnd",
|
||||||
|
table: "LeaveRequests");
|
||||||
|
|
||||||
|
migrationBuilder.AlterColumn<string>(
|
||||||
|
name: "LeaveRange",
|
||||||
|
table: "LeaveRequests",
|
||||||
|
type: "longtext",
|
||||||
|
nullable: true,
|
||||||
|
comment: "ช่วงของการลา เช่น ลาทั้งวัน ครึ่งวันเช้า ครึ่งวันบ่าย",
|
||||||
|
oldClrType: typeof(string),
|
||||||
|
oldType: "longtext",
|
||||||
|
oldNullable: true,
|
||||||
|
oldComment: "ช่วงของการลาของวันเริ่ม เช่น ลาทั้งวัน ครึ่งวันเช้า ครึ่งวันบ่าย")
|
||||||
|
.Annotation("MySql:CharSet", "utf8mb4")
|
||||||
|
.OldAnnotation("MySql:CharSet", "utf8mb4");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -466,7 +466,11 @@ namespace BMA.EHR.Infrastructure.Migrations.LeaveDb
|
||||||
|
|
||||||
b.Property<string>("LeaveRange")
|
b.Property<string>("LeaveRange")
|
||||||
.HasColumnType("longtext")
|
.HasColumnType("longtext")
|
||||||
.HasComment("ช่วงของการลา เช่น ลาทั้งวัน ครึ่งวันเช้า ครึ่งวันบ่าย");
|
.HasComment("ช่วงของการลาของวันเริ่ม เช่น ลาทั้งวัน ครึ่งวันเช้า ครึ่งวันบ่าย");
|
||||||
|
|
||||||
|
b.Property<string>("LeaveRangeEnd")
|
||||||
|
.HasColumnType("longtext")
|
||||||
|
.HasComment("ช่วงของการลาของวันสิ้นสุด เช่น ลาทั้งวัน ครึ่งวันเช้า ครึ่งวันบ่าย");
|
||||||
|
|
||||||
b.Property<int?>("LeaveSalary")
|
b.Property<int?>("LeaveSalary")
|
||||||
.HasColumnType("int");
|
.HasColumnType("int");
|
||||||
|
|
|
||||||
|
|
@ -868,6 +868,13 @@ namespace BMA.EHR.Leave.Service.Controllers
|
||||||
[ProducesResponseType(StatusCodes.Status500InternalServerError)]
|
[ProducesResponseType(StatusCodes.Status500InternalServerError)]
|
||||||
public async Task<ActionResult<ResponseObject>> CheckUserLeaveAsync([FromBody] GetLeaveCheckDto req)
|
public async Task<ActionResult<ResponseObject>> CheckUserLeaveAsync([FromBody] GetLeaveCheckDto req)
|
||||||
{
|
{
|
||||||
|
var totalDay = (double)req.StartLeaveDate.DiffDay(req.EndLeaveDate.Date);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
var userId = UserId == null ? Guid.Empty : Guid.Parse(UserId);
|
var userId = UserId == null ? Guid.Empty : Guid.Parse(UserId);
|
||||||
|
|
||||||
var profile = await _userProfileRepository.GetProfileByKeycloakIdAsync(userId, AccessToken);
|
var profile = await _userProfileRepository.GetProfileByKeycloakIdAsync(userId, AccessToken);
|
||||||
|
|
@ -893,7 +900,7 @@ namespace BMA.EHR.Leave.Service.Controllers
|
||||||
var sumLeave =
|
var sumLeave =
|
||||||
await _leaveRequestRepository.GetSumLeaveByTypeForUserAsync(userId, req.Type, req.StartLeaveDate.Year);
|
await _leaveRequestRepository.GetSumLeaveByTypeForUserAsync(userId, req.Type, req.StartLeaveDate.Year);
|
||||||
var sumWorkDay = await _holidayRepository.GetHolidayCountAsync(req.StartLeaveDate.Date, req.EndLeaveDate.Date, category);
|
var sumWorkDay = await _holidayRepository.GetHolidayCountAsync(req.StartLeaveDate.Date, req.EndLeaveDate.Date, category);
|
||||||
var totalDay = req.StartLeaveDate.DiffDay(req.EndLeaveDate.Date);
|
|
||||||
var sumWeekend = _holidayRepository.GetWeekEndCount(req.StartLeaveDate.Date, req.EndLeaveDate.Date, category);
|
var sumWeekend = _holidayRepository.GetWeekEndCount(req.StartLeaveDate.Date, req.EndLeaveDate.Date, category);
|
||||||
|
|
||||||
var sumApproveLeave = await _leaveRequestRepository.GetSumApproveLeaveByTypeForUserAsync(userId, req.Type, req.StartLeaveDate.Year);
|
var sumApproveLeave = await _leaveRequestRepository.GetSumApproveLeaveByTypeForUserAsync(userId, req.Type, req.StartLeaveDate.Year);
|
||||||
|
|
@ -921,6 +928,10 @@ namespace BMA.EHR.Leave.Service.Controllers
|
||||||
|
|
||||||
var isLeave = false;
|
var isLeave = false;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
switch (leaveType.Code.ToUpper().Trim())
|
switch (leaveType.Code.ToUpper().Trim())
|
||||||
{
|
{
|
||||||
case "LV-001":
|
case "LV-001":
|
||||||
|
|
@ -1086,6 +1097,35 @@ namespace BMA.EHR.Leave.Service.Controllers
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (totalDay > 1)
|
||||||
|
{
|
||||||
|
if (req.LeaveRange == "MORNING" || req.LeaveRangeEnd == "AFTERNOON")
|
||||||
|
{
|
||||||
|
isLeave = false;
|
||||||
|
message = "ช่วงวันลาที่ระบุไม่ถูกต้อง";
|
||||||
|
}
|
||||||
|
|
||||||
|
if (req.LeaveRange != "ALL")
|
||||||
|
totalDay -= 0.5;
|
||||||
|
|
||||||
|
if (req.LeaveRangeEnd != "ALL")
|
||||||
|
totalDay -= 0.5;
|
||||||
|
|
||||||
|
}
|
||||||
|
else if (totalDay == 1)
|
||||||
|
{
|
||||||
|
|
||||||
|
if (req.LeaveRange != req.LeaveRangeEnd)
|
||||||
|
{
|
||||||
|
isLeave = false;
|
||||||
|
message = "ช่วงวันลาที่ระบุไม่ถูกต้อง";
|
||||||
|
}
|
||||||
|
if (req.LeaveRange != "ALL")
|
||||||
|
totalDay -= 0.5;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
//var isLeave = sumLeave + (totalDay - sumWorkDay - sumWeekend) <= leaveType.Limit;
|
//var isLeave = sumLeave + (totalDay - sumWorkDay - sumWeekend) <= leaveType.Limit;
|
||||||
|
|
||||||
var result = new GetLeaveCheckResultDto
|
var result = new GetLeaveCheckResultDto
|
||||||
|
|
|
||||||
|
|
@ -12,5 +12,11 @@ namespace BMA.EHR.Leave.Service.DTOs.LeaveRequest
|
||||||
|
|
||||||
[Required]
|
[Required]
|
||||||
public DateTime EndLeaveDate { get; set;} = DateTime.MinValue;
|
public DateTime EndLeaveDate { get; set;} = DateTime.MinValue;
|
||||||
|
|
||||||
|
[Required]
|
||||||
|
public string LeaveRange { get; set; } = "ALL";
|
||||||
|
|
||||||
|
[Required]
|
||||||
|
public string LeaveRangeEnd { get; set; } = "ALL";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue