This commit is contained in:
parent
946721ffb2
commit
5efb1c99c6
8 changed files with 398 additions and 23 deletions
|
|
@ -136,7 +136,49 @@ namespace BMA.EHR.Leave.Service.Controllers
|
|||
|
||||
if (req.Keyword != "")
|
||||
result = result.Where(x => x.FullName!.Contains(req.Keyword)).ToList();
|
||||
|
||||
if (!string.IsNullOrWhiteSpace(req.sortBy))
|
||||
{
|
||||
switch (req.sortBy.ToUpper())
|
||||
{
|
||||
case "FULLNAME":
|
||||
if (req.descending == true)
|
||||
result = result.OrderByDescending(x => x.Prefix)
|
||||
.ThenByDescending(x => x.FirstName)
|
||||
.ThenByDescending(x => x.LastName)
|
||||
.ToList();
|
||||
else
|
||||
result = result.OrderBy(x => x.Prefix)
|
||||
.ThenBy(x => x.FirstName)
|
||||
.ThenBy(x => x.LastName)
|
||||
.ToList();
|
||||
break;
|
||||
case "LEAVETYPE":
|
||||
if (req.descending == true)
|
||||
result = result.OrderByDescending(x => x.LeaveType).ToList();
|
||||
else
|
||||
result = result.OrderBy(x => x.LeaveType).ToList();
|
||||
break;
|
||||
case "LEAVEYEAR":
|
||||
if (req.descending == true)
|
||||
result = result.OrderByDescending(x => x.LeaveYear).ToList();
|
||||
else
|
||||
result = result.OrderBy(x => x.LeaveYear).ToList();
|
||||
break;
|
||||
case "LEAVEDAYS":
|
||||
if (req.descending == true)
|
||||
result = result.OrderByDescending(x => x.LeaveDays).ToList();
|
||||
else
|
||||
result = result.OrderBy(x => x.LeaveDays).ToList();
|
||||
break;
|
||||
case "LEAVEDAYSUSED":
|
||||
if (req.descending == true)
|
||||
result = result.OrderByDescending(x => x.LeaveDaysUsed).ToList();
|
||||
else
|
||||
result = result.OrderBy(x => x.LeaveDaysUsed).ToList();
|
||||
break;
|
||||
default: break;
|
||||
}
|
||||
}
|
||||
var pageResult = result.Skip((req.Page - 1) * req.PageSize).Take(req.PageSize).ToList();
|
||||
|
||||
return Success(new { data = pageResult, total = result.Count });
|
||||
|
|
|
|||
|
|
@ -14,10 +14,12 @@ using BMA.EHR.Leave.Service.DTOs.ChangeRound;
|
|||
using BMA.EHR.Leave.Service.DTOs.CheckIn;
|
||||
using BMA.EHR.Leave.Service.DTOs.DutyTime;
|
||||
using BMA.EHR.Leave.Service.DTOs.LeaveRequest;
|
||||
using iTextSharp.text;
|
||||
using Microsoft.AspNetCore.Authorization;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using Microsoft.Extensions.ObjectPool;
|
||||
using Nest;
|
||||
using Newtonsoft.Json;
|
||||
using Newtonsoft.Json.Linq;
|
||||
using RabbitMQ.Client;
|
||||
|
|
@ -1257,7 +1259,7 @@ namespace BMA.EHR.Leave.Service.Controllers
|
|||
[ProducesResponseType(StatusCodes.Status200OK)]
|
||||
[ProducesResponseType(StatusCodes.Status401Unauthorized)]
|
||||
[ProducesResponseType(StatusCodes.Status500InternalServerError)]
|
||||
public async Task<ActionResult<ResponseObject>> LogRecordAsync([Required] DateTime startDate, [Required] DateTime endDate, int page = 1, int pageSize = 10, string keyword = "", string profileType = "ALL")
|
||||
public async Task<ActionResult<ResponseObject>> LogRecordAsync([Required] DateTime startDate, [Required] DateTime endDate, int page = 1, int pageSize = 10, string keyword = "", string profileType = "ALL", string? sortBy = "", bool? descending = false)
|
||||
{
|
||||
var getPermission = await _permission.GetPermissionAPIAsync("LIST", "SYS_CHECKIN");
|
||||
var jsonData = JsonConvert.DeserializeObject<JObject>(getPermission);
|
||||
|
|
@ -1305,6 +1307,9 @@ namespace BMA.EHR.Leave.Service.Controllers
|
|||
Id = d.Id,
|
||||
//FullName = _userProfileRepository.GetUserFullName(d.KeycloakUserId, AccessToken),
|
||||
FullName = $"{d.Prefix ?? ""}{d.FirstName ?? ""} {d.LastName ?? ""}",
|
||||
Prefix = d.Prefix ?? "",
|
||||
FirstName = d.FirstName ?? "",
|
||||
LastName = d.LastName ?? "",
|
||||
ProfileType = d.ProfileType ?? "",
|
||||
|
||||
CheckInDate = d.CheckIn.Date,
|
||||
|
|
@ -1339,6 +1344,61 @@ namespace BMA.EHR.Leave.Service.Controllers
|
|||
if (profileType.Trim().ToUpper() != "ALL")
|
||||
data = data.Where(x => x.ProfileType == profileType.Trim().ToUpper()).ToList();
|
||||
|
||||
if (!string.IsNullOrWhiteSpace(sortBy))
|
||||
{
|
||||
switch (sortBy.ToUpper())
|
||||
{
|
||||
case "FULLNAME":
|
||||
if (descending == true)
|
||||
data = data.OrderByDescending(x => x.Prefix)
|
||||
.ThenByDescending(x => x.FirstName)
|
||||
.ThenByDescending(x => x.LastName)
|
||||
.ToList();
|
||||
else
|
||||
data = data.OrderBy(x => x.Prefix)
|
||||
.ThenBy(x => x.FirstName)
|
||||
.ThenBy(x => x.LastName)
|
||||
.ToList();
|
||||
break;
|
||||
case "CHECKINTIME":
|
||||
if (descending == true)
|
||||
data = data.OrderByDescending(x => x.CheckInTime).ToList();
|
||||
else
|
||||
data = data.OrderBy(x => x.CheckInTime).ToList();
|
||||
break;
|
||||
case "CHECKINLOCATION":
|
||||
if (descending == true)
|
||||
data = data.OrderByDescending(x => x.CheckInLocation)
|
||||
.ThenByDescending(x => x.CheckInLat)
|
||||
.ThenByDescending(x => x.CheckInLon)
|
||||
.ToList();
|
||||
else
|
||||
data = data.OrderBy(x => x.CheckInLocation)
|
||||
.ThenBy(x => x.CheckInLat)
|
||||
.ThenBy(x => x.CheckInLon)
|
||||
.ToList();
|
||||
break;
|
||||
case "CHECKOUTTIME":
|
||||
if (descending == true)
|
||||
data = data.OrderByDescending(x => x.CheckOutTime).ToList();
|
||||
else
|
||||
data = data.OrderBy(x => x.CheckOutTime).ToList();
|
||||
break;
|
||||
case "CHECKOUTLOCATION":
|
||||
if (descending == true)
|
||||
data = data.OrderByDescending(x => x.CheckOutLocation)
|
||||
.ThenByDescending(x => x.CheckOutLat)
|
||||
.ThenByDescending(x => x.CheckOutLon)
|
||||
.ToList();
|
||||
else
|
||||
data = data.OrderBy(x => x.CheckOutLocation)
|
||||
.ThenBy(x => x.CheckOutLat)
|
||||
.ThenBy(x => x.CheckOutLon)
|
||||
.ToList();
|
||||
break;
|
||||
default: break;
|
||||
}
|
||||
}
|
||||
var pageData = data
|
||||
.Skip((page - 1) * pageSize)
|
||||
.Take(pageSize)
|
||||
|
|
@ -1470,7 +1530,7 @@ namespace BMA.EHR.Leave.Service.Controllers
|
|||
[ProducesResponseType(StatusCodes.Status401Unauthorized)]
|
||||
[ProducesResponseType(StatusCodes.Status500InternalServerError)]
|
||||
[AllowAnonymous]
|
||||
public async Task<ActionResult<ResponseObject>> GetTimeRecordAsync([Required] DateTime startDate, [Required] DateTime endDate, int page = 1, int pageSize = 10, string status = "NORMAL", string keyword = "", string profileType = "ALL")
|
||||
public async Task<ActionResult<ResponseObject>> GetTimeRecordAsync([Required] DateTime startDate, [Required] DateTime endDate, int page = 1, int pageSize = 10, string status = "NORMAL", string keyword = "", string profileType = "ALL", string? sortBy = "", bool? descending = false)
|
||||
{
|
||||
var getPermission = await _permission.GetPermissionAPIAsync("LIST", "SYS_CHECKIN");
|
||||
var jsonData = JsonConvert.DeserializeObject<JObject>(getPermission);
|
||||
|
|
@ -1557,6 +1617,9 @@ namespace BMA.EHR.Leave.Service.Controllers
|
|||
{
|
||||
Id = d.Id,
|
||||
FullName = $"{d.Prefix ?? ""}{d.FirstName ?? ""} {d.LastName ?? ""}",
|
||||
Prefix = d.Prefix ?? "",
|
||||
FirstName = d.FirstName ?? "",
|
||||
LastName = d.LastName ?? "",
|
||||
ProfileType = d.ProfileType ?? "",
|
||||
|
||||
CheckInDate = d.CheckIn.Date,
|
||||
|
|
@ -1656,6 +1719,61 @@ namespace BMA.EHR.Leave.Service.Controllers
|
|||
if (profileType.Trim().ToUpper() != "ALL")
|
||||
data = data.Where(x => x.ProfileType == profileType.Trim().ToUpper()).ToList();
|
||||
|
||||
if (!string.IsNullOrWhiteSpace(sortBy))
|
||||
{
|
||||
switch (sortBy.ToUpper())
|
||||
{
|
||||
case "FULLNAME":
|
||||
if (descending == true)
|
||||
data = data.OrderByDescending(x => x.Prefix)
|
||||
.ThenByDescending(x => x.FirstName)
|
||||
.ThenByDescending(x => x.LastName)
|
||||
.ToList();
|
||||
else
|
||||
data = data.OrderBy(x => x.Prefix)
|
||||
.ThenBy(x => x.FirstName)
|
||||
.ThenBy(x => x.LastName)
|
||||
.ToList();
|
||||
break;
|
||||
case "CHECKINTIME":
|
||||
if (descending == true)
|
||||
data = data.OrderByDescending(x => x.CheckInTime).ToList();
|
||||
else
|
||||
data = data.OrderBy(x => x.CheckInTime).ToList();
|
||||
break;
|
||||
case "CHECKINLOCATION":
|
||||
if (descending == true)
|
||||
data = data.OrderByDescending(x => x.CheckInLocation)
|
||||
.ThenByDescending(x => x.CheckInLat)
|
||||
.ThenByDescending(x => x.CheckInLon)
|
||||
.ToList();
|
||||
else
|
||||
data = data.OrderBy(x => x.CheckInLocation)
|
||||
.ThenBy(x => x.CheckInLat)
|
||||
.ThenBy(x => x.CheckInLon)
|
||||
.ToList();
|
||||
break;
|
||||
case "CHECKOUTTIME":
|
||||
if (descending == true)
|
||||
data = data.OrderByDescending(x => x.CheckOutTime).ToList();
|
||||
else
|
||||
data = data.OrderBy(x => x.CheckOutTime).ToList();
|
||||
break;
|
||||
case "CHECKOUTLOCATION":
|
||||
if (descending == true)
|
||||
data = data.OrderByDescending(x => x.CheckOutLocation)
|
||||
.ThenByDescending(x => x.CheckOutLat)
|
||||
.ThenByDescending(x => x.CheckOutLon)
|
||||
.ToList();
|
||||
else
|
||||
data = data.OrderBy(x => x.CheckOutLocation)
|
||||
.ThenBy(x => x.CheckOutLat)
|
||||
.ThenBy(x => x.CheckOutLon)
|
||||
.ToList();
|
||||
break;
|
||||
default: break;
|
||||
}
|
||||
}
|
||||
var pageData = data
|
||||
.Skip((page - 1) * pageSize)
|
||||
.Take(pageSize)
|
||||
|
|
@ -1712,13 +1830,13 @@ namespace BMA.EHR.Leave.Service.Controllers
|
|||
}
|
||||
var profile = await _userProfileRepository.SearchProfile(req.CitizenId, req.FirstName, req.LastName, AccessToken ?? "", role, nodeId, profileAdmin?.Node);
|
||||
|
||||
var pagedProfile = profile.Skip((req.Page - 1) * req.PageSize).Take(req.PageSize).ToList();
|
||||
//var pagedProfile = profile.Skip((req.Page - 1) * req.PageSize).Take(req.PageSize).ToList();
|
||||
|
||||
var getDefaultRound = await _dutyTimeRepository.GetDefaultAsync();
|
||||
|
||||
var resultSet = new List<SearchProfileResultDto>();
|
||||
|
||||
foreach (var p in pagedProfile)
|
||||
foreach (var p in profile)
|
||||
{
|
||||
|
||||
var effectiveDate = await _userDutyTimeRepository.GetLastEffectRound(p.Id);
|
||||
|
|
@ -1738,8 +1856,46 @@ namespace BMA.EHR.Leave.Service.Controllers
|
|||
};
|
||||
resultSet.Add(res);
|
||||
}
|
||||
if (!string.IsNullOrWhiteSpace(req.sortBy))
|
||||
{
|
||||
switch (req.sortBy.ToUpper())
|
||||
{
|
||||
case "CITIZENID":
|
||||
if (req.descending == true)
|
||||
profile = profile.OrderByDescending(x => x.CitizenId).ToList();
|
||||
else
|
||||
profile = profile.OrderBy(x => x.CitizenId).ToList();
|
||||
break;
|
||||
case "FULLNAME":
|
||||
if (req.descending == true)
|
||||
profile = profile.OrderByDescending(x => x.Prefix)
|
||||
.ThenByDescending(x => x.FirstName)
|
||||
.ThenByDescending(x => x.LastName)
|
||||
.ToList();
|
||||
else
|
||||
profile = profile.OrderBy(x => x.Prefix)
|
||||
.ThenBy(x => x.FirstName)
|
||||
.ThenBy(x => x.LastName)
|
||||
.ToList();
|
||||
break;
|
||||
case "STARTTIMEMORNING":
|
||||
if (req.descending == true)
|
||||
resultSet = resultSet.OrderByDescending(x => x.StartTimeMorning).ToList();
|
||||
else
|
||||
resultSet = resultSet.OrderBy(x => x.StartTimeMorning).ToList();
|
||||
break;
|
||||
case "EFFECTIVEDATE":
|
||||
if (req.descending == true)
|
||||
resultSet = resultSet.OrderByDescending(x => x.EffectiveDate).ToList();
|
||||
else
|
||||
resultSet = resultSet.OrderBy(x => x.EffectiveDate).ToList();
|
||||
break;
|
||||
default: break;
|
||||
}
|
||||
}
|
||||
var pageResult = resultSet.Skip((req.Page - 1) * req.PageSize).Take(req.PageSize).ToList();
|
||||
|
||||
return Success(new { data = resultSet, total = profile.Count });
|
||||
return Success(new { data = pageResult, total = profile.Count });
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
|
@ -1813,7 +1969,7 @@ namespace BMA.EHR.Leave.Service.Controllers
|
|||
[ProducesResponseType(StatusCodes.Status200OK)]
|
||||
[ProducesResponseType(StatusCodes.Status401Unauthorized)]
|
||||
[ProducesResponseType(StatusCodes.Status500InternalServerError)]
|
||||
public async Task<ActionResult<ResponseObject>> GetChangeRoundHistoryByProfileIdAsync(Guid id, int page = 1, int pageSize = 10, string keyword = "")
|
||||
public async Task<ActionResult<ResponseObject>> GetChangeRoundHistoryByProfileIdAsync(Guid id, int page = 1, int pageSize = 10, string keyword = "", string? sortBy = "", bool? descending = false)
|
||||
{
|
||||
var getWorkflow = await _permission.GetPermissionAPIWorkflowAsync(id.ToString(), "SYS_WORK_ROUND_EDIT");
|
||||
if (getWorkflow == false)
|
||||
|
|
@ -1834,7 +1990,7 @@ namespace BMA.EHR.Leave.Service.Controllers
|
|||
resultSet = data
|
||||
.GroupBy(item => item.ProfileId)
|
||||
.SelectMany(group => group
|
||||
.OrderBy(item => item.EffectiveDate) // เรียงลำดับตาม property ที่คุณต้องการ
|
||||
//.OrderBy(item => item.EffectiveDate) // เรียงลำดับตาม property ที่คุณต้องการ
|
||||
.Select((item, index) => new ChangeRoundHistoryDto
|
||||
{
|
||||
Round = index + 1,
|
||||
|
|
@ -1843,10 +1999,44 @@ namespace BMA.EHR.Leave.Service.Controllers
|
|||
EffectiveDate = item.EffectiveDate.Value,
|
||||
Remark = item.Remark
|
||||
}))
|
||||
.Skip((page - 1) * pageSize)
|
||||
.Take(pageSize)
|
||||
//.Skip((page - 1) * pageSize)
|
||||
//.Take(pageSize)
|
||||
.ToList();
|
||||
|
||||
if (!string.IsNullOrWhiteSpace(sortBy))
|
||||
{
|
||||
switch (sortBy.ToUpper())
|
||||
{
|
||||
case "ROUNT":
|
||||
if (descending == true)
|
||||
resultSet = resultSet.OrderByDescending(x => x.Round).ToList();
|
||||
else
|
||||
resultSet = resultSet.OrderBy(x => x.Round).ToList();
|
||||
break;
|
||||
case "STARTTIMEMORNIONG":
|
||||
if (descending == true)
|
||||
resultSet = resultSet.OrderByDescending(x => x.StartTimeMorning).ToList();
|
||||
else
|
||||
resultSet = resultSet.OrderBy(x => x.StartTimeMorning).ToList();
|
||||
break;
|
||||
case "EFFECTIVEDATE":
|
||||
if (descending == true)
|
||||
resultSet = resultSet.OrderByDescending(x => x.EffectiveDate).ToList();
|
||||
else
|
||||
resultSet = resultSet.OrderBy(x => x.EffectiveDate).ToList();
|
||||
break;
|
||||
case "REMARK":
|
||||
if (descending == true)
|
||||
resultSet = resultSet.OrderByDescending(x => x.Remark).ToList();
|
||||
else
|
||||
resultSet = resultSet.OrderBy(x => x.Remark).ToList();
|
||||
break;
|
||||
default: break;
|
||||
}
|
||||
}
|
||||
resultSet = resultSet
|
||||
.Skip((page - 1) * pageSize)
|
||||
.Take(pageSize)
|
||||
.ToList();
|
||||
}
|
||||
|
||||
return Success(new { data = resultSet, total = data.Count });
|
||||
|
|
@ -1901,13 +2091,13 @@ namespace BMA.EHR.Leave.Service.Controllers
|
|||
}
|
||||
var profile = await _userProfileRepository.SearchProfileEmployee(req.CitizenId, req.FirstName, req.LastName, AccessToken ?? "", role, nodeId, profileAdmin?.Node);
|
||||
|
||||
var pagedProfile = profile.Skip((req.Page - 1) * req.PageSize).Take(req.PageSize).ToList();
|
||||
//var pagedProfile = profile.Skip((req.Page - 1) * req.PageSize).Take(req.PageSize).ToList();
|
||||
|
||||
var getDefaultRound = await _dutyTimeRepository.GetDefaultAsync();
|
||||
|
||||
var resultSet = new List<SearchProfileResultDto>();
|
||||
|
||||
foreach (var p in pagedProfile)
|
||||
foreach (var p in profile)
|
||||
{
|
||||
|
||||
var effectiveDate = await _userDutyTimeRepository.GetLastEffectRound(p.Id);
|
||||
|
|
@ -1927,8 +2117,45 @@ namespace BMA.EHR.Leave.Service.Controllers
|
|||
};
|
||||
resultSet.Add(res);
|
||||
}
|
||||
|
||||
return Success(new { data = resultSet, total = profile.Count });
|
||||
if (!string.IsNullOrWhiteSpace(req.sortBy))
|
||||
{
|
||||
switch (req.sortBy.ToUpper())
|
||||
{
|
||||
case "CITIZENID":
|
||||
if (req.descending == true)
|
||||
resultSet = resultSet.OrderByDescending(x => x.CitizenId).ToList();
|
||||
else
|
||||
resultSet = resultSet.OrderBy(x => x.CitizenId).ToList();
|
||||
break;
|
||||
case "FULLNAME":
|
||||
if (req.descending == true)
|
||||
resultSet = resultSet.OrderByDescending(x => x.Prefix)
|
||||
.ThenByDescending(x => x.FirstName)
|
||||
.ThenByDescending(x => x.LastName)
|
||||
.ToList();
|
||||
else
|
||||
resultSet = resultSet.OrderBy(x => x.Prefix)
|
||||
.ThenBy(x => x.FirstName)
|
||||
.ThenBy(x => x.LastName)
|
||||
.ToList();
|
||||
break;
|
||||
case "STARTTIMEMORNING":
|
||||
if (req.descending == true)
|
||||
resultSet = resultSet.OrderByDescending(x => x.StartTimeMorning).ToList();
|
||||
else
|
||||
resultSet = resultSet.OrderBy(x => x.StartTimeMorning).ToList();
|
||||
break;
|
||||
case "EFFECTIVEDATE":
|
||||
if (req.descending == true)
|
||||
resultSet = resultSet.OrderByDescending(x => x.EffectiveDate).ToList();
|
||||
else
|
||||
resultSet = resultSet.OrderBy(x => x.EffectiveDate).ToList();
|
||||
break;
|
||||
default: break;
|
||||
}
|
||||
}
|
||||
var pageResult = resultSet.Skip((req.Page - 1) * req.PageSize).Take(req.PageSize).ToList();
|
||||
return Success(new { data = pageResult, total = profile.Count });
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
|
@ -2001,7 +2228,7 @@ namespace BMA.EHR.Leave.Service.Controllers
|
|||
[ProducesResponseType(StatusCodes.Status200OK)]
|
||||
[ProducesResponseType(StatusCodes.Status401Unauthorized)]
|
||||
[ProducesResponseType(StatusCodes.Status500InternalServerError)]
|
||||
public async Task<ActionResult<ResponseObject>> GetChangeEmpRoundHistoryByProfileIdAsync(Guid id, int page = 1, int pageSize = 10, string keyword = "")
|
||||
public async Task<ActionResult<ResponseObject>> GetChangeEmpRoundHistoryByProfileIdAsync(Guid id, int page = 1, int pageSize = 10, string keyword = "", string? sortBy = "", bool? descending = false)
|
||||
{
|
||||
var getWorkflow = await _permission.GetPermissionAPIWorkflowAsync(id.ToString(), "SYS_WORK_ROUND_EDIT");
|
||||
if (getWorkflow == false)
|
||||
|
|
@ -2022,7 +2249,7 @@ namespace BMA.EHR.Leave.Service.Controllers
|
|||
resultSet = data
|
||||
.GroupBy(item => item.ProfileId)
|
||||
.SelectMany(group => group
|
||||
.OrderBy(item => item.EffectiveDate) // เรียงลำดับตาม property ที่คุณต้องการ
|
||||
//.OrderBy(item => item.EffectiveDate) // เรียงลำดับตาม property ที่คุณต้องการ
|
||||
.Select((item, index) => new ChangeRoundHistoryDto
|
||||
{
|
||||
Round = index + 1,
|
||||
|
|
@ -2031,10 +2258,44 @@ namespace BMA.EHR.Leave.Service.Controllers
|
|||
EffectiveDate = item.EffectiveDate.Value,
|
||||
Remark = item.Remark
|
||||
}))
|
||||
.Skip((page - 1) * pageSize)
|
||||
.Take(pageSize)
|
||||
//.Skip((page - 1) * pageSize)
|
||||
//.Take(pageSize)
|
||||
.ToList();
|
||||
|
||||
if (!string.IsNullOrWhiteSpace(sortBy))
|
||||
{
|
||||
switch (sortBy.ToUpper())
|
||||
{
|
||||
case "ROUNT":
|
||||
if (descending == true)
|
||||
resultSet = resultSet.OrderByDescending(x => x.Round).ToList();
|
||||
else
|
||||
resultSet = resultSet.OrderBy(x => x.Round).ToList();
|
||||
break;
|
||||
case "STARTTIMEMORNIONG":
|
||||
if (descending == true)
|
||||
resultSet = resultSet.OrderByDescending(x => x.StartTimeMorning).ToList();
|
||||
else
|
||||
resultSet = resultSet.OrderBy(x => x.StartTimeMorning).ToList();
|
||||
break;
|
||||
case "EFFECTIVEDATE":
|
||||
if (descending == true)
|
||||
resultSet = resultSet.OrderByDescending(x => x.EffectiveDate).ToList();
|
||||
else
|
||||
resultSet = resultSet.OrderBy(x => x.EffectiveDate).ToList();
|
||||
break;
|
||||
case "REMARK":
|
||||
if (descending == true)
|
||||
resultSet = resultSet.OrderByDescending(x => x.Remark).ToList();
|
||||
else
|
||||
resultSet = resultSet.OrderBy(x => x.Remark).ToList();
|
||||
break;
|
||||
default: break;
|
||||
}
|
||||
}
|
||||
resultSet = resultSet
|
||||
.Skip((page - 1) * pageSize)
|
||||
.Take(pageSize)
|
||||
.ToList();
|
||||
}
|
||||
|
||||
return Success(new { data = resultSet, total = data.Count });
|
||||
|
|
@ -2175,7 +2436,7 @@ namespace BMA.EHR.Leave.Service.Controllers
|
|||
[ProducesResponseType(StatusCodes.Status200OK)]
|
||||
[ProducesResponseType(StatusCodes.Status401Unauthorized)]
|
||||
[ProducesResponseType(StatusCodes.Status500InternalServerError)]
|
||||
public async Task<ActionResult<ResponseObject>> GetAdditionalCheckRequestAsync([Required] int year, [Required] int month, [Required] int page = 1, [Required] int pageSize = 10, string keyword = "")
|
||||
public async Task<ActionResult<ResponseObject>> GetAdditionalCheckRequestAsync([Required] int year, [Required] int month, [Required] int page = 1, [Required] int pageSize = 10, string keyword = "", string? sortBy = "", bool? descending = false)
|
||||
{
|
||||
var getPermission = await _permission.GetPermissionAPIAsync("LIST", "SYS_CHECKIN_SPECIAL");
|
||||
var jsonData = JsonConvert.DeserializeObject<JObject>(getPermission);
|
||||
|
|
@ -2240,6 +2501,9 @@ namespace BMA.EHR.Leave.Service.Controllers
|
|||
{
|
||||
Id = data.Id,
|
||||
FullName = $"{data.Prefix}{data.FirstName} {data.LastName}",
|
||||
Prefix = data.Prefix ?? "",
|
||||
FirstName = data.FirstName ?? "",
|
||||
LastName = data.LastName ?? "",
|
||||
//FullName = $"{profile.Prefix}{profile.FirstName} {profile.LastName}",
|
||||
CreatedAt = data.CreatedAt,
|
||||
CheckDate = data.CheckDate,
|
||||
|
|
@ -2296,7 +2560,55 @@ namespace BMA.EHR.Leave.Service.Controllers
|
|||
{
|
||||
result = result.Where(x => x.FullName.Contains(keyword)).ToList();
|
||||
}
|
||||
|
||||
if (!string.IsNullOrWhiteSpace(sortBy))
|
||||
{
|
||||
switch (sortBy.ToUpper())
|
||||
{
|
||||
case "FULLNAME":
|
||||
if (descending == true)
|
||||
result = result.OrderByDescending(x => x.Prefix)
|
||||
.ThenByDescending(x => x.FirstName)
|
||||
.ThenByDescending(x => x.LastName)
|
||||
.ToList();
|
||||
else
|
||||
result = result.OrderBy(x => x.Prefix)
|
||||
.ThenBy(x => x.FirstName)
|
||||
.ThenBy(x => x.LastName)
|
||||
.ToList();
|
||||
break;
|
||||
case "CREATEDAT":
|
||||
if (descending == true)
|
||||
result = result.OrderByDescending(x => x.CreatedAt).ToList();
|
||||
else
|
||||
result = result.OrderBy(x => x.CreatedAt).ToList();
|
||||
break;
|
||||
case "CHECKDATE":
|
||||
if (descending == true)
|
||||
result = result.OrderByDescending(x => x.CheckDate).ToList();
|
||||
else
|
||||
result = result.OrderBy(x => x.CheckDate).ToList();
|
||||
break;
|
||||
case "STARTTIMEMORNING":
|
||||
if (descending == true)
|
||||
result = result.OrderByDescending(x => x.StartTimeMorning).ToList();
|
||||
else
|
||||
result = result.OrderBy(x => x.StartTimeMorning).ToList();
|
||||
break;
|
||||
case "STARTTIMEAFTERNOON":
|
||||
if (descending == true)
|
||||
result = result.OrderByDescending(x => x.StartTimeAfternoon).ToList();
|
||||
else
|
||||
result = result.OrderBy(x => x.StartTimeAfternoon).ToList();
|
||||
break;
|
||||
case "DESCRIPTION":
|
||||
if (descending == true)
|
||||
result = result.OrderByDescending(x => x.Description).ToList();
|
||||
else
|
||||
result = result.OrderBy(x => x.Description).ToList();
|
||||
break;
|
||||
default: break;
|
||||
}
|
||||
}
|
||||
var pageResult = result.Skip((page - 1) * pageSize).Take(pageSize)
|
||||
.OrderBy(x => x.StatusSort)
|
||||
.ToList();
|
||||
|
|
|
|||
|
|
@ -5,6 +5,9 @@
|
|||
public Guid Id { get; set; }
|
||||
|
||||
public string FullName { get; set; }
|
||||
public string? Prefix { get; set; } = string.Empty;
|
||||
public string? FirstName { get; set; } = string.Empty;
|
||||
public string? LastName { get; set; } = string.Empty;
|
||||
|
||||
public DateTime CreatedAt { get; set; }
|
||||
|
||||
|
|
|
|||
|
|
@ -13,5 +13,9 @@
|
|||
public int PageSize { get; set; } = 10;
|
||||
|
||||
public string? Keyword { get; set; }
|
||||
|
||||
public string? sortBy { get; set; }
|
||||
|
||||
public bool? descending { get; set; }
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -6,7 +6,11 @@
|
|||
|
||||
public string CitizenId { get; set; }
|
||||
|
||||
public string FullName { get; set; }
|
||||
public string FullName { get; set; }
|
||||
|
||||
public string? Prefix { get; set; }
|
||||
public string? FirstName { get; set; }
|
||||
public string? LastName { get; set; }
|
||||
|
||||
public string StartTimeMorning { get; set; }
|
||||
|
||||
|
|
|
|||
|
|
@ -5,6 +5,9 @@
|
|||
public Guid Id { get; set; } = Guid.Empty;
|
||||
|
||||
public string FullName { get; set; } = string.Empty;
|
||||
public string? Prefix { get; set; } = string.Empty;
|
||||
public string? FirstName { get; set; } = string.Empty;
|
||||
public string? LastName { get; set; } = string.Empty;
|
||||
|
||||
public DateTime? CheckInDate { get; set; } = DateTime.MinValue;
|
||||
|
||||
|
|
|
|||
|
|
@ -5,6 +5,9 @@
|
|||
public Guid Id { get; set; } = Guid.Empty;
|
||||
|
||||
public string FullName { get; set; } = string.Empty;
|
||||
public string? Prefix { get; set; } = string.Empty;
|
||||
public string? FirstName { get; set; } = string.Empty;
|
||||
public string? LastName { get; set; } = string.Empty;
|
||||
|
||||
public DateTime? CheckInDate { get; set; } = DateTime.MinValue;
|
||||
|
||||
|
|
|
|||
|
|
@ -16,5 +16,9 @@ namespace BMA.EHR.Leave.Service.DTOs.LeaveBeginnings
|
|||
public int PageSize { get; set; } = 10;
|
||||
|
||||
public string Keyword { get; set; } = string.Empty;
|
||||
|
||||
public string? sortBy { get; set; }
|
||||
|
||||
public bool? descending { get; set; }
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue