Add New API and Correct Reopen Issue
This commit is contained in:
parent
84e656b0c8
commit
3b054f21cc
13 changed files with 2678 additions and 4 deletions
|
|
@ -381,6 +381,7 @@ namespace BMA.EHR.Leave.Service.Controllers
|
|||
FullName = $"{profile.Prefix.Name}{profile.FirstName} {profile.LastName}",
|
||||
LeaveStartDate = item.LeaveStartDate,
|
||||
LeaveEndDate = item.LeaveEndDate,
|
||||
KeycloakId = item.KeycloakUserId
|
||||
};
|
||||
|
||||
result.Add(resData);
|
||||
|
|
@ -440,7 +441,7 @@ namespace BMA.EHR.Leave.Service.Controllers
|
|||
}
|
||||
|
||||
/// <summary>
|
||||
/// LV2_004 - รายละเอียดการลา (USER)
|
||||
/// LV2_007 - รายละเอียดการลา (USER)
|
||||
/// </summary>
|
||||
/// <returns>
|
||||
/// </returns>
|
||||
|
|
@ -607,6 +608,7 @@ namespace BMA.EHR.Leave.Service.Controllers
|
|||
|
||||
// change status to delete
|
||||
data.LeaveStatus = "DELETE";
|
||||
data.CancelLeaveWrote = req.LeaveWrote ?? "";
|
||||
|
||||
// add cancel status to new
|
||||
data.LeaveCancelStatus = "NEW";
|
||||
|
|
@ -630,7 +632,7 @@ namespace BMA.EHR.Leave.Service.Controllers
|
|||
}
|
||||
|
||||
/// <summary>
|
||||
/// LV2_015 - รายการขอยกเลิกการลา (ADMIN)
|
||||
/// LV2_014 - รายการขอยกเลิกการลา (ADMIN)
|
||||
/// </summary>
|
||||
/// <returns>
|
||||
/// </returns>
|
||||
|
|
@ -699,13 +701,13 @@ namespace BMA.EHR.Leave.Service.Controllers
|
|||
if (profile == null)
|
||||
{
|
||||
return Error(GlobalMessages.DataNotFound, StatusCodes.Status404NotFound);
|
||||
}
|
||||
}
|
||||
|
||||
var result = new GetCancelLeaveRequestByIdDto
|
||||
{
|
||||
Id = rawData.Id,
|
||||
LeaveTypeName = rawData.Type.Name,
|
||||
FullName = $"{profile.Prefix.Name}{profile.FirstName} {profile.LastName}",
|
||||
FullName = $"{profile.Prefix.Name}{profile.FirstName} {profile.LastName}",
|
||||
Status = rawData.LeaveCancelStatus,
|
||||
LeaveStartDate = rawData.LeaveStartDate,
|
||||
LeaveEndDate = rawData.LeaveEndDate,
|
||||
|
|
@ -721,6 +723,284 @@ namespace BMA.EHR.Leave.Service.Controllers
|
|||
return Success(result);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// LV2_018 - ผู้มีอำนาจอนุมัติขอยกเลิกการลา(ADMIN)
|
||||
/// </summary>
|
||||
/// <returns>
|
||||
/// </returns>
|
||||
/// <response code="200">เมื่อทำรายการสำเร็จ</response>
|
||||
/// <response code="401">ไม่ได้ Login เข้าระบบ</response>
|
||||
/// <response code="500">เมื่อเกิดข้อผิดพลาดในการทำงาน</response>
|
||||
[HttpPut("admin/delete/approve/{id:guid}")]
|
||||
[ProducesResponseType(StatusCodes.Status200OK)]
|
||||
[ProducesResponseType(StatusCodes.Status401Unauthorized)]
|
||||
[ProducesResponseType(StatusCodes.Status500InternalServerError)]
|
||||
public async Task<ActionResult<ResponseObject>> ApproveCancelLeaveRequestAsync(Guid id, [FromBody] CancelLeaveRequestApproveDto req)
|
||||
{
|
||||
|
||||
await _leaveRequestRepository.ApproveCancelLeaveRequestAsync(id, req.Reason ?? "");
|
||||
|
||||
return Success();
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// LV2_019 - ผู้มีอำนาจไม่อนุมัติขอยกเลิกการลา(ADMIN)
|
||||
/// </summary>
|
||||
/// <returns>
|
||||
/// </returns>
|
||||
/// <response code="200">เมื่อทำรายการสำเร็จ</response>
|
||||
/// <response code="401">ไม่ได้ Login เข้าระบบ</response>
|
||||
/// <response code="500">เมื่อเกิดข้อผิดพลาดในการทำงาน</response>
|
||||
[HttpPut("admin/delete/reject/{id:guid}")]
|
||||
[ProducesResponseType(StatusCodes.Status200OK)]
|
||||
[ProducesResponseType(StatusCodes.Status401Unauthorized)]
|
||||
[ProducesResponseType(StatusCodes.Status500InternalServerError)]
|
||||
public async Task<ActionResult<ResponseObject>> RejectCancelLeaveRequestAsync(Guid id, [FromBody] CancelLeaveRequestApproveDto req)
|
||||
{
|
||||
|
||||
await _leaveRequestRepository.RejectCancelLeaveRequestAsync(id, req.Reason ?? "");
|
||||
|
||||
return Success();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// LV2_013 - เจ้าหน้าที่อนุมัติการลา (ADMIN)
|
||||
/// </summary>
|
||||
/// <returns>
|
||||
/// </returns>
|
||||
/// <response code="200">เมื่อทำรายการสำเร็จ</response>
|
||||
/// <response code="401">ไม่ได้ Login เข้าระบบ</response>
|
||||
/// <response code="500">เมื่อเกิดข้อผิดพลาดในการทำงาน</response>
|
||||
[HttpGet("admin/approve/officer/{id:guid}")]
|
||||
[ProducesResponseType(StatusCodes.Status200OK)]
|
||||
[ProducesResponseType(StatusCodes.Status401Unauthorized)]
|
||||
[ProducesResponseType(StatusCodes.Status500InternalServerError)]
|
||||
public async Task<ActionResult<ResponseObject>> OfficerApproveLeaveRequestAsync(Guid id)
|
||||
{
|
||||
|
||||
await _leaveRequestRepository.OfficerApproveLeaveRequest(id);
|
||||
|
||||
return Success();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// LV2_015 - ผู้บังคับบัญชาอนุมัติการลา(ADMIN)
|
||||
/// </summary>
|
||||
/// <returns>
|
||||
/// </returns>
|
||||
/// <response code="200">เมื่อทำรายการสำเร็จ</response>
|
||||
/// <response code="401">ไม่ได้ Login เข้าระบบ</response>
|
||||
/// <response code="500">เมื่อเกิดข้อผิดพลาดในการทำงาน</response>
|
||||
[HttpPut("admin/approve/commander/{id:guid}")]
|
||||
[ProducesResponseType(StatusCodes.Status200OK)]
|
||||
[ProducesResponseType(StatusCodes.Status401Unauthorized)]
|
||||
[ProducesResponseType(StatusCodes.Status500InternalServerError)]
|
||||
public async Task<ActionResult<ResponseObject>> CommanderApproveLeaveRequestAsync(Guid id, [FromBody] LeaveRequestApproveDto req)
|
||||
{
|
||||
|
||||
await _leaveRequestRepository.CommanderApproveLeaveRequest(id, req.Reason ?? "");
|
||||
|
||||
return Success();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// LV2_016 - ผู้มีอำนาจอนุมัติการลา (ADMIN)
|
||||
/// </summary>
|
||||
/// <returns>
|
||||
/// </returns>
|
||||
/// <response code="200">เมื่อทำรายการสำเร็จ</response>
|
||||
/// <response code="401">ไม่ได้ Login เข้าระบบ</response>
|
||||
/// <response code="500">เมื่อเกิดข้อผิดพลาดในการทำงาน</response>
|
||||
[HttpPut("admin/approve/{id:guid}")]
|
||||
[ProducesResponseType(StatusCodes.Status200OK)]
|
||||
[ProducesResponseType(StatusCodes.Status401Unauthorized)]
|
||||
[ProducesResponseType(StatusCodes.Status500InternalServerError)]
|
||||
public async Task<ActionResult<ResponseObject>> ApproveLeaveRequestAsync(Guid id, [FromBody] LeaveRequestApproveDto req)
|
||||
{
|
||||
|
||||
await _leaveRequestRepository.ApproveLeaveRequest(id, req.Reason ?? "");
|
||||
|
||||
return Success();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// LV2_017 - ผู้มีอำนาจไม่อนุมัติการลา (ADMIN)
|
||||
/// </summary>
|
||||
/// <returns>
|
||||
/// </returns>
|
||||
/// <response code="200">เมื่อทำรายการสำเร็จ</response>
|
||||
/// <response code="401">ไม่ได้ Login เข้าระบบ</response>
|
||||
/// <response code="500">เมื่อเกิดข้อผิดพลาดในการทำงาน</response>
|
||||
[HttpPut("admin/reject/{id:guid}")]
|
||||
[ProducesResponseType(StatusCodes.Status200OK)]
|
||||
[ProducesResponseType(StatusCodes.Status401Unauthorized)]
|
||||
[ProducesResponseType(StatusCodes.Status500InternalServerError)]
|
||||
public async Task<ActionResult<ResponseObject>> RejectLeaveRequestAsync(Guid id, [FromBody] LeaveRequestApproveDto req)
|
||||
{
|
||||
|
||||
await _leaveRequestRepository.RejectLeaveRequest(id, req.Reason ?? "");
|
||||
|
||||
return Success();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// LV2_012 - รายละเอียดการลา (ADMIN)
|
||||
/// </summary>
|
||||
/// <returns>
|
||||
/// </returns>
|
||||
/// <response code="200">เมื่อทำรายการสำเร็จ</response>
|
||||
/// <response code="401">ไม่ได้ Login เข้าระบบ</response>
|
||||
/// <response code="500">เมื่อเกิดข้อผิดพลาดในการทำงาน</response>
|
||||
[HttpGet("admin/{id:guid}")]
|
||||
[ProducesResponseType(StatusCodes.Status200OK)]
|
||||
[ProducesResponseType(StatusCodes.Status401Unauthorized)]
|
||||
[ProducesResponseType(StatusCodes.Status500InternalServerError)]
|
||||
public async Task<ActionResult<ResponseObject>> GetLeaveRequestForAdminByIdAsync(Guid id)
|
||||
{
|
||||
var rawData = await _leaveRequestRepository.GetByIdAsync(id);
|
||||
|
||||
var thisYear = DateTime.Now.Year;
|
||||
|
||||
if (rawData == null)
|
||||
{
|
||||
return Error(GlobalMessages.DataNotFound, StatusCodes.Status404NotFound);
|
||||
}
|
||||
|
||||
var profile = await _userProfileRepository.GetProfileByKeycloakIdAsync(rawData.KeycloakUserId);
|
||||
|
||||
if (profile == null)
|
||||
{
|
||||
return Error(GlobalMessages.DataNotFound, StatusCodes.Status404NotFound);
|
||||
}
|
||||
|
||||
var lastSalary = profile.Salaries.OrderByDescending(x => x.Order).FirstOrDefault();
|
||||
var lastSalaryAmount = lastSalary == null ? 0 : lastSalary.Amount ?? 0;
|
||||
|
||||
var lastLeaveRequest = await _leaveRequestRepository.GetLastLeaveRequestByTypeForUserAsync(rawData.KeycloakUserId, rawData.Type.Id);
|
||||
|
||||
var result = new GetLeaveRequestForAdminByIdDto
|
||||
{
|
||||
Id = rawData.Id,
|
||||
ReasonCommander = rawData.LeaveComment ?? "",
|
||||
ReasonOligarch = rawData.LeaveDirectorComment ?? "",
|
||||
PositionName = profile.Position == null ? "" : profile.Position.Name,
|
||||
PositionLevelName = profile.PositionLevel == null ? "" : profile.PositionLevel.Name,
|
||||
OrganizationName = profile.Oc ?? "",
|
||||
LeaveTypeName = rawData.Type.Name,
|
||||
LeaveTypeId = rawData.Type.Id,
|
||||
FullName = $"{profile.Prefix.Name}{profile.FirstName} {profile.LastName}",
|
||||
DateSendLeave = rawData.CreatedAt,
|
||||
Status = rawData.LeaveStatus,
|
||||
LeaveStartDate = rawData.LeaveStartDate,
|
||||
LeaveEndDate = rawData.LeaveEndDate,
|
||||
LeaveWrote = rawData.LeaveWrote,
|
||||
LeaveAddress = rawData.LeaveAddress,
|
||||
LeaveNumber = rawData.LeaveNumber,
|
||||
LeaveDetail = rawData.LeaveDetail,
|
||||
LeaveDocument = await _minIOService.ImagesPath(rawData.LeaveDocument.Id),
|
||||
LeaveDraftDocument = await _minIOService.ImagesPath(rawData.LeaveDraftDocument.Id),
|
||||
|
||||
LeaveLastStart = lastLeaveRequest == null ? null : lastLeaveRequest.LeaveStartDate,
|
||||
LeaveLastEnd = lastLeaveRequest == null ? null : lastLeaveRequest.LeaveEndDate,
|
||||
LeaveTotal = rawData.LeaveStartDate.DiffDay(rawData.LeaveEndDate),
|
||||
LeaveBirthDate = profile.BirthDate,
|
||||
LeaveGovernmentDate = profile.DateAppoint == null ? null : profile.DateAppoint.Value,
|
||||
|
||||
LeaveSalary = lastSalary == null ? 0 : lastSalaryAmount,
|
||||
LeaveSalaryText = lastSalary == null ? "" : ((int)lastSalaryAmount).ToThaiBahtText(false),
|
||||
|
||||
WifeDayName = rawData.WifeDayName,
|
||||
WifeDayDateBorn = rawData.WifeDayDateBorn,
|
||||
RestDayOldTotal = rawData.RestDayOldTotal,
|
||||
RestDayCurrentTotal = rawData.RestDayCurrentTotal,
|
||||
OrdainDayStatus = rawData.OrdainDayStatus,
|
||||
OrdainDayLocationName = rawData.OrdainDayLocationName,
|
||||
OrdainDayLocationAddress = rawData.OrdainDayLocationAddress,
|
||||
OrdainDayLocationNumber = rawData.OrdainDayLocationNumber,
|
||||
OrdainDayOrdination = rawData.OrdainDayOrdination,
|
||||
OrdainDayBuddhistLentName = rawData.OrdainDayBuddhistLentName,
|
||||
OrdainDayBuddhistLentAddress = rawData.OrdainDayBuddhistLentAddress,
|
||||
HajjDayStatus = rawData.HajjDayStatus,
|
||||
|
||||
AbsentDaySummon = rawData.AbsentDaySummon,
|
||||
AbsentDayLocation = rawData.AbsentDayLocation,
|
||||
AbsentDayRegistorDate = rawData.AbsentDayRegistorDate,
|
||||
AbsentDayGetIn = rawData.AbsentDayGetIn,
|
||||
AbsentDayAt = rawData.AbsentDayAt,
|
||||
|
||||
StudyDaySubject = rawData.StudyDaySubject,
|
||||
StudyDayDegreeLevel = rawData.StudyDayDegreeLevel,
|
||||
StudyDayUniversityName = rawData.StudyDayUniversityName,
|
||||
StudyDayTrainingSubject = rawData.StudyDayTrainingSubject,
|
||||
StudyDayTrainingName = rawData.StudyDayTrainingName,
|
||||
StudyDayCountry = rawData.StudyDayCountry,
|
||||
StudyDayScholarship = rawData.StudyDayScholarship,
|
||||
|
||||
CoupleDayName = rawData.CoupleDayName,
|
||||
CoupleDayPosition = rawData.CoupleDayPosition,
|
||||
CoupleDayLevel = rawData.CoupleDayLevel,
|
||||
CoupleDayLevelCountry = rawData.CoupleDayLevelCountry,
|
||||
CoupleDayCountryHistory = rawData.CoupleDayCountryHistory,
|
||||
CoupleDayTotalHistory = rawData.CoupleDayTotalHistory,
|
||||
CoupleDayStartDateHistory = rawData.CoupleDayStartDateHistory,
|
||||
CoupleDayEndDateHistory = rawData.CoupleDayEndDateHistory,
|
||||
CoupleDaySumTotalHistory = rawData.CoupleDaySumTotalHistory,
|
||||
|
||||
};
|
||||
|
||||
return Success(result);
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// LV2_009 - รายการตารางสถิติการลา (USER)
|
||||
/// </summary>
|
||||
/// <returns>
|
||||
/// </returns>
|
||||
/// <response code="200">เมื่อทำรายการสำเร็จ</response>
|
||||
/// <response code="401">ไม่ได้ Login เข้าระบบ</response>
|
||||
/// <response code="500">เมื่อเกิดข้อผิดพลาดในการทำงาน</response>
|
||||
[HttpGet("user/summary")]
|
||||
[ProducesResponseType(StatusCodes.Status200OK)]
|
||||
[ProducesResponseType(StatusCodes.Status401Unauthorized)]
|
||||
[ProducesResponseType(StatusCodes.Status500InternalServerError)]
|
||||
public async Task<ActionResult<ResponseObject>> GetUserLeaveSummaryAsync()
|
||||
{
|
||||
var userId = UserId == null ? Guid.Empty : Guid.Parse(UserId);
|
||||
var leaveTypes = await _leaveTypeRepository.GetAllAsync();
|
||||
var thisYear = DateTime.Now.Year;
|
||||
|
||||
var result = new List<dynamic>();
|
||||
foreach (var leaveType in leaveTypes)
|
||||
{
|
||||
var send = await _leaveRequestRepository.GetSumSendLeaveByTypeForUserAsync(userId, leaveType.Id, thisYear);
|
||||
|
||||
var approve = await _leaveRequestRepository.GetSumApproveLeaveByTypeForUserAsync(userId, leaveType.Id, thisYear);
|
||||
|
||||
var reject = await _leaveRequestRepository.GetSumRejectLeaveByTypeForUserAsync(userId, leaveType.Id, thisYear);
|
||||
|
||||
var delete = await _leaveRequestRepository.GetSumDeleteLeaveByTypeForUserAsync(userId, leaveType.Id, thisYear);
|
||||
|
||||
var data = new
|
||||
{
|
||||
Id = leaveType.Id,
|
||||
LeaveTypeName = leaveType.Name,
|
||||
LeaveLimit = leaveType.Limit,
|
||||
LeaveExtend = 0,
|
||||
leavePercent = Math.Round((approve * 100.0) / leaveType.Limit, 2),
|
||||
LeaveCountSend = send,
|
||||
LeaveCountApprove = approve,
|
||||
LeaveCountReject = reject,
|
||||
LeaveCountDelete = delete,
|
||||
};
|
||||
result.Add(data);
|
||||
|
||||
}
|
||||
|
||||
return Success(result);
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue