Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Binary file modified .vs/AdvancedWebAPI/DesignTimeBuild/.dtbcache.v2
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file modified .vs/AdvancedWebAPI/v17/.futdcache.v2
Binary file not shown.
Binary file modified .vs/AdvancedWebAPI/v17/.suo
Binary file not shown.
Binary file modified .vs/AdvancedWebAPI/v17/HierarchyCache.v1.txt
Binary file not shown.
Binary file modified .vs/ProjectEvaluation/advancedwebapi.metadata.v5.2
Binary file not shown.
Binary file modified .vs/ProjectEvaluation/advancedwebapi.projects.v5.2
Binary file not shown.
18 changes: 17 additions & 1 deletion AWA.MinApi/bin/Debug/net7.0/AWA.MinApi.deps.json
Original file line number Diff line number Diff line change
Expand Up @@ -474,6 +474,14 @@
"System.Threading.Tasks": "4.3.0"
}
},
"System.Linq.Dynamic.Core/1.2.24": {
"runtime": {
"lib/net7.0/System.Linq.Dynamic.Core.dll": {
"assemblyVersion": "1.2.24.0",
"fileVersion": "1.2.24.0"
}
}
},
"System.Memory/4.5.4": {},
"System.Memory.Data/1.0.2": {
"dependencies": {
Expand Down Expand Up @@ -653,7 +661,8 @@
},
"AWA.Services/1.0.0": {
"dependencies": {
"AWA.Domain": "1.0.0"
"AWA.Domain": "1.0.0",
"System.Linq.Dynamic.Core": "1.2.24"
},
"runtime": {
"AWA.Services.dll": {}
Expand Down Expand Up @@ -1010,6 +1019,13 @@
"path": "system.io/4.3.0",
"hashPath": "system.io.4.3.0.nupkg.sha512"
},
"System.Linq.Dynamic.Core/1.2.24": {
"type": "package",
"serviceable": true,
"sha512": "sha512-fzE8wSOiDvhs8ROYkfwlw8A8xiw4PnwIu/tAL3MdIJIVmV/KLJqIAGeS20y82kbKPZ5Kp0ShkQolgf6nIAT/Rg==",
"path": "system.linq.dynamic.core/1.2.24",
"hashPath": "system.linq.dynamic.core.1.2.24.nupkg.sha512"
},
"System.Memory/4.5.4": {
"type": "package",
"serviceable": true,
Expand Down
Binary file modified AWA.MinApi/bin/Debug/net7.0/AWA.MinApi.dll
Binary file not shown.
Binary file modified AWA.MinApi/bin/Debug/net7.0/AWA.MinApi.pdb
Binary file not shown.
Binary file modified AWA.MinApi/bin/Debug/net7.0/AWA.Services.dll
Binary file not shown.
Binary file modified AWA.MinApi/bin/Debug/net7.0/AWA.Services.pdb
Binary file not shown.
Binary file not shown.
6 changes: 6 additions & 0 deletions AWA.MinApi/obj/AWA.MinApi.csproj.nuget.dgspec.json
Original file line number Diff line number Diff line change
Expand Up @@ -390,6 +390,12 @@
"frameworks": {
"net7.0": {
"targetAlias": "net7.0",
"dependencies": {
"System.Linq.Dynamic.Core": {
"target": "Package",
"version": "[1.2.24, )"
}
},
"imports": [
"net461",
"net462",
Expand Down
Binary file modified AWA.MinApi/obj/Debug/net7.0/AWA.MinApi.assets.cache
Binary file not shown.
Binary file not shown.
Original file line number Diff line number Diff line change
@@ -1 +1 @@
4cefa2fe1ba7fb32a5c6f60d3749b057d7a0059f
12cbc3f68ee4c40d28e55dad407e58375894bc61
Original file line number Diff line number Diff line change
Expand Up @@ -80,3 +80,4 @@ C:\Elio\Development\Projects\AdvancedWebAPI\AWA.MinApi\obj\Debug\net7.0\refint\A
C:\Elio\Development\Projects\AdvancedWebAPI\AWA.MinApi\obj\Debug\net7.0\AWA.MinApi.pdb
C:\Elio\Development\Projects\AdvancedWebAPI\AWA.MinApi\obj\Debug\net7.0\AWA.MinApi.genruntimeconfig.cache
C:\Elio\Development\Projects\AdvancedWebAPI\AWA.MinApi\obj\Debug\net7.0\ref\AWA.MinApi.dll
C:\Elio\Development\Projects\AdvancedWebAPI\AWA.MinApi\bin\Debug\net7.0\System.Linq.Dynamic.Core.dll
Binary file modified AWA.MinApi/obj/Debug/net7.0/AWA.MinApi.dll
Binary file not shown.
Binary file modified AWA.MinApi/obj/Debug/net7.0/AWA.MinApi.pdb
Binary file not shown.
71 changes: 70 additions & 1 deletion AWA.MinApi/obj/project.assets.json
Original file line number Diff line number Diff line change
Expand Up @@ -826,6 +826,19 @@
}
}
},
"System.Linq.Dynamic.Core/1.2.24": {
"type": "package",
"compile": {
"lib/net7.0/System.Linq.Dynamic.Core.dll": {
"related": ".pdb;.xml"
}
},
"runtime": {
"lib/net7.0/System.Linq.Dynamic.Core.dll": {
"related": ".pdb;.xml"
}
}
},
"System.Memory/4.5.4": {
"type": "package",
"compile": {
Expand Down Expand Up @@ -1203,7 +1216,8 @@
"type": "project",
"framework": ".NETCoreApp,Version=v7.0",
"dependencies": {
"AWA.Domain": "1.0.0"
"AWA.Domain": "1.0.0",
"System.Linq.Dynamic.Core": "1.2.24"
},
"compile": {
"bin/placeholder/AWA.Services.dll": {}
Expand Down Expand Up @@ -2772,6 +2786,61 @@
"system.io.nuspec"
]
},
"System.Linq.Dynamic.Core/1.2.24": {
"sha512": "fzE8wSOiDvhs8ROYkfwlw8A8xiw4PnwIu/tAL3MdIJIVmV/KLJqIAGeS20y82kbKPZ5Kp0ShkQolgf6nIAT/Rg==",
"type": "package",
"path": "system.linq.dynamic.core/1.2.24",
"files": [
".nupkg.metadata",
".signature.p7s",
"lib/net35/System.Linq.Dynamic.Core.dll",
"lib/net35/System.Linq.Dynamic.Core.pdb",
"lib/net35/System.Linq.Dynamic.Core.xml",
"lib/net40/System.Linq.Dynamic.Core.dll",
"lib/net40/System.Linq.Dynamic.Core.pdb",
"lib/net40/System.Linq.Dynamic.Core.xml",
"lib/net45/System.Linq.Dynamic.Core.dll",
"lib/net45/System.Linq.Dynamic.Core.pdb",
"lib/net45/System.Linq.Dynamic.Core.xml",
"lib/net452/System.Linq.Dynamic.Core.dll",
"lib/net452/System.Linq.Dynamic.Core.pdb",
"lib/net452/System.Linq.Dynamic.Core.xml",
"lib/net46/System.Linq.Dynamic.Core.dll",
"lib/net46/System.Linq.Dynamic.Core.pdb",
"lib/net46/System.Linq.Dynamic.Core.xml",
"lib/net5.0/System.Linq.Dynamic.Core.dll",
"lib/net5.0/System.Linq.Dynamic.Core.pdb",
"lib/net5.0/System.Linq.Dynamic.Core.xml",
"lib/net6.0/System.Linq.Dynamic.Core.dll",
"lib/net6.0/System.Linq.Dynamic.Core.pdb",
"lib/net6.0/System.Linq.Dynamic.Core.xml",
"lib/net7.0/System.Linq.Dynamic.Core.dll",
"lib/net7.0/System.Linq.Dynamic.Core.pdb",
"lib/net7.0/System.Linq.Dynamic.Core.xml",
"lib/netcoreapp2.1/System.Linq.Dynamic.Core.dll",
"lib/netcoreapp2.1/System.Linq.Dynamic.Core.pdb",
"lib/netcoreapp2.1/System.Linq.Dynamic.Core.xml",
"lib/netcoreapp3.1/System.Linq.Dynamic.Core.dll",
"lib/netcoreapp3.1/System.Linq.Dynamic.Core.pdb",
"lib/netcoreapp3.1/System.Linq.Dynamic.Core.xml",
"lib/netstandard1.3/System.Linq.Dynamic.Core.dll",
"lib/netstandard1.3/System.Linq.Dynamic.Core.pdb",
"lib/netstandard1.3/System.Linq.Dynamic.Core.xml",
"lib/netstandard2.0/System.Linq.Dynamic.Core.dll",
"lib/netstandard2.0/System.Linq.Dynamic.Core.pdb",
"lib/netstandard2.0/System.Linq.Dynamic.Core.xml",
"lib/netstandard2.1/System.Linq.Dynamic.Core.dll",
"lib/netstandard2.1/System.Linq.Dynamic.Core.pdb",
"lib/netstandard2.1/System.Linq.Dynamic.Core.xml",
"lib/uap10.0.10240/System.Linq.Dynamic.Core.dll",
"lib/uap10.0.10240/System.Linq.Dynamic.Core.pdb",
"lib/uap10.0.10240/System.Linq.Dynamic.Core.pri",
"lib/uap10.0.10240/System.Linq.Dynamic.Core.xml",
"logo.png",
"system.linq.dynamic.core.1.2.24.nupkg.sha512",
"system.linq.dynamic.core.nuspec"
]
},
"System.Memory/4.5.4": {
"sha512": "1MbJTHS1lZ4bS4FmsJjnuGJOu88ZzTT2rLvrhW7Ygic+pC0NWA+3hgAen0HRdsocuQXCkUTdFn9yHJJhsijDXw==",
"type": "package",
Expand Down
3 changes: 2 additions & 1 deletion AWA.MinApi/obj/project.nuget.cache
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"version": 2,
"dgSpecHash": "gXDyhBHdpkkkvy1fulFi8ktoI2yTEitcpynKUaIn9nHa/P4X6uhenWfKzx9Q20/MnB0t5MMJ0/IriiP90k4PmQ==",
"dgSpecHash": "i+uguftc2T2zoLTivjsuQrxf50ABNzoi3faxhj6YG1JrS4GwNxn0ggJwwaZ7rEfYbkHbcea4xHlc0ymT8Iwptw==",
"success": true,
"projectFilePath": "C:\\Elio\\Development\\Projects\\AdvancedWebAPI\\AWA.MinApi\\AWA.MinApi.csproj",
"expectedPackageFiles": [
Expand Down Expand Up @@ -53,6 +53,7 @@
"C:\\Users\\elio_\\.nuget\\packages\\system.globalization\\4.3.0\\system.globalization.4.3.0.nupkg.sha512",
"C:\\Users\\elio_\\.nuget\\packages\\system.identitymodel.tokens.jwt\\6.21.0\\system.identitymodel.tokens.jwt.6.21.0.nupkg.sha512",
"C:\\Users\\elio_\\.nuget\\packages\\system.io\\4.3.0\\system.io.4.3.0.nupkg.sha512",
"C:\\Users\\elio_\\.nuget\\packages\\system.linq.dynamic.core\\1.2.24\\system.linq.dynamic.core.1.2.24.nupkg.sha512",
"C:\\Users\\elio_\\.nuget\\packages\\system.memory\\4.5.4\\system.memory.4.5.4.nupkg.sha512",
"C:\\Users\\elio_\\.nuget\\packages\\system.memory.data\\1.0.2\\system.memory.data.1.0.2.nupkg.sha512",
"C:\\Users\\elio_\\.nuget\\packages\\system.numerics.vectors\\4.5.0\\system.numerics.vectors.4.5.0.nupkg.sha512",
Expand Down
7 changes: 6 additions & 1 deletion AWA.Services/AWA.Services.csproj
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
<Project Sdk="Microsoft.NET.Sdk">
<Project Sdk="Microsoft.NET.Sdk">

<PropertyGroup>
<TargetFramework>net7.0</TargetFramework>
Expand All @@ -7,6 +7,11 @@
</PropertyGroup>

<ItemGroup>
<PackageReference Include="System.Linq.Dynamic.Core" Version="1.2.24" />
</ItemGroup>


<ItemGroup>
<ProjectReference Include="..\AWA.Domain\AWA.Domain.csproj" />
</ItemGroup>

Expand Down
3 changes: 2 additions & 1 deletion AWA.Services/PersonParameters.cs
Original file line number Diff line number Diff line change
Expand Up @@ -5,12 +5,13 @@ public class PersonParameters : QueryStringParameters
public PersonParameters()
{
OrderBy= "FullName";

}
public uint? MinYearOfBirth { get; set; }
public uint? MaxYearOfBirth { get; set; } = (uint)DateTime.Now.Year;
public bool ValidYearRange => (MaxYearOfBirth == null & MinYearOfBirth == null) || (MaxYearOfBirth > MinYearOfBirth);
public string? Name { get; internal set; } = "";
public string? JobTitle { get; internal set; } = "";
public string OrderBy { get; set; }
public string? OrderBy { get; set; }
}
}
39 changes: 17 additions & 22 deletions AWA.Services/PersonService.cs
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
using AWA.Domain.Interfaces;
using AWA.Models;
using AWA.Services.Interfaces;
using System.Linq.Dynamic.Core;
using System.Reflection;
using System.Text;

Expand Down Expand Up @@ -42,55 +42,50 @@ join e in emailAddress on p.BusinessEntityId equals e.BusinessEntityId
public PagedList<DTOPeople> GetPagedPeople(PersonParameters personParameters)
{
var allPeople = GetAllPeople().Result.AsQueryable<DTOPeople>();
var allPeopleSorted = OrderPeople(allPeople, personParameters.OrderBy);

if (personParameters.MinYearOfBirth != null && personParameters.MaxYearOfBirth != null)
{
allPeopleSorted = (IOrderedQueryable<DTOPeople>)allPeopleSorted
.Where(o => o.BirthDate.Year >= personParameters.MinYearOfBirth && o.BirthDate.Year <= personParameters.MaxYearOfBirth);
allPeople = allPeople.Where(o => o.BirthDate.Year >= personParameters.MinYearOfBirth && o.BirthDate.Year <= personParameters.MaxYearOfBirth);
}
SearchPeople(allPeopleSorted, personParameters.Name, personParameters.JobTitle);
SearchPeople(ref allPeople, personParameters.Name, personParameters.JobTitle);
OrderPeople(ref allPeople, personParameters.OrderBy);
return PagedList<DTOPeople>.ToPagedList(allPeople, personParameters.PageNumber, personParameters.PageSize);
}

private IOrderedQueryable<DTOPeople> OrderPeople(IQueryable<DTOPeople> allPeople, string orderBy)
private void OrderPeople(ref IQueryable<DTOPeople> allPeople, string? orderBy)
{
IOrderedQueryable < DTOPeople > allPeopleOrdered= (IOrderedQueryable<DTOPeople>)allPeople;
if (!allPeople.Any())
{
return allPeopleOrdered;
return;
}
if (string.IsNullOrWhiteSpace(orderBy))
{
allPeopleOrdered.OrderBy(p => p.FullName);
return allPeopleOrdered;
allPeople.OrderBy(p => p.FullName);
return;
}
var orderParameters = orderBy.Trim().Split(',');
var propertyInfos = typeof(DTOPeople).GetProperties(BindingFlags.Public | BindingFlags.Instance);
var orderQueryBuilder = new StringBuilder();
foreach (var orderParam in orderParameters)
{
if (string.IsNullOrWhiteSpace(orderParam)) continue;
var propertyQuery = orderParam.Split(' ')[0];
var propertyQuery = orderParam.Trim().Split(" ")[0];
var objectProperty = propertyInfos.FirstOrDefault(pi => pi.Name.Equals(propertyQuery, StringComparison.InvariantCultureIgnoreCase));
if (objectProperty == null) continue;
if (objectProperty == null) continue;
var sortingOrder = orderParam.EndsWith(" desc") ? "descending" : "ascending";
var sortField = objectProperty.Name.ToString();
if (!string.IsNullOrWhiteSpace(sortField))
{
var sortFieldOrder = $"{sortField} {sortingOrder}";
allPeopleOrdered = allPeopleOrdered.OrderBy(p => sortFieldOrder);
}
orderQueryBuilder.Append($"{objectProperty.Name.ToString()} {sortingOrder}, ");
}
return allPeopleOrdered;

var orderQuery = orderQueryBuilder.ToString().TrimEnd(',', ' ');
allPeople = allPeople.OrderBy(orderQuery);
return;
}


private void SearchPeople(IOrderedQueryable<DTOPeople> allPeople, string? name, string? jobTitle)
private void SearchPeople(ref IQueryable<DTOPeople> allPeople, string? name, string? jobTitle)
{
if (allPeople.Any() == false) return;
if (string.IsNullOrWhiteSpace(name) && string.IsNullOrWhiteSpace(jobTitle)) return;
allPeople = ((IOrderedQueryable<DTOPeople>)(
allPeople = ((IQueryable<DTOPeople>)(
from ap in allPeople
where (
(string.IsNullOrWhiteSpace(ap.FullName) || string.IsNullOrWhiteSpace(name) || ap.FullName.ToLower().Contains(name.Trim().ToLower())) &&
Expand Down
9 changes: 8 additions & 1 deletion AWA.Services/QueryStringParameters.cs
Original file line number Diff line number Diff line change
@@ -1,10 +1,17 @@
namespace AWA.Services
using System.ComponentModel;

namespace AWA.Services
{
public abstract class QueryStringParameters
{

const int maxPageSize = 50;

[DefaultValue(1)]
public int PageNumber { get; set; } = 1;
private int _pageSize = 10;

[DefaultValue(10)]
public int PageSize
{
get
Expand Down
18 changes: 17 additions & 1 deletion AWA.Services/bin/Debug/net7.0/AWA.Services.deps.json
Original file line number Diff line number Diff line change
Expand Up @@ -8,12 +8,21 @@
".NETCoreApp,Version=v7.0": {
"AWA.Services/1.0.0": {
"dependencies": {
"AWA.Domain": "1.0.0"
"AWA.Domain": "1.0.0",
"System.Linq.Dynamic.Core": "1.2.24"
},
"runtime": {
"AWA.Services.dll": {}
}
},
"System.Linq.Dynamic.Core/1.2.24": {
"runtime": {
"lib/net7.0/System.Linq.Dynamic.Core.dll": {
"assemblyVersion": "1.2.24.0",
"fileVersion": "1.2.24.0"
}
}
},
"AWA.Domain/1.0.0": {
"dependencies": {
"AWA.Models": "1.0.0"
Expand All @@ -35,6 +44,13 @@
"serviceable": false,
"sha512": ""
},
"System.Linq.Dynamic.Core/1.2.24": {
"type": "package",
"serviceable": true,
"sha512": "sha512-fzE8wSOiDvhs8ROYkfwlw8A8xiw4PnwIu/tAL3MdIJIVmV/KLJqIAGeS20y82kbKPZ5Kp0ShkQolgf6nIAT/Rg==",
"path": "system.linq.dynamic.core/1.2.24",
"hashPath": "system.linq.dynamic.core.1.2.24.nupkg.sha512"
},
"AWA.Domain/1.0.0": {
"type": "project",
"serviceable": false,
Expand Down
Binary file modified AWA.Services/bin/Debug/net7.0/AWA.Services.dll
Binary file not shown.
Binary file modified AWA.Services/bin/Debug/net7.0/AWA.Services.pdb
Binary file not shown.
6 changes: 6 additions & 0 deletions AWA.Services/obj/AWA.Services.csproj.nuget.dgspec.json
Original file line number Diff line number Diff line change
Expand Up @@ -166,6 +166,12 @@
"frameworks": {
"net7.0": {
"targetAlias": "net7.0",
"dependencies": {
"System.Linq.Dynamic.Core": {
"target": "Package",
"version": "[1.2.24, )"
}
},
"imports": [
"net461",
"net462",
Expand Down
Binary file modified AWA.Services/obj/Debug/net7.0/AWA.Services.assets.cache
Binary file not shown.
Binary file not shown.
Original file line number Diff line number Diff line change
@@ -1 +1 @@
3745da8ae68b57e8032a03c066d03fba8564a786
195c578eb5c1f3a8ed68b5db9dadb0f6d8755ca0
Binary file modified AWA.Services/obj/Debug/net7.0/AWA.Services.dll
Binary file not shown.
Binary file modified AWA.Services/obj/Debug/net7.0/AWA.Services.pdb
Binary file not shown.
Binary file modified AWA.Services/obj/Debug/net7.0/ref/AWA.Services.dll
Binary file not shown.
Binary file modified AWA.Services/obj/Debug/net7.0/refint/AWA.Services.dll
Binary file not shown.
Loading