refactor LeaveController to improve sorting and pagination logic #2192
This commit is contained in:
parent
90ea986831
commit
6907607a06
2 changed files with 158 additions and 101 deletions
68
.vscode/launch.json
vendored
68
.vscode/launch.json
vendored
|
|
@ -1,35 +1,35 @@
|
||||||
{
|
{
|
||||||
"version": "0.2.0",
|
"version": "0.2.0",
|
||||||
"configurations": [
|
"configurations": [
|
||||||
{
|
{
|
||||||
// Use IntelliSense to find out which attributes exist for C# debugging
|
// Use IntelliSense to find out which attributes exist for C# debugging
|
||||||
// Use hover for the description of the existing attributes
|
// Use hover for the description of the existing attributes
|
||||||
// For further information visit https://github.com/dotnet/vscode-csharp/blob/main/debugger-launchjson.md.
|
// For further information visit https://github.com/dotnet/vscode-csharp/blob/main/debugger-launchjson.md.
|
||||||
"name": ".NET Core Launch (web)",
|
"name": ".NET Core Launch (web)",
|
||||||
"type": "coreclr",
|
"type": "coreclr",
|
||||||
"request": "launch",
|
"request": "launch",
|
||||||
"preLaunchTask": "build",
|
"preLaunchTask": "build",
|
||||||
// If you have changed target frameworks, make sure to update the program path.
|
// If you have changed target frameworks, make sure to update the program path.
|
||||||
"program": "${workspaceFolder}/BMA.EHR.Leave.Service/bin/Debug/net7.0/BMA.EHR.Leave.Service.dll",
|
"program": "${workspaceFolder}/BMA.EHR.Leave/bin/Debug/net7.0/BMA.EHR.Leave.dll",
|
||||||
"args": [],
|
"args": [],
|
||||||
"cwd": "${workspaceFolder}/BMA.EHR.Leave.Service",
|
"cwd": "${workspaceFolder}/BMA.EHR.Leave",
|
||||||
"stopAtEntry": false,
|
"stopAtEntry": false,
|
||||||
// Enable launching a web browser when ASP.NET Core starts. For more information: https://aka.ms/VSCode-CS-LaunchJson-WebBrowser
|
// Enable launching a web browser when ASP.NET Core starts. For more information: https://aka.ms/VSCode-CS-LaunchJson-WebBrowser
|
||||||
"serverReadyAction": {
|
"serverReadyAction": {
|
||||||
"action": "openExternally",
|
"action": "openExternally",
|
||||||
"pattern": "\\bNow listening on:\\s+(https?://\\S+)"
|
"pattern": "\\bNow listening on:\\s+(https?://\\S+)"
|
||||||
},
|
},
|
||||||
"env": {
|
"env": {
|
||||||
"ASPNETCORE_ENVIRONMENT": "Development"
|
"ASPNETCORE_ENVIRONMENT": "Development"
|
||||||
},
|
},
|
||||||
"sourceFileMap": {
|
"sourceFileMap": {
|
||||||
"/Views": "${workspaceFolder}/Views"
|
"/Views": "${workspaceFolder}/Views"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": ".NET Core Attach",
|
"name": ".NET Core Attach",
|
||||||
"type": "coreclr",
|
"type": "coreclr",
|
||||||
"request": "attach"
|
"request": "attach"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -2591,6 +2591,8 @@ namespace BMA.EHR.Leave.Service.Controllers
|
||||||
//var rawData = await _additionalCheckRequestRepository.GetAdditionalCheckRequests(year, month);
|
//var rawData = await _additionalCheckRequestRepository.GetAdditionalCheckRequests(year, month);
|
||||||
var rawData = await _additionalCheckRequestRepository.GetAdditionalCheckRequestsByAdminRole(year, month, role, nodeId, profileAdmin?.Node);
|
var rawData = await _additionalCheckRequestRepository.GetAdditionalCheckRequestsByAdminRole(year, month, role, nodeId, profileAdmin?.Node);
|
||||||
|
|
||||||
|
var total = rawData.Count;
|
||||||
|
|
||||||
var getDefaultRound = await _dutyTimeRepository.GetDefaultAsync();
|
var getDefaultRound = await _dutyTimeRepository.GetDefaultAsync();
|
||||||
if (getDefaultRound == null)
|
if (getDefaultRound == null)
|
||||||
{
|
{
|
||||||
|
|
@ -2599,7 +2601,65 @@ namespace BMA.EHR.Leave.Service.Controllers
|
||||||
|
|
||||||
var result = new List<GetAdditionalCheckRequestDto>();
|
var result = new List<GetAdditionalCheckRequestDto>();
|
||||||
|
|
||||||
foreach (var data in rawData)
|
|
||||||
|
if (!string.IsNullOrWhiteSpace(sortBy))
|
||||||
|
{
|
||||||
|
switch (sortBy.ToUpper())
|
||||||
|
{
|
||||||
|
case "FULLNAME":
|
||||||
|
if (descending == true)
|
||||||
|
rawData = rawData.OrderByDescending(x => x.Prefix)
|
||||||
|
.ThenByDescending(x => x.FirstName)
|
||||||
|
.ThenByDescending(x => x.LastName)
|
||||||
|
.ToList();
|
||||||
|
else
|
||||||
|
rawData = rawData.OrderBy(x => x.Prefix)
|
||||||
|
.ThenBy(x => x.FirstName)
|
||||||
|
.ThenBy(x => x.LastName)
|
||||||
|
.ToList();
|
||||||
|
break;
|
||||||
|
case "CREATEDAT":
|
||||||
|
if (descending == true)
|
||||||
|
rawData = rawData.OrderByDescending(x => x.CreatedAt).ToList();
|
||||||
|
else
|
||||||
|
rawData = rawData.OrderBy(x => x.CreatedAt).ToList();
|
||||||
|
break;
|
||||||
|
case "CHECKDATE":
|
||||||
|
if (descending == true)
|
||||||
|
rawData = rawData.OrderByDescending(x => x.CheckDate).ToList();
|
||||||
|
else
|
||||||
|
rawData = rawData.OrderBy(x => x.CheckDate).ToList();
|
||||||
|
break;
|
||||||
|
// case "STARTTIMEMORNING":
|
||||||
|
// if (descending == true)
|
||||||
|
// rawData = rawData.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)
|
||||||
|
rawData = rawData.OrderByDescending(x => x.Description).ToList();
|
||||||
|
else
|
||||||
|
rawData = rawData.OrderBy(x => x.Description).ToList();
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
rawData = rawData.OrderBy(x =>
|
||||||
|
x.Status.Trim().ToLower() == "pending" ? 1 :
|
||||||
|
x.Status.Trim().ToLower() == "approve" ? 2 : 3).ToList();
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
var rawDataPaged = rawData.Skip((page - 1) * pageSize).Take(pageSize)
|
||||||
|
.ToList();
|
||||||
|
|
||||||
|
foreach (var data in rawDataPaged)
|
||||||
{
|
{
|
||||||
var profile = await _userProfileRepository.GetProfileByKeycloakIdAsync(data.KeycloakUserId, AccessToken);
|
var profile = await _userProfileRepository.GetProfileByKeycloakIdAsync(data.KeycloakUserId, AccessToken);
|
||||||
if (profile == null)
|
if (profile == null)
|
||||||
|
|
@ -2678,69 +2738,69 @@ namespace BMA.EHR.Leave.Service.Controllers
|
||||||
result.Add(resObj);
|
result.Add(resObj);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (keyword != "")
|
// if (keyword != "")
|
||||||
{
|
// {
|
||||||
result = result.Where(x => x.FullName.Contains(keyword)).ToList();
|
// result = result.Where(x => x.FullName.Contains(keyword)).ToList();
|
||||||
}
|
// }
|
||||||
if (string.IsNullOrWhiteSpace(sortBy))
|
// if (string.IsNullOrWhiteSpace(sortBy))
|
||||||
{
|
// {
|
||||||
sortBy = "default";
|
// sortBy = "default";
|
||||||
}
|
// }
|
||||||
if (!string.IsNullOrWhiteSpace(sortBy))
|
// if (!string.IsNullOrWhiteSpace(sortBy))
|
||||||
{
|
// {
|
||||||
switch (sortBy.ToUpper())
|
// switch (sortBy.ToUpper())
|
||||||
{
|
// {
|
||||||
case "FULLNAME":
|
// case "FULLNAME":
|
||||||
if (descending == true)
|
// if (descending == true)
|
||||||
result = result.OrderByDescending(x => x.Prefix)
|
// result = result.OrderByDescending(x => x.Prefix)
|
||||||
.ThenByDescending(x => x.FirstName)
|
// .ThenByDescending(x => x.FirstName)
|
||||||
.ThenByDescending(x => x.LastName)
|
// .ThenByDescending(x => x.LastName)
|
||||||
.ToList();
|
// .ToList();
|
||||||
else
|
// else
|
||||||
result = result.OrderBy(x => x.Prefix)
|
// result = result.OrderBy(x => x.Prefix)
|
||||||
.ThenBy(x => x.FirstName)
|
// .ThenBy(x => x.FirstName)
|
||||||
.ThenBy(x => x.LastName)
|
// .ThenBy(x => x.LastName)
|
||||||
.ToList();
|
// .ToList();
|
||||||
break;
|
// break;
|
||||||
case "CREATEDAT":
|
// case "CREATEDAT":
|
||||||
if (descending == true)
|
// if (descending == true)
|
||||||
result = result.OrderByDescending(x => x.CreatedAt).ToList();
|
// result = result.OrderByDescending(x => x.CreatedAt).ToList();
|
||||||
else
|
// else
|
||||||
result = result.OrderBy(x => x.CreatedAt).ToList();
|
// result = result.OrderBy(x => x.CreatedAt).ToList();
|
||||||
break;
|
// break;
|
||||||
case "CHECKDATE":
|
// case "CHECKDATE":
|
||||||
if (descending == true)
|
// if (descending == true)
|
||||||
result = result.OrderByDescending(x => x.CheckDate).ToList();
|
// result = result.OrderByDescending(x => x.CheckDate).ToList();
|
||||||
else
|
// else
|
||||||
result = result.OrderBy(x => x.CheckDate).ToList();
|
// result = result.OrderBy(x => x.CheckDate).ToList();
|
||||||
break;
|
// break;
|
||||||
case "STARTTIMEMORNING":
|
// case "STARTTIMEMORNING":
|
||||||
if (descending == true)
|
// if (descending == true)
|
||||||
result = result.OrderByDescending(x => x.StartTimeMorning).ToList();
|
// result = result.OrderByDescending(x => x.StartTimeMorning).ToList();
|
||||||
else
|
// else
|
||||||
result = result.OrderBy(x => x.StartTimeMorning).ToList();
|
// result = result.OrderBy(x => x.StartTimeMorning).ToList();
|
||||||
break;
|
// break;
|
||||||
case "STARTTIMEAFTERNOON":
|
// case "STARTTIMEAFTERNOON":
|
||||||
if (descending == true)
|
// if (descending == true)
|
||||||
result = result.OrderByDescending(x => x.StartTimeAfternoon).ToList();
|
// result = result.OrderByDescending(x => x.StartTimeAfternoon).ToList();
|
||||||
else
|
// else
|
||||||
result = result.OrderBy(x => x.StartTimeAfternoon).ToList();
|
// result = result.OrderBy(x => x.StartTimeAfternoon).ToList();
|
||||||
break;
|
// break;
|
||||||
case "DESCRIPTION":
|
// case "DESCRIPTION":
|
||||||
if (descending == true)
|
// if (descending == true)
|
||||||
result = result.OrderByDescending(x => x.Description).ToList();
|
// result = result.OrderByDescending(x => x.Description).ToList();
|
||||||
else
|
// else
|
||||||
result = result.OrderBy(x => x.Description).ToList();
|
// result = result.OrderBy(x => x.Description).ToList();
|
||||||
break;
|
// break;
|
||||||
default:
|
// default:
|
||||||
result = result.OrderBy(x => x.StatusSort).ToList();
|
// result = result.OrderBy(x => x.StatusSort).ToList();
|
||||||
break;
|
// break;
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
var pageResult = result.Skip((page - 1) * pageSize).Take(pageSize)
|
// var pageResult = result.Skip((page - 1) * pageSize).Take(pageSize)
|
||||||
.ToList();
|
// .ToList();
|
||||||
|
|
||||||
return Success(new { data = pageResult, total = result.Count });
|
return Success(new { data = result, total = total });
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
|
@ -3170,10 +3230,7 @@ namespace BMA.EHR.Leave.Service.Controllers
|
||||||
result.Add(resObj);
|
result.Add(resObj);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (keyword != "")
|
|
||||||
{
|
|
||||||
result = result.Where(x => x.EditReason!.Contains(keyword) || x.CheckInLocation!.Contains(keyword) || x.CheckOutLocation!.Contains(keyword)).ToList();
|
|
||||||
}
|
|
||||||
|
|
||||||
var pageResult = result.Skip((page - 1) * pageSize).Take(pageSize)
|
var pageResult = result.Skip((page - 1) * pageSize).Take(pageSize)
|
||||||
.ToList();
|
.ToList();
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue