Skip to content

Commit c0e0449

Browse files
author
Jani Giannoudis
committed
new models lookup range result and lookup range bracket
payroll service: new method to get the lookup ranges updated version to 0.9.0-beta.16
1 parent 07dcd63 commit c0e0449

10 files changed

Lines changed: 303 additions & 2 deletions
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
// ReSharper disable UnusedMemberInSuper.Global
2+
namespace PayrollEngine.Client.Model;
3+
4+
/// <summary>
5+
/// A lookup range bracket with computed bounds
6+
/// </summary>
7+
public interface ILookupRangeBracket
8+
{
9+
/// <summary>
10+
/// The lookup value key
11+
/// </summary>
12+
string Key { get; set; }
13+
14+
/// <summary>
15+
/// The lookup value as JSON
16+
/// </summary>
17+
string Value { get; set; }
18+
19+
/// <summary>
20+
/// The range start value
21+
/// </summary>
22+
decimal RangeStart { get; set; }
23+
24+
/// <summary>
25+
/// The range end value (unbound bracket: Decimal.MaxValue)
26+
/// </summary>
27+
decimal RangeEnd { get; set; }
28+
29+
/// <summary>
30+
/// The brackets range value
31+
/// </summary>
32+
/// <remarks>
33+
/// Threshold lookup: value within the matching bracket.
34+
/// Progressive lookup: matching bracket value range, except the last one which the value within his range.
35+
/// Other: null.
36+
/// </remarks>
37+
decimal? RangeValue { get; set; }
38+
}
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
using System.Collections.Generic;
2+
3+
namespace PayrollEngine.Client.Model;
4+
5+
/// <summary>
6+
/// Result of a lookup range bracket computation
7+
/// </summary>
8+
public interface ILookupRangeResult
9+
{
10+
/// <summary>
11+
/// The lookup name
12+
/// </summary>
13+
// ReSharper disable once UnusedMemberInSuper.Global
14+
string LookupName { get; set; }
15+
16+
/// <summary>
17+
/// The lookup range mode
18+
/// </summary>
19+
LookupRangeMode RangeMode { get; set; }
20+
21+
/// <summary>
22+
/// The lookup range size
23+
/// </summary>
24+
decimal? RangeSize { get; set; }
25+
26+
/// <summary>
27+
/// Range brackets
28+
/// </summary>
29+
List<LookupRangeBracket> Brackets { get; set; }
30+
}
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
namespace PayrollEngine.Client.Model;
2+
3+
/// <summary>
4+
/// A lookup range bracket with computed bounds
5+
/// </summary>
6+
// ReSharper disable UnusedAutoPropertyAccessor.Global
7+
// ReSharper disable PropertyCanBeMadeInitOnly.Global
8+
public class LookupRangeBracket : ILookupRangeBracket
9+
{
10+
/// <summary>
11+
/// The lookup value key
12+
/// </summary>
13+
public string Key { get; set; }
14+
15+
/// <summary>
16+
/// The lookup value as JSON
17+
/// </summary>
18+
public string Value { get; set; }
19+
20+
/// <summary>
21+
/// The range start (lower bound)
22+
/// </summary>
23+
public decimal RangeStart { get; set; }
24+
25+
/// <summary>
26+
/// The range end (upper bound), Decimal.MaxValue for unbounded last bracket
27+
/// </summary>
28+
public decimal RangeEnd { get; set; }
29+
30+
/// <summary>
31+
/// The original range value from the lookup value
32+
/// </summary>
33+
public decimal? RangeValue { get; set; }
34+
35+
/// <inheritdoc/>
36+
public override string ToString() =>
37+
$"{Key}: {RangeStart} - {RangeEnd}";
38+
}
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
using System.Collections.Generic;
2+
3+
namespace PayrollEngine.Client.Model;
4+
5+
/// <summary>
6+
/// Result of a lookup range bracket computation
7+
/// </summary>
8+
// ReSharper disable UnusedAutoPropertyAccessor.Global
9+
// ReSharper disable PropertyCanBeMadeInitOnly.Global
10+
public class LookupRangeResult : ILookupRangeResult
11+
{
12+
/// <inheritdoc/>
13+
public string LookupName { get; set; }
14+
15+
/// <inheritdoc/>
16+
public LookupRangeMode RangeMode { get; set; }
17+
18+
/// <inheritdoc/>
19+
public decimal? RangeSize { get; set; }
20+
21+
/// <inheritdoc/>
22+
public List<LookupRangeBracket> Brackets { get; set; }
23+
24+
/// <inheritdoc/>
25+
public override string ToString() =>
26+
LookupName;
27+
}

Client.Core/PayrollApiEndpoints.cs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -99,6 +99,10 @@ public static string PayrollLookupValuesUrl(int tenantId, int payrollId) =>
9999
public static string PayrollLookupValuesDataUrl(int tenantId, int payrollId) =>
100100
$"{PayrollLookupValuesUrl(tenantId, payrollId)}/data";
101101

102+
/// <summary>The payroll lookup ranges URL</summary>
103+
public static string PayrollLookupRangesUrl(int tenantId, int payrollId) =>
104+
$"{PayrollLookupsUrl(tenantId, payrollId)}/ranges";
105+
102106
/// <summary>The payroll reports URL</summary>
103107
public static string PayrollReportsUrl(int tenantId, int payrollId) =>
104108
$"{PayrollUrl(tenantId, payrollId)}/reports";

Client.Core/PayrollEngine.Client.Core.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,7 @@
8989
</None>
9090
</ItemGroup>
9191
<ItemGroup>
92-
<PackageReference Include="PayrollEngine.Core" Version="0.9.0-beta.15" />
92+
<PackageReference Include="PayrollEngine.Core" Version="0.9.0-beta.16" />
9393
</ItemGroup>
9494

9595
<!-- build json schema -->

Client.Core/PayrollEngine.Client.Core.xml

Lines changed: 129 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5049,6 +5049,66 @@
50495049
<member name="P:PayrollEngine.Client.Model.ILookupData.RangeSize">
50505050
<summary>The lookup range size</summary>
50515051
</member>
5052+
<member name="T:PayrollEngine.Client.Model.ILookupRangeBracket">
5053+
<summary>
5054+
A lookup range bracket with computed bounds
5055+
</summary>
5056+
</member>
5057+
<member name="P:PayrollEngine.Client.Model.ILookupRangeBracket.Key">
5058+
<summary>
5059+
The lookup value key
5060+
</summary>
5061+
</member>
5062+
<member name="P:PayrollEngine.Client.Model.ILookupRangeBracket.Value">
5063+
<summary>
5064+
The lookup value as JSON
5065+
</summary>
5066+
</member>
5067+
<member name="P:PayrollEngine.Client.Model.ILookupRangeBracket.RangeStart">
5068+
<summary>
5069+
The range start value
5070+
</summary>
5071+
</member>
5072+
<member name="P:PayrollEngine.Client.Model.ILookupRangeBracket.RangeEnd">
5073+
<summary>
5074+
The range end value (unbound bracket: Decimal.MaxValue)
5075+
</summary>
5076+
</member>
5077+
<member name="P:PayrollEngine.Client.Model.ILookupRangeBracket.RangeValue">
5078+
<summary>
5079+
The brackets range value
5080+
</summary>
5081+
<remarks>
5082+
Threshold lookup: value within the matching bracket.
5083+
Progressive lookup: matching bracket value range, except the last one which the value within his range.
5084+
Other: null.
5085+
</remarks>
5086+
</member>
5087+
<member name="T:PayrollEngine.Client.Model.ILookupRangeResult">
5088+
<summary>
5089+
Result of a lookup range bracket computation
5090+
</summary>
5091+
</member>
5092+
<member name="P:PayrollEngine.Client.Model.ILookupRangeResult.LookupName">
5093+
<summary>
5094+
The lookup name
5095+
</summary>
5096+
</member>
5097+
<member name="P:PayrollEngine.Client.Model.ILookupRangeResult.RangeMode">
5098+
<summary>
5099+
The lookup range mode
5100+
</summary>
5101+
</member>
5102+
<member name="P:PayrollEngine.Client.Model.ILookupRangeResult.RangeSize">
5103+
<summary>
5104+
The lookup range size
5105+
</summary>
5106+
</member>
5107+
<member name="P:PayrollEngine.Client.Model.ILookupRangeResult.Brackets">
5108+
<summary>
5109+
Range brackets
5110+
</summary>
5111+
</member>
50525112
<member name="T:PayrollEngine.Client.Model.ILookupSet">
50535113
<summary>Lookup including the lookup value</summary>
50545114
</member>
@@ -6263,6 +6323,59 @@
62636323
<summary>Returns a <see cref="T:System.String" /> that represents this instance</summary>
62646324
<returns>A <see cref="T:System.String" /> that represents this instance</returns>
62656325
</member>
6326+
<member name="T:PayrollEngine.Client.Model.LookupRangeBracket">
6327+
<summary>
6328+
A lookup range bracket with computed bounds
6329+
</summary>
6330+
</member>
6331+
<member name="P:PayrollEngine.Client.Model.LookupRangeBracket.Key">
6332+
<summary>
6333+
The lookup value key
6334+
</summary>
6335+
</member>
6336+
<member name="P:PayrollEngine.Client.Model.LookupRangeBracket.Value">
6337+
<summary>
6338+
The lookup value as JSON
6339+
</summary>
6340+
</member>
6341+
<member name="P:PayrollEngine.Client.Model.LookupRangeBracket.RangeStart">
6342+
<summary>
6343+
The range start (lower bound)
6344+
</summary>
6345+
</member>
6346+
<member name="P:PayrollEngine.Client.Model.LookupRangeBracket.RangeEnd">
6347+
<summary>
6348+
The range end (upper bound), Decimal.MaxValue for unbounded last bracket
6349+
</summary>
6350+
</member>
6351+
<member name="P:PayrollEngine.Client.Model.LookupRangeBracket.RangeValue">
6352+
<summary>
6353+
The original range value from the lookup value
6354+
</summary>
6355+
</member>
6356+
<member name="M:PayrollEngine.Client.Model.LookupRangeBracket.ToString">
6357+
<inheritdoc/>
6358+
</member>
6359+
<member name="T:PayrollEngine.Client.Model.LookupRangeResult">
6360+
<summary>
6361+
Result of a lookup range bracket computation
6362+
</summary>
6363+
</member>
6364+
<member name="P:PayrollEngine.Client.Model.LookupRangeResult.LookupName">
6365+
<inheritdoc/>
6366+
</member>
6367+
<member name="P:PayrollEngine.Client.Model.LookupRangeResult.RangeMode">
6368+
<inheritdoc/>
6369+
</member>
6370+
<member name="P:PayrollEngine.Client.Model.LookupRangeResult.RangeSize">
6371+
<inheritdoc/>
6372+
</member>
6373+
<member name="P:PayrollEngine.Client.Model.LookupRangeResult.Brackets">
6374+
<inheritdoc/>
6375+
</member>
6376+
<member name="M:PayrollEngine.Client.Model.LookupRangeResult.ToString">
6377+
<inheritdoc/>
6378+
</member>
62666379
<member name="T:PayrollEngine.Client.Model.LookupSet">
62676380
<summary>Lookup including the lookup value</summary>
62686381
</member>
@@ -8338,6 +8451,9 @@
83388451
<member name="M:PayrollEngine.Client.PayrollApiEndpoints.PayrollLookupValuesDataUrl(System.Int32,System.Int32)">
83398452
<summary>The payroll lookup values data URL</summary>
83408453
</member>
8454+
<member name="M:PayrollEngine.Client.PayrollApiEndpoints.PayrollLookupRangesUrl(System.Int32,System.Int32)">
8455+
<summary>The payroll lookup ranges URL</summary>
8456+
</member>
83418457
<member name="M:PayrollEngine.Client.PayrollApiEndpoints.PayrollReportsUrl(System.Int32,System.Int32)">
83428458
<summary>The payroll reports URL</summary>
83438459
</member>
@@ -10749,6 +10865,9 @@
1074910865
<member name="M:PayrollEngine.Client.Service.Api.PayrollService.GetLookupValueDataAsync(PayrollEngine.Client.Service.PayrollServiceContext,System.String,System.String,System.Nullable{System.Decimal},System.Nullable{System.DateTime},System.Nullable{System.DateTime},System.String)">
1075010866
<inheritdoc/>
1075110867
</member>
10868+
<member name="M:PayrollEngine.Client.Service.Api.PayrollService.GetLookupRangesAsync(PayrollEngine.Client.Service.PayrollServiceContext,System.Collections.Generic.IEnumerable{System.String},System.Nullable{System.Decimal},System.Nullable{System.DateTime},System.Nullable{System.DateTime},System.String)">
10869+
<inheritdoc/>
10870+
</member>
1075210871
<member name="M:PayrollEngine.Client.Service.Api.PayrollService.GetReportsAsync``1(PayrollEngine.Client.Service.PayrollServiceContext,System.Collections.Generic.IEnumerable{System.String},System.Nullable{PayrollEngine.OverrideType},System.Nullable{PayrollEngine.UserType},System.Nullable{System.DateTime},System.Nullable{System.DateTime})">
1075310872
<inheritdoc/>
1075410873
</member>
@@ -12176,6 +12295,16 @@
1217612295
<param name="culture">The culture</param>
1217712296
<returns>The lookup value data</returns>
1217812297
</member>
12298+
<member name="M:PayrollEngine.Client.Service.IPayrollService.GetLookupRangesAsync(PayrollEngine.Client.Service.PayrollServiceContext,System.Collections.Generic.IEnumerable{System.String},System.Nullable{System.Decimal},System.Nullable{System.DateTime},System.Nullable{System.DateTime},System.String)">
12299+
<summary>Get payroll lookup range brackets</summary>
12300+
<param name="context">The service context</param>
12301+
<param name="lookupNames">The lookup names (case-insensitive)</param>
12302+
<param name="rangeValue">Optional value to find matching bracket(s)</param>
12303+
<param name="regulationDate">The regulation date (default: UTC now)</param>
12304+
<param name="evaluationDate">The evaluation date (default: UTC now)</param>
12305+
<param name="culture">The content culture</param>
12306+
<returns>The lookup range results</returns>
12307+
</member>
1217912308
<member name="M:PayrollEngine.Client.Service.IPayrollService.GetReportsAsync``1(PayrollEngine.Client.Service.PayrollServiceContext,System.Collections.Generic.IEnumerable{System.String},System.Nullable{PayrollEngine.OverrideType},System.Nullable{PayrollEngine.UserType},System.Nullable{System.DateTime},System.Nullable{System.DateTime})">
1218012309
<summary>Get payroll report sets</summary>
1218112310
<param name="context">The service context</param>

Client.Core/Service.Api/PayrollService.cs

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -491,6 +491,29 @@ public virtual async Task<LookupValueData> GetLookupValueDataAsync(PayrollServic
491491
return await HttpClient.GetAsync<LookupValueData>(uri);
492492
}
493493

494+
/// <inheritdoc/>
495+
public virtual async Task<List<LookupRangeResult>> GetLookupRangesAsync(PayrollServiceContext context,
496+
IEnumerable<string> lookupNames, decimal? rangeValue = null,
497+
DateTime? regulationDate = null, DateTime? evaluationDate = null, string culture = null)
498+
{
499+
if (context == null)
500+
{
501+
throw new ArgumentNullException(nameof(context));
502+
}
503+
if (lookupNames == null)
504+
{
505+
throw new ArgumentException(nameof(lookupNames));
506+
}
507+
508+
var uri = PayrollApiEndpoints.PayrollLookupRangesUrl(context.TenantId, context.PayrollId)
509+
.AddCollectionQueryString(nameof(lookupNames), lookupNames)
510+
.AddQueryString(nameof(rangeValue), rangeValue)
511+
.AddQueryString(nameof(regulationDate), regulationDate)
512+
.AddQueryString(nameof(evaluationDate), evaluationDate)
513+
.AddQueryString(nameof(culture), culture);
514+
return await HttpClient.GetCollectionAsync<LookupRangeResult>(uri);
515+
}
516+
494517
/// <inheritdoc/>
495518
public virtual async Task<List<TReportSet>> GetReportsAsync<TReportSet>(PayrollServiceContext context,
496519
IEnumerable<string> reportNames = null, OverrideType? overrideType = null, UserType? userType = null,

Client.Core/Service/IPayrollService.cs

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -229,6 +229,18 @@ Task<List<TLookupValue>> GetLookupValuesAsync<TLookupValue>(PayrollServiceContex
229229
Task<LookupValueData> GetLookupValueDataAsync(PayrollServiceContext context, string lookupName, string lookupKey = null,
230230
decimal? rangeValue = null, DateTime? regulationDate = null, DateTime? evaluationDate = null, string culture = null);
231231

232+
/// <summary>Get payroll lookup range brackets</summary>
233+
/// <param name="context">The service context</param>
234+
/// <param name="lookupNames">The lookup names (case-insensitive)</param>
235+
/// <param name="rangeValue">Optional value to find matching bracket(s)</param>
236+
/// <param name="regulationDate">The regulation date (default: UTC now)</param>
237+
/// <param name="evaluationDate">The evaluation date (default: UTC now)</param>
238+
/// <param name="culture">The content culture</param>
239+
/// <returns>The lookup range results</returns>
240+
Task<List<LookupRangeResult>> GetLookupRangesAsync(PayrollServiceContext context, IEnumerable<string> lookupNames,
241+
decimal? rangeValue = null, DateTime? regulationDate = null, DateTime? evaluationDate = null,
242+
string culture = null);
243+
232244
/// <summary>Get payroll report sets</summary>
233245
/// <param name="context">The service context</param>
234246
/// <param name="reportNames">The report names filter (default is all)</param>

Directory.Build.props

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
<PropertyGroup>
44
<TargetFramework>net10.0</TargetFramework>
5-
<Version>0.9.0-beta.15</Version>
5+
<Version>0.9.0-beta.16</Version>
66
<FileVersion>0.9.0</FileVersion>
77
<InformationalVersion></InformationalVersion>
88
<Authors>Jani Giannoudis</Authors>

0 commit comments

Comments
 (0)