แก้ไข /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("เขียนที่ (ขอยกเลิก)")]
|
||||
public string? CancelLeaveWrote { get; set; } = string.Empty;
|
||||
|
||||
[Comment("ช่วงของการลา เช่น ลาทั้งวัน ครึ่งวันเช้า ครึ่งวันบ่าย")]
|
||||
[Comment("ช่วงของการลาของวันเริ่ม เช่น ลาทั้งวัน ครึ่งวันเช้า ครึ่งวันบ่าย")]
|
||||
public string? LeaveRange { get; set; } = string.Empty;
|
||||
|
||||
[Comment("ช่วงของการลาของวันสิ้นสุด เช่น ลาทั้งวัน ครึ่งวันเช้า ครึ่งวันบ่าย")]
|
||||
public string? LeaveRangeEnd { get; set; } = string.Empty;
|
||||
|
||||
[Comment("เรียนใคร")]
|
||||
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")
|
||||
.HasColumnType("longtext")
|
||||
.HasComment("ช่วงของการลา เช่น ลาทั้งวัน ครึ่งวันเช้า ครึ่งวันบ่าย");
|
||||
.HasComment("ช่วงของการลาของวันเริ่ม เช่น ลาทั้งวัน ครึ่งวันเช้า ครึ่งวันบ่าย");
|
||||
|
||||
b.Property<string>("LeaveRangeEnd")
|
||||
.HasColumnType("longtext")
|
||||
.HasComment("ช่วงของการลาของวันสิ้นสุด เช่น ลาทั้งวัน ครึ่งวันเช้า ครึ่งวันบ่าย");
|
||||
|
||||
b.Property<int?>("LeaveSalary")
|
||||
.HasColumnType("int");
|
||||
|
|
|
|||
|
|
@ -868,6 +868,13 @@ namespace BMA.EHR.Leave.Service.Controllers
|
|||
[ProducesResponseType(StatusCodes.Status500InternalServerError)]
|
||||
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 profile = await _userProfileRepository.GetProfileByKeycloakIdAsync(userId, AccessToken);
|
||||
|
|
@ -893,7 +900,7 @@ namespace BMA.EHR.Leave.Service.Controllers
|
|||
var sumLeave =
|
||||
await _leaveRequestRepository.GetSumLeaveByTypeForUserAsync(userId, req.Type, req.StartLeaveDate.Year);
|
||||
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 sumApproveLeave = await _leaveRequestRepository.GetSumApproveLeaveByTypeForUserAsync(userId, req.Type, req.StartLeaveDate.Year);
|
||||
|
|
@ -921,6 +928,10 @@ namespace BMA.EHR.Leave.Service.Controllers
|
|||
|
||||
var isLeave = false;
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
switch (leaveType.Code.ToUpper().Trim())
|
||||
{
|
||||
case "LV-001":
|
||||
|
|
@ -1086,6 +1097,35 @@ namespace BMA.EHR.Leave.Service.Controllers
|
|||
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 result = new GetLeaveCheckResultDto
|
||||
|
|
|
|||
|
|
@ -12,5 +12,11 @@ namespace BMA.EHR.Leave.Service.DTOs.LeaveRequest
|
|||
|
||||
[Required]
|
||||
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