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 != "")
|
if (req.Keyword != "")
|
||||||
result = result.Where(x => x.FullName!.Contains(req.Keyword)).ToList();
|
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();
|
var pageResult = result.Skip((req.Page - 1) * req.PageSize).Take(req.PageSize).ToList();
|
||||||
|
|
||||||
return Success(new { data = pageResult, total = result.Count });
|
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.CheckIn;
|
||||||
using BMA.EHR.Leave.Service.DTOs.DutyTime;
|
using BMA.EHR.Leave.Service.DTOs.DutyTime;
|
||||||
using BMA.EHR.Leave.Service.DTOs.LeaveRequest;
|
using BMA.EHR.Leave.Service.DTOs.LeaveRequest;
|
||||||
|
using iTextSharp.text;
|
||||||
using Microsoft.AspNetCore.Authorization;
|
using Microsoft.AspNetCore.Authorization;
|
||||||
using Microsoft.AspNetCore.Mvc;
|
using Microsoft.AspNetCore.Mvc;
|
||||||
using Microsoft.EntityFrameworkCore;
|
using Microsoft.EntityFrameworkCore;
|
||||||
using Microsoft.Extensions.ObjectPool;
|
using Microsoft.Extensions.ObjectPool;
|
||||||
|
using Nest;
|
||||||
using Newtonsoft.Json;
|
using Newtonsoft.Json;
|
||||||
using Newtonsoft.Json.Linq;
|
using Newtonsoft.Json.Linq;
|
||||||
using RabbitMQ.Client;
|
using RabbitMQ.Client;
|
||||||
|
|
@ -1257,7 +1259,7 @@ namespace BMA.EHR.Leave.Service.Controllers
|
||||||
[ProducesResponseType(StatusCodes.Status200OK)]
|
[ProducesResponseType(StatusCodes.Status200OK)]
|
||||||
[ProducesResponseType(StatusCodes.Status401Unauthorized)]
|
[ProducesResponseType(StatusCodes.Status401Unauthorized)]
|
||||||
[ProducesResponseType(StatusCodes.Status500InternalServerError)]
|
[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 getPermission = await _permission.GetPermissionAPIAsync("LIST", "SYS_CHECKIN");
|
||||||
var jsonData = JsonConvert.DeserializeObject<JObject>(getPermission);
|
var jsonData = JsonConvert.DeserializeObject<JObject>(getPermission);
|
||||||
|
|
@ -1305,6 +1307,9 @@ namespace BMA.EHR.Leave.Service.Controllers
|
||||||
Id = d.Id,
|
Id = d.Id,
|
||||||
//FullName = _userProfileRepository.GetUserFullName(d.KeycloakUserId, AccessToken),
|
//FullName = _userProfileRepository.GetUserFullName(d.KeycloakUserId, AccessToken),
|
||||||
FullName = $"{d.Prefix ?? ""}{d.FirstName ?? ""} {d.LastName ?? ""}",
|
FullName = $"{d.Prefix ?? ""}{d.FirstName ?? ""} {d.LastName ?? ""}",
|
||||||
|
Prefix = d.Prefix ?? "",
|
||||||
|
FirstName = d.FirstName ?? "",
|
||||||
|
LastName = d.LastName ?? "",
|
||||||
ProfileType = d.ProfileType ?? "",
|
ProfileType = d.ProfileType ?? "",
|
||||||
|
|
||||||
CheckInDate = d.CheckIn.Date,
|
CheckInDate = d.CheckIn.Date,
|
||||||
|
|
@ -1339,6 +1344,61 @@ namespace BMA.EHR.Leave.Service.Controllers
|
||||||
if (profileType.Trim().ToUpper() != "ALL")
|
if (profileType.Trim().ToUpper() != "ALL")
|
||||||
data = data.Where(x => x.ProfileType == profileType.Trim().ToUpper()).ToList();
|
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
|
var pageData = data
|
||||||
.Skip((page - 1) * pageSize)
|
.Skip((page - 1) * pageSize)
|
||||||
.Take(pageSize)
|
.Take(pageSize)
|
||||||
|
|
@ -1470,7 +1530,7 @@ namespace BMA.EHR.Leave.Service.Controllers
|
||||||
[ProducesResponseType(StatusCodes.Status401Unauthorized)]
|
[ProducesResponseType(StatusCodes.Status401Unauthorized)]
|
||||||
[ProducesResponseType(StatusCodes.Status500InternalServerError)]
|
[ProducesResponseType(StatusCodes.Status500InternalServerError)]
|
||||||
[AllowAnonymous]
|
[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 getPermission = await _permission.GetPermissionAPIAsync("LIST", "SYS_CHECKIN");
|
||||||
var jsonData = JsonConvert.DeserializeObject<JObject>(getPermission);
|
var jsonData = JsonConvert.DeserializeObject<JObject>(getPermission);
|
||||||
|
|
@ -1557,6 +1617,9 @@ namespace BMA.EHR.Leave.Service.Controllers
|
||||||
{
|
{
|
||||||
Id = d.Id,
|
Id = d.Id,
|
||||||
FullName = $"{d.Prefix ?? ""}{d.FirstName ?? ""} {d.LastName ?? ""}",
|
FullName = $"{d.Prefix ?? ""}{d.FirstName ?? ""} {d.LastName ?? ""}",
|
||||||
|
Prefix = d.Prefix ?? "",
|
||||||
|
FirstName = d.FirstName ?? "",
|
||||||
|
LastName = d.LastName ?? "",
|
||||||
ProfileType = d.ProfileType ?? "",
|
ProfileType = d.ProfileType ?? "",
|
||||||
|
|
||||||
CheckInDate = d.CheckIn.Date,
|
CheckInDate = d.CheckIn.Date,
|
||||||
|
|
@ -1656,6 +1719,61 @@ namespace BMA.EHR.Leave.Service.Controllers
|
||||||
if (profileType.Trim().ToUpper() != "ALL")
|
if (profileType.Trim().ToUpper() != "ALL")
|
||||||
data = data.Where(x => x.ProfileType == profileType.Trim().ToUpper()).ToList();
|
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
|
var pageData = data
|
||||||
.Skip((page - 1) * pageSize)
|
.Skip((page - 1) * pageSize)
|
||||||
.Take(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 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 getDefaultRound = await _dutyTimeRepository.GetDefaultAsync();
|
||||||
|
|
||||||
var resultSet = new List<SearchProfileResultDto>();
|
var resultSet = new List<SearchProfileResultDto>();
|
||||||
|
|
||||||
foreach (var p in pagedProfile)
|
foreach (var p in profile)
|
||||||
{
|
{
|
||||||
|
|
||||||
var effectiveDate = await _userDutyTimeRepository.GetLastEffectRound(p.Id);
|
var effectiveDate = await _userDutyTimeRepository.GetLastEffectRound(p.Id);
|
||||||
|
|
@ -1738,8 +1856,46 @@ namespace BMA.EHR.Leave.Service.Controllers
|
||||||
};
|
};
|
||||||
resultSet.Add(res);
|
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>
|
/// <summary>
|
||||||
|
|
@ -1813,7 +1969,7 @@ namespace BMA.EHR.Leave.Service.Controllers
|
||||||
[ProducesResponseType(StatusCodes.Status200OK)]
|
[ProducesResponseType(StatusCodes.Status200OK)]
|
||||||
[ProducesResponseType(StatusCodes.Status401Unauthorized)]
|
[ProducesResponseType(StatusCodes.Status401Unauthorized)]
|
||||||
[ProducesResponseType(StatusCodes.Status500InternalServerError)]
|
[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");
|
var getWorkflow = await _permission.GetPermissionAPIWorkflowAsync(id.ToString(), "SYS_WORK_ROUND_EDIT");
|
||||||
if (getWorkflow == false)
|
if (getWorkflow == false)
|
||||||
|
|
@ -1834,7 +1990,7 @@ namespace BMA.EHR.Leave.Service.Controllers
|
||||||
resultSet = data
|
resultSet = data
|
||||||
.GroupBy(item => item.ProfileId)
|
.GroupBy(item => item.ProfileId)
|
||||||
.SelectMany(group => group
|
.SelectMany(group => group
|
||||||
.OrderBy(item => item.EffectiveDate) // เรียงลำดับตาม property ที่คุณต้องการ
|
//.OrderBy(item => item.EffectiveDate) // เรียงลำดับตาม property ที่คุณต้องการ
|
||||||
.Select((item, index) => new ChangeRoundHistoryDto
|
.Select((item, index) => new ChangeRoundHistoryDto
|
||||||
{
|
{
|
||||||
Round = index + 1,
|
Round = index + 1,
|
||||||
|
|
@ -1843,10 +1999,44 @@ namespace BMA.EHR.Leave.Service.Controllers
|
||||||
EffectiveDate = item.EffectiveDate.Value,
|
EffectiveDate = item.EffectiveDate.Value,
|
||||||
Remark = item.Remark
|
Remark = item.Remark
|
||||||
}))
|
}))
|
||||||
.Skip((page - 1) * pageSize)
|
//.Skip((page - 1) * pageSize)
|
||||||
.Take(pageSize)
|
//.Take(pageSize)
|
||||||
.ToList();
|
.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 });
|
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 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 getDefaultRound = await _dutyTimeRepository.GetDefaultAsync();
|
||||||
|
|
||||||
var resultSet = new List<SearchProfileResultDto>();
|
var resultSet = new List<SearchProfileResultDto>();
|
||||||
|
|
||||||
foreach (var p in pagedProfile)
|
foreach (var p in profile)
|
||||||
{
|
{
|
||||||
|
|
||||||
var effectiveDate = await _userDutyTimeRepository.GetLastEffectRound(p.Id);
|
var effectiveDate = await _userDutyTimeRepository.GetLastEffectRound(p.Id);
|
||||||
|
|
@ -1927,8 +2117,45 @@ namespace BMA.EHR.Leave.Service.Controllers
|
||||||
};
|
};
|
||||||
resultSet.Add(res);
|
resultSet.Add(res);
|
||||||
}
|
}
|
||||||
|
if (!string.IsNullOrWhiteSpace(req.sortBy))
|
||||||
return Success(new { data = resultSet, total = profile.Count });
|
{
|
||||||
|
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>
|
/// <summary>
|
||||||
|
|
@ -2001,7 +2228,7 @@ namespace BMA.EHR.Leave.Service.Controllers
|
||||||
[ProducesResponseType(StatusCodes.Status200OK)]
|
[ProducesResponseType(StatusCodes.Status200OK)]
|
||||||
[ProducesResponseType(StatusCodes.Status401Unauthorized)]
|
[ProducesResponseType(StatusCodes.Status401Unauthorized)]
|
||||||
[ProducesResponseType(StatusCodes.Status500InternalServerError)]
|
[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");
|
var getWorkflow = await _permission.GetPermissionAPIWorkflowAsync(id.ToString(), "SYS_WORK_ROUND_EDIT");
|
||||||
if (getWorkflow == false)
|
if (getWorkflow == false)
|
||||||
|
|
@ -2022,7 +2249,7 @@ namespace BMA.EHR.Leave.Service.Controllers
|
||||||
resultSet = data
|
resultSet = data
|
||||||
.GroupBy(item => item.ProfileId)
|
.GroupBy(item => item.ProfileId)
|
||||||
.SelectMany(group => group
|
.SelectMany(group => group
|
||||||
.OrderBy(item => item.EffectiveDate) // เรียงลำดับตาม property ที่คุณต้องการ
|
//.OrderBy(item => item.EffectiveDate) // เรียงลำดับตาม property ที่คุณต้องการ
|
||||||
.Select((item, index) => new ChangeRoundHistoryDto
|
.Select((item, index) => new ChangeRoundHistoryDto
|
||||||
{
|
{
|
||||||
Round = index + 1,
|
Round = index + 1,
|
||||||
|
|
@ -2031,10 +2258,44 @@ namespace BMA.EHR.Leave.Service.Controllers
|
||||||
EffectiveDate = item.EffectiveDate.Value,
|
EffectiveDate = item.EffectiveDate.Value,
|
||||||
Remark = item.Remark
|
Remark = item.Remark
|
||||||
}))
|
}))
|
||||||
.Skip((page - 1) * pageSize)
|
//.Skip((page - 1) * pageSize)
|
||||||
.Take(pageSize)
|
//.Take(pageSize)
|
||||||
.ToList();
|
.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 });
|
return Success(new { data = resultSet, total = data.Count });
|
||||||
|
|
@ -2175,7 +2436,7 @@ namespace BMA.EHR.Leave.Service.Controllers
|
||||||
[ProducesResponseType(StatusCodes.Status200OK)]
|
[ProducesResponseType(StatusCodes.Status200OK)]
|
||||||
[ProducesResponseType(StatusCodes.Status401Unauthorized)]
|
[ProducesResponseType(StatusCodes.Status401Unauthorized)]
|
||||||
[ProducesResponseType(StatusCodes.Status500InternalServerError)]
|
[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 getPermission = await _permission.GetPermissionAPIAsync("LIST", "SYS_CHECKIN_SPECIAL");
|
||||||
var jsonData = JsonConvert.DeserializeObject<JObject>(getPermission);
|
var jsonData = JsonConvert.DeserializeObject<JObject>(getPermission);
|
||||||
|
|
@ -2240,6 +2501,9 @@ namespace BMA.EHR.Leave.Service.Controllers
|
||||||
{
|
{
|
||||||
Id = data.Id,
|
Id = data.Id,
|
||||||
FullName = $"{data.Prefix}{data.FirstName} {data.LastName}",
|
FullName = $"{data.Prefix}{data.FirstName} {data.LastName}",
|
||||||
|
Prefix = data.Prefix ?? "",
|
||||||
|
FirstName = data.FirstName ?? "",
|
||||||
|
LastName = data.LastName ?? "",
|
||||||
//FullName = $"{profile.Prefix}{profile.FirstName} {profile.LastName}",
|
//FullName = $"{profile.Prefix}{profile.FirstName} {profile.LastName}",
|
||||||
CreatedAt = data.CreatedAt,
|
CreatedAt = data.CreatedAt,
|
||||||
CheckDate = data.CheckDate,
|
CheckDate = data.CheckDate,
|
||||||
|
|
@ -2296,7 +2560,55 @@ namespace BMA.EHR.Leave.Service.Controllers
|
||||||
{
|
{
|
||||||
result = result.Where(x => x.FullName.Contains(keyword)).ToList();
|
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)
|
var pageResult = result.Skip((page - 1) * pageSize).Take(pageSize)
|
||||||
.OrderBy(x => x.StatusSort)
|
.OrderBy(x => x.StatusSort)
|
||||||
.ToList();
|
.ToList();
|
||||||
|
|
|
||||||
|
|
@ -5,6 +5,9 @@
|
||||||
public Guid Id { get; set; }
|
public Guid Id { get; set; }
|
||||||
|
|
||||||
public string FullName { 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; }
|
public DateTime CreatedAt { get; set; }
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -13,5 +13,9 @@
|
||||||
public int PageSize { get; set; } = 10;
|
public int PageSize { get; set; } = 10;
|
||||||
|
|
||||||
public string? Keyword { get; set; }
|
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 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; }
|
public string StartTimeMorning { get; set; }
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -5,6 +5,9 @@
|
||||||
public Guid Id { get; set; } = Guid.Empty;
|
public Guid Id { get; set; } = Guid.Empty;
|
||||||
|
|
||||||
public string FullName { get; set; } = string.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;
|
public DateTime? CheckInDate { get; set; } = DateTime.MinValue;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -5,6 +5,9 @@
|
||||||
public Guid Id { get; set; } = Guid.Empty;
|
public Guid Id { get; set; } = Guid.Empty;
|
||||||
|
|
||||||
public string FullName { get; set; } = string.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;
|
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 int PageSize { get; set; } = 10;
|
||||||
|
|
||||||
public string Keyword { get; set; } = string.Empty;
|
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