add api เพิ่มเติม
This commit is contained in:
parent
019a400028
commit
6d7aebaeb5
2 changed files with 216 additions and 4 deletions
|
|
@ -843,7 +843,8 @@ namespace BMA.EHR.Leave.Service.Controllers
|
|||
CheckInLocation = d.CheckInPOI,
|
||||
CheckInLat = d.CheckInLat,
|
||||
CheckInLon = d.CheckInLon,
|
||||
CheckInStatus = DateTime.Parse(d.CheckIn.ToString("yyyy-MM-dd HH:mm")) >
|
||||
CheckInStatus = d.CheckInStatus != "" ? d.CheckInStatus :
|
||||
DateTime.Parse(d.CheckIn.ToString("yyyy-MM-dd HH:mm")) >
|
||||
DateTime.Parse($"{d.CheckIn.Date.ToString("yyyy-MM-dd")} {duty.StartTimeMorning}") ?
|
||||
"LATE" :
|
||||
"NORMAL",
|
||||
|
|
@ -856,7 +857,8 @@ namespace BMA.EHR.Leave.Service.Controllers
|
|||
CheckOutLocation = d.CheckOut == null ? "" : d.CheckOutPOI,
|
||||
CheckOutLat = d.CheckOut == null ? null : d.CheckOutLat,
|
||||
CheckOutLon = d.CheckOut == null ? null : d.CheckOutLon,
|
||||
CheckOutStatus = d.CheckOut == null ? null : DateTime.Parse(d.CheckOut.Value.ToString("yyyy-MM-dd HH:mm")) <
|
||||
CheckOutStatus = d.CheckOutStatus != "" ? d.CheckOutStatus :
|
||||
d.CheckOut == null ? null : DateTime.Parse(d.CheckOut.Value.ToString("yyyy-MM-dd HH:mm")) <
|
||||
DateTime.Parse($"{d.CheckIn.Date.ToString("yyyy-MM-dd")} {duty.EndTimeAfternoon}") ?
|
||||
"LATE" :
|
||||
DateTime.Parse(d.CheckOut.Value.ToString("yyyy-MM-dd HH:mm")) <
|
||||
|
|
|
|||
|
|
@ -134,8 +134,6 @@ namespace BMA.EHR.Leave.Service.Controllers
|
|||
else
|
||||
leaveTotal = sumLeave - sumHoliday - sumWeekend;
|
||||
|
||||
|
||||
|
||||
var leaveRequest = new LeaveRequest
|
||||
{
|
||||
Type = leaveType,
|
||||
|
|
@ -297,6 +295,218 @@ namespace BMA.EHR.Leave.Service.Controllers
|
|||
return Success(new { id = leaveRequest.Id });
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// LV2_020 - แก้ไขคำขอการลา
|
||||
/// </summary>
|
||||
/// <returns>
|
||||
/// </returns>
|
||||
/// <response code="200">เมื่อทำรายการสำเร็จ</response>
|
||||
/// <response code="401">ไม่ได้ Login เข้าระบบ</response>
|
||||
/// <response code="500">เมื่อเกิดข้อผิดพลาดในการทำงาน</response>
|
||||
[HttpPut("user/{id:guid}")]
|
||||
[ProducesResponseType(StatusCodes.Status200OK)]
|
||||
[ProducesResponseType(StatusCodes.Status401Unauthorized)]
|
||||
[ProducesResponseType(StatusCodes.Status500InternalServerError)]
|
||||
public async Task<ActionResult<ResponseObject>> EditLeaveRequestAsync(Guid id, [FromForm] CreateLeaveRequestDto req)
|
||||
{
|
||||
var oldData = await _leaveRequestRepository.GetByIdAsync(id);
|
||||
if (oldData == null)
|
||||
{
|
||||
return Error(GlobalMessages.DataNotFound);
|
||||
}
|
||||
|
||||
|
||||
|
||||
var userId = UserId == null ? Guid.Empty : Guid.Parse(UserId);
|
||||
var thisYear = DateTime.Now.Year;
|
||||
|
||||
var profile = await _userProfileRepository.GetProfileByKeycloakIdAsync(userId);
|
||||
|
||||
if (profile == null)
|
||||
{
|
||||
return Error(GlobalMessages.DataNotFound, StatusCodes.Status404NotFound);
|
||||
}
|
||||
|
||||
var leaveType = await _leaveTypeRepository.GetByIdAsync(req.Type);
|
||||
if (leaveType == null)
|
||||
{
|
||||
return Error(GlobalMessages.DataNotFound, StatusCodes.Status404NotFound);
|
||||
}
|
||||
|
||||
var sumLeave = req.LeaveStartDate.DiffDay(req.LeaveEndDate);
|
||||
var sumHoliday = await _holidayRepository.GetHolidayCountAsync(req.LeaveStartDate, req.LeaveEndDate);
|
||||
var sumWeekend = _holidayRepository.GetWeekEndCount(req.LeaveStartDate, req.LeaveEndDate);
|
||||
|
||||
var leaveTotal = 0.0;
|
||||
if (req.LeaveRange != "ALL")
|
||||
leaveTotal = 0.5;
|
||||
else
|
||||
leaveTotal = sumLeave - sumHoliday - sumWeekend;
|
||||
|
||||
var leaveRequest = new LeaveRequest
|
||||
{
|
||||
Id = id,
|
||||
Type = leaveType,
|
||||
LeaveRange = req.LeaveRange,
|
||||
LeaveStartDate = req.LeaveStartDate,
|
||||
LeaveEndDate = req.LeaveEndDate,
|
||||
LeaveWrote = req.LeaveWrote ?? "",
|
||||
LeaveDetail = req.LeaveDetail ?? "",
|
||||
LeaveAddress = req.LeaveAddress ?? "",
|
||||
LeaveNumber = req.LeaveNumber ?? "",
|
||||
//LeaveTotal = req.LeaveStartDate.DiffDay(req.LeaveEndDate),
|
||||
LeaveTotal = leaveTotal,
|
||||
|
||||
|
||||
LeaveSalaryText = req.LeaveSalaryText ?? "",
|
||||
LeaveStatus = oldData.LeaveStatus,
|
||||
KeycloakUserId = userId,
|
||||
ApproveStep = oldData.ApproveStep
|
||||
};
|
||||
|
||||
// get leave last
|
||||
leaveRequest.LeaveLast = await _leaveRequestRepository.GetLeaveLastByTypeForUserAsync(userId, req.Type);
|
||||
|
||||
// upload document
|
||||
if (req.LeaveDocument != null)
|
||||
{
|
||||
var doc = await _minIOService.UploadFileAsync(req.LeaveDocument);
|
||||
if (doc != null)
|
||||
{
|
||||
leaveRequest.LeaveDocument = doc;
|
||||
}
|
||||
}
|
||||
|
||||
// upload draft document
|
||||
if (req.LeaveDraftDocument != null)
|
||||
{
|
||||
var doc = await _minIOService.UploadFileAsync(req.LeaveDraftDocument);
|
||||
if (doc != null)
|
||||
{
|
||||
leaveRequest.LeaveDraftDocument = doc;
|
||||
}
|
||||
}
|
||||
|
||||
// switch from leave type
|
||||
switch (leaveType.Code.Trim().ToUpper())
|
||||
{
|
||||
case "LV-004":
|
||||
{
|
||||
leaveRequest.WifeDayName = req.WifeDayName ?? "";
|
||||
leaveRequest.WifeDayDateBorn = req.WifeDayDateBorn ?? "";
|
||||
}
|
||||
break;
|
||||
case "LV-005":
|
||||
{
|
||||
leaveRequest.RestDayOldTotal =
|
||||
await _leaveRequestRepository.GetRestDayTotalByYearForUserAsync(userId, thisYear - 1);
|
||||
leaveRequest.RestDayCurrentTotal =
|
||||
await _leaveRequestRepository.GetRestDayTotalByYearForUserAsync(userId, thisYear);
|
||||
}
|
||||
break;
|
||||
case "LV-006":
|
||||
{
|
||||
leaveRequest.OrdainDayStatus = req.OrdainDayStatus ?? false;
|
||||
leaveRequest.OrdainDayLocationName = req.OrdainDayLocationName ?? "";
|
||||
leaveRequest.OrdainDayLocationAddress = req.OrdainDayLocationAddress ?? "";
|
||||
leaveRequest.OrdainDayLocationNumber = req.OrdainDayLocationNumber ?? "";
|
||||
if (req.OrdainDayOrdination != null)
|
||||
leaveRequest.OrdainDayOrdination = req.OrdainDayOrdination.Value;
|
||||
|
||||
leaveRequest.OrdainDayBuddhistLentName = req.OrdainDayBuddhistLentName ?? "";
|
||||
|
||||
leaveRequest.OrdainDayBuddhistLentAddress = req.OrdainDayBuddhistLentAddress ?? "";
|
||||
|
||||
leaveRequest.LeaveBirthDate = profile.BirthDate;
|
||||
leaveRequest.LeaveGovernmentDate = profile.DateStart;
|
||||
|
||||
leaveRequest.HajjDayStatus = req.HajjDayStatus ?? false;
|
||||
}
|
||||
break;
|
||||
case "LV-007":
|
||||
{
|
||||
leaveRequest.AbsentDayLocation = req.AbsentDayLocation ?? "";
|
||||
leaveRequest.AbsentDaySummon = req.AbsentDaySummon ?? "";
|
||||
if (req.AbsentDayRegistorDate != null)
|
||||
leaveRequest.AbsentDayRegistorDate = req.AbsentDayRegistorDate.Value;
|
||||
|
||||
leaveRequest.AbsentDayGetIn = req.AbsentDayGetIn ?? "";
|
||||
|
||||
leaveRequest.AbsentDayAt = req.AbsentDayAt ?? "";
|
||||
}
|
||||
break;
|
||||
case "LV-008":
|
||||
{
|
||||
var lastSalary = profile.Salaries.OrderByDescending(x => x.Order).FirstOrDefault();
|
||||
|
||||
leaveRequest.LeaveSalary = lastSalary == null ? 0 : (int)lastSalary.Amount.Value;
|
||||
leaveRequest.LeaveSalaryText =
|
||||
lastSalary == null ? "" : ((int)lastSalary.Amount.Value).ToThaiBahtText(false);
|
||||
leaveRequest.LeaveBirthDate = profile.BirthDate;
|
||||
leaveRequest.LeaveGovernmentDate = profile.DateStart;
|
||||
|
||||
leaveRequest.StudyDaySubject = req.StudyDaySubject ?? "";
|
||||
leaveRequest.StudyDayDegreeLevel = req.StudyDayDegreeLevel ?? "";
|
||||
leaveRequest.StudyDayUniversityName = req.StudyDayUniversityName ?? "";
|
||||
leaveRequest.StudyDayCountry = req.StudyDayCountry ?? "";
|
||||
leaveRequest.StudyDayScholarship = req.StudyDayScholarship ?? "";
|
||||
|
||||
leaveRequest.StudyDayTrainingSubject = req.StudyDayTrainingSubject ?? "";
|
||||
leaveRequest.StudyDayTrainingName = req.StudyDayTrainingName ?? "";
|
||||
}
|
||||
break;
|
||||
case "LV-010":
|
||||
{
|
||||
var lastSalary = profile.Salaries.OrderByDescending(x => x.Order).FirstOrDefault();
|
||||
|
||||
leaveRequest.LeaveSalary = lastSalary == null ? 0 : (int)lastSalary.Amount.Value;
|
||||
leaveRequest.LeaveSalaryText =
|
||||
lastSalary == null ? "" : ((int)lastSalary.Amount.Value).ToThaiBahtText(false);
|
||||
|
||||
leaveRequest.CoupleDayName = req.CoupleDayName ?? "";
|
||||
leaveRequest.CoupleDayPosition = req.CoupleDayPosition ?? "";
|
||||
leaveRequest.CoupleDayLevel = req.CoupleDayLevel ?? "";
|
||||
leaveRequest.CoupleDayLevelCountry = req.CoupleDayLevelCountry ?? "";
|
||||
leaveRequest.CoupleDayCountryHistory = req.CoupleDayCountryHistory ?? "";
|
||||
leaveRequest.CoupleDayTotalHistory = req.CoupleDayTotalHistory ?? "";
|
||||
|
||||
if (req.CoupleDayStartDateHistory != null)
|
||||
leaveRequest.CoupleDayStartDateHistory = req.CoupleDayStartDateHistory.Value;
|
||||
|
||||
if (req.CoupleDayEndDateHistory != null)
|
||||
leaveRequest.CoupleDayEndDateHistory = req.CoupleDayEndDateHistory.Value;
|
||||
|
||||
leaveRequest.CoupleDaySumTotalHistory = req.CoupleDaySumTotalHistory ?? "";
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
// add dear and oc_data
|
||||
var rootOc = _userProfileRepository.GetRootOcId(profile.OcId ?? Guid.Empty);
|
||||
var approver = string.Empty;
|
||||
if (rootOc != null)
|
||||
{
|
||||
var list = await _commandRepository.GetOrgApproverAsync(rootOc ?? Guid.Empty);
|
||||
if (list.Count > 0)
|
||||
approver = list.First().Name;
|
||||
}
|
||||
|
||||
leaveRequest.LeaveTypeCode = leaveType.Code;
|
||||
leaveRequest.Dear = approver;
|
||||
leaveRequest.PositionName = profile.Position == null ? "" : profile.Position.Name;
|
||||
leaveRequest.PositionLevelName = profile.PositionLevel == null ? "" : profile.PositionLevel.Name;
|
||||
leaveRequest.OrganizationName = profile.Oc ?? "";
|
||||
|
||||
// delet old
|
||||
await _leaveRequestRepository.DeleteAsync(oldData);
|
||||
|
||||
// save to database
|
||||
await _leaveRequestRepository.AddAsync(leaveRequest);
|
||||
|
||||
return Success(new { id = leaveRequest.Id });
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// LV2_002 - ข้อมูลที่ user ขอยื่นลา (USER)
|
||||
/// </summary>
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue