Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

R3.2.0->master #2258

Merged
merged 38 commits into from
Jun 4, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
38 commits
Select commit Hold shift + click to select a range
66de612
Merge pull request #2257 from bcgov/master
ytqsl May 31, 2024
deb2b5d
EMBCESSMOD-5497: Make text bold
May 31, 2024
7a1adb0
EMBCESSMOD-5494: Fix spelling mistake
May 31, 2024
2f1d18c
Merge pull request #2260 from HemanthKona/stories/EMBCESSMOD-5494-fix…
ytqsl May 31, 2024
ceea88b
Merge pull request #2259 from HemanthKona/stories/EMBCESSMOD-5497-tex…
ytqsl May 31, 2024
5b793e4
EMBCESSMOD-5509: fix localize reference for datepicker
josephweinkam May 31, 2024
a93257a
linting
josephweinkam May 31, 2024
9b45d03
Merge pull request #2261 from josephweinkam/release/R3.2.0
josephweinkamgov May 31, 2024
792cb9b
EMBCESSMOD-5427 - Responder - Add/Edit Household Members - Duplicate …
May 31, 2024
f09af73
EMBCESSMOD-5485: changed overlapping supports checks to be for the en…
ytqsl May 31, 2024
133d2fd
Merge pull request #2262 from TimaQT/features/timaqt/EMBCESSMOD-5427
ytqsl May 31, 2024
e4dce7c
Merge pull request #2263 from ytqsl/release/R3.2.0
ytqsl May 31, 2024
8c103c8
EMBCESSMOD-5515: fix for removed household members still display in S…
ytqsl Jun 1, 2024
21e726a
EMBCESSMOD-5512: fix for able to add household member and receive sup…
ytqsl Jun 1, 2024
fc04f3a
EMBCESSMOD-5511: fix for Clothing & Incidentals supports being provid…
ytqsl Jun 1, 2024
5d2f7a6
Merge pull request #2264 from ytqsl/release/R3.2.0
ytqsl Jun 1, 2024
837e24a
EMBCESSMOD-5517: fix for 'Support Extensions Available' is displayed …
ytqsl Jun 3, 2024
2df3374
EMBCESSMOD-5520: fix for eligibility check loading incorrectly
ytqsl Jun 3, 2024
46a0e1e
EMBCESSMOD-5441: Responders management list checkbox color fix
Jun 3, 2024
ef1f802
Merge pull request #2266 from ytqsl/release/R3.2.0
ytqsl Jun 3, 2024
7f0e7c7
Merge pull request #2267 from HemanthKona/stories/EMBCESSMOD-5441-res…
ytqsl Jun 3, 2024
97485cf
EMBCESSMOD-5518: show go back button on the support details step
Jun 3, 2024
33ebe3e
EMBCESSMOD-5494 - View Support button fixed;
Jun 3, 2024
7f6a277
EMBCESSMOD-5481 - Update your details - CSS div Fix
Jun 3, 2024
3c1e74c
Merge pull request #2268 from HemanthKona/stories/EMBCESSMOD-5518-sel…
ytqsl Jun 3, 2024
a3388b5
EMBCESSMOD-5511, 5516 Fix showing UnavailableOneTimeuse message
Jun 3, 2024
3140e1c
Merge pull request #2276 from HemanthKona/stories/EMBCESSMOD-5511-fix…
ytqsl Jun 3, 2024
e35ada0
Merge pull request #2272 from TimaQT/features/timaqt/EMBCESSMOD-5494
ytqsl Jun 3, 2024
66f0bc6
Merge pull request #2270 from TimaQT/features/timaqt/EMBCESSMOD-5481
ytqsl Jun 3, 2024
24a255d
EMBCESSMOD-5521: duplicate supports check timezone fix
josephweinkam Jun 3, 2024
7446a58
Merge pull request #2289 from josephweinkam/release/R3.2.0
josephweinkamgov Jun 3, 2024
7bb7223
EMBCESSMOD-5519: refactor and changes to fix evacuee enters self-serv…
ytqsl Jun 4, 2024
d2464f2
nuget package updates
ytqsl Jun 4, 2024
4ba5633
EMBCESSMOD-5523: calculate check compliance flags in parallel
josephweinkam Jun 4, 2024
675b405
Merge pull request #2290 from ytqsl/release/R3.2.0
ytqsl Jun 4, 2024
97850aa
Merge pull request #2291 from josephweinkam/release/R3.2.0
josephweinkamgov Jun 4, 2024
0f3e6d2
EMBCESSMOD-5519: fixed shelter allowance and groceries date calculations
ytqsl Jun 4, 2024
6e9df12
Merge pull request #2292 from ytqsl/release/R3.2.0
ytqsl Jun 4, 2024
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
Original file line number Diff line number Diff line change
Expand Up @@ -8,20 +8,20 @@
</PropertyGroup>

<ItemGroup>
<PackageReference Include="Microsoft.Extensions.Configuration.Binder" Version="6.0.*" />
<PackageReference Include="Microsoft.Extensions.Configuration.UserSecrets" Version="6.0.*" />
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.3.2" />
<PackageReference Include="Microsoft.Extensions.Configuration.Binder" Version="8.0.1" />
<PackageReference Include="Microsoft.Extensions.Configuration.UserSecrets" Version="8.0.0" />
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.10.0" />
<PackageReference Include="Protractor" Version="1.0.0" />
<PackageReference Include="Selenium.Support" Version="4.5.0" />
<PackageReference Include="Selenium.WebDriver.ChromeDriver" Version="106.0.5249.6100" />
<PackageReference Include="Selenium.Support" Version="4.21.0" />
<PackageReference Include="Selenium.WebDriver.ChromeDriver" Version="125.0.6422.14100" />
<PackageReference Include="SpecFlow.Plus.LivingDocPlugin" Version="3.9.57" />
<PackageReference Include="SpecFlow.xUnit" Version="3.9.74" />
<PackageReference Include="xunit" Version="2.4.2" />
<PackageReference Include="xunit.runner.visualstudio" Version="2.4.5">
<PackageReference Include="xunit" Version="2.8.1" />
<PackageReference Include="xunit.runner.visualstudio" Version="2.8.1">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference>
<PackageReference Include="FluentAssertions" Version="6.7.0" />
<PackageReference Include="FluentAssertions" Version="6.12.0" />
</ItemGroup>

</Project>
Original file line number Diff line number Diff line change
Expand Up @@ -13,20 +13,20 @@

<ItemGroup>
<PackageReference Include="DotNetSeleniumExtras.WaitHelpers" Version="3.11.0" />
<PackageReference Include="Microsoft.Extensions.Configuration.Binder" Version="6.0.*" />
<PackageReference Include="Microsoft.Extensions.Configuration.UserSecrets" Version="6.0.*" />
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.3.2" />
<PackageReference Include="Microsoft.Extensions.Configuration.Binder" Version="8.0.1" />
<PackageReference Include="Microsoft.Extensions.Configuration.UserSecrets" Version="8.0.0" />
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.10.0" />
<PackageReference Include="Protractor" Version="1.0.0" />
<PackageReference Include="Selenium.Support" Version="4.5.0" />
<PackageReference Include="Selenium.WebDriver.ChromeDriver" Version="106.0.5249.6100" />
<PackageReference Include="Selenium.Support" Version="4.21.0" />
<PackageReference Include="Selenium.WebDriver.ChromeDriver" Version="125.0.6422.14100" />
<PackageReference Include="SpecFlow.Plus.LivingDocPlugin" Version="3.9.57" />
<PackageReference Include="SpecFlow.xUnit" Version="3.9.74" />
<PackageReference Include="xunit" Version="2.4.2" />
<PackageReference Include="xunit.runner.visualstudio" Version="2.4.5">
<PackageReference Include="xunit" Version="2.8.1" />
<PackageReference Include="xunit.runner.visualstudio" Version="2.8.1">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference>
<PackageReference Include="FluentAssertions" Version="6.7.0" />
<PackageReference Include="FluentAssertions" Version="6.12.0" />
</ItemGroup>

<ItemGroup>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@
<ItemGroup>
<PackageReference Include="IdentityModel" Version="7.0.0" />
<PackageReference Include="Microsoft.Extensions.Http" Version="8.0.0" />
<PackageReference Include="Microsoft.Extensions.Http.Polly" Version="8.0.5" />
<PackageReference Include="Microsoft.Extensions.Http.Polly" Version="8.0.6" />
<PackageReference Include="System.Net.Http.Json" Version="8.0.0" />
</ItemGroup>

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -33,12 +33,12 @@
<PackageReference Include="Microsoft.Extensions.Http" Version="8.0.0" />
<PackageReference Include="Microsoft.Extensions.Logging.Abstractions" Version="8.0.1" />
<PackageReference Include="Microsoft.Extensions.Options" Version="8.0.2" />
<PackageReference Include="Microsoft.OData.Client" Version="7.21.1" />
<PackageReference Include="Microsoft.OData.Core" Version="7.21.1" />
<PackageReference Include="Microsoft.OData.Edm" Version="7.21.1" />
<PackageReference Include="Microsoft.OData.Client" Version="7.21.3" />
<PackageReference Include="Microsoft.OData.Core" Version="7.21.3" />
<PackageReference Include="Microsoft.OData.Edm" Version="7.21.3" />
<PackageReference Include="Microsoft.OData.Extensions.Client" Version="1.0.6" />
<PackageReference Include="Microsoft.Spatial" Version="7.21.1" />
<PackageReference Include="Microsoft.Extensions.Http.Polly" Version="8.0.5" />
<PackageReference Include="Microsoft.Spatial" Version="7.21.3" />
<PackageReference Include="Microsoft.Extensions.Http.Polly" Version="8.0.6" />
<PackageReference Include="System.ComponentModel.Annotations" Version="5.0.0" />
<PackageReference Include="System.Text.Json" Version="8.0.3" />
</ItemGroup>
Expand Down
41 changes: 21 additions & 20 deletions ess/src/API/EMBC.ESS/Engines/Supporting/Configuration.cs
Original file line number Diff line number Diff line change
Expand Up @@ -3,31 +3,32 @@
using EMBC.ESS.Engines.Supporting.SupportGeneration;
using EMBC.ESS.Engines.Supporting.SupportGeneration.ReferralPrinting;
using EMBC.ESS.Engines.Supporting.SupportGeneration.SelfServe;
using EMBC.ESS.Engines.Supporting.SupportGeneration.SelfServe.SupportCreationStrategies;
using EMBC.ESS.Engines.Supporting.SupportProcessing;
using EMBC.Utilities.Configuration;
using Microsoft.Extensions.DependencyInjection;

namespace EMBC.ESS.Engines.Supporting
namespace EMBC.ESS.Engines.Supporting;

public class Configuration : IConfigureComponentServices
{
public class Configuration : IConfigureComponentServices
public void ConfigureServices(ConfigurationServices configurationServices)
{
public void ConfigureServices(ConfigurationServices configurationServices)
{
configurationServices.Services
.AddTransient<ISupportingEngine, SupportingEngine>()
.AddTransient<SupportProcessingStrategyFactory>()
.AddTransient<DigitalSupportProcessingStrategy>()
.AddTransient<PaperSupportProcessingStrategy>()
.AddTransient<SupportGenerationStrategyStrategyFactory>()
.AddTransient<SingleDocumentStrategy>()
.AddTransient<SupportComplianceStrategyFactory>()
.AddTransient<ISupportComplianceCheck, DuplicateSupportComplianceCheck>()
.AddTransient<ISupportComplianceCheck, AmountExceededSupportComplianceCheck>()
.AddTransient<PaymentGenerationStrategyFactory>()
.AddTransient<SelfServeSupportEligibilityStrategy>()
.AddTransient<SelfServeSupportGenerator>()
.AddTransient<SelfServeEtransferGenerator>()
;
}
configurationServices.Services
.AddTransient<ISupportingEngine, SupportingEngine>()
.AddTransient<SupportProcessingStrategyFactory>()
.AddTransient<DigitalSupportProcessingStrategy>()
.AddTransient<PaperSupportProcessingStrategy>()
.AddTransient<SupportGenerationStrategyStrategyFactory>()
.AddTransient<SingleDocumentStrategy>()
.AddTransient<SupportComplianceStrategyFactory>()
.AddTransient<ISupportComplianceCheck, DuplicateSupportComplianceCheck>()
.AddTransient<ISupportComplianceCheck, AmountExceededSupportComplianceCheck>()
.AddTransient<PaymentGenerationStrategyFactory>()
.AddTransient<SelfServeSupportEligibilityStrategy>()
.AddTransient<SelfServeSupportGenerator>()
.AddTransient<SelfServeEtransferGenerator>()
.AddTransient<ISelfServeSupportCreationStrategy, SelfServeSupportCreationStrategy>()
;
}
}
2 changes: 1 addition & 1 deletion ess/src/API/EMBC.ESS/Engines/Supporting/Contract.cs
Original file line number Diff line number Diff line change
Expand Up @@ -164,7 +164,7 @@ public record SelfServeSupportEligibility(
IEnumerable<SelfServeSupportType> EligibleSupportTypes,
IEnumerable<SelfServeSupportType> OneTimePastSupportTypes);

public record GenerateSelfServeSupports(IEnumerable<SelfServeSupportType> SupportTypes, DateTime TaskStartDate, DateTime TaskEndDate, DateTime SupportPeriodFrom, DateTime SupportPeriodTo, IEnumerable<SelfServeHouseholdMember> HouseholdMembersIds) : GenerateRequest;
public record GenerateSelfServeSupports(IEnumerable<SelfServeSupportType> SupportTypes, DateTime SupportPeriodFrom, DateTime SupportPeriodTo, IEnumerable<SelfServeHouseholdMember> HouseholdMembersIds) : GenerateRequest;

public record SelfServeHouseholdMember(string Id, bool IsMinor);

Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
using System;
using System.Collections.Concurrent;
using System.Collections.Generic;
using System.Linq;
using System.Threading;
Expand Down Expand Up @@ -44,11 +45,11 @@ public SupportComplianceStrategy(params ISupportComplianceCheck[] strategies)

public async Task<CheckSupportComplianceResponse> CheckCompliance(CheckSupportComplianceRequest request, CancellationToken ct = default)
{
var flags = new Dictionary<Support, IEnumerable<SupportFlag>>();
foreach (var support in request.Supports)
var flags = new ConcurrentDictionary<Support, IEnumerable<SupportFlag>>();
await Parallel.ForEachAsync(request.Supports, ct, async (support, ct) =>
{
flags.Add(support, await CheckCompliance(support, ct));
}
flags.TryAdd(support, await CheckCompliance(support, ct));
});
return new CheckSupportComplianceResponse
{
Flags = flags
Expand Down
Original file line number Diff line number Diff line change
@@ -1,190 +1,38 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading;
using System.Threading.Tasks;
using EMBC.ESS.Shared.Contracts.Events.SelfServe;
using EMBC.ESS.Engines.Supporting.SupportGeneration.SelfServe.SupportCreationStrategies;

namespace EMBC.ESS.Engines.Supporting.SupportGeneration.SelfServe
namespace EMBC.ESS.Engines.Supporting.SupportGeneration.SelfServe;

internal class SelfServeSupportGenerator(ISelfServeSupportCreationStrategy supportCreationStrategy) : ISupportGenerationStrategy
{
internal class SelfServeSupportGenerator : ISupportGenerationStrategy
public Task<GenerateResponse> Generate(GenerateRequest request, CancellationToken ct)
{
public Task<GenerateResponse> Generate(GenerateRequest request, CancellationToken ct)
{
return request switch
{
GenerateSelfServeSupports req => Handle(req, ct),
CalculateSelfServeSupports req => Handle(req, ct),

_ => throw new NotImplementedException($"{request.GetType().Name}")
};
}

private async Task<GenerateResponse> Handle(CalculateSelfServeSupports req, CancellationToken ct)
{
foreach (var item in req.Supports)
{
item.TotalAmount = item switch
{
SelfServeClothingSupport s => CalculateSelfServeSupportAmount(s),
SelfServeFoodGroceriesSupport s => CalculateSelfServeSupportAmount(s),
SelfServeFoodRestaurantSupport s => CalculateSelfServeSupportAmount(s),
SelfServeIncidentalsSupport s => CalculateSelfServeSupportAmount(s),
SelfServeShelterAllowanceSupport s => CalculateSelfServeSupportAmount(s),

_ => throw new NotImplementedException($"{item.GetType().Name}")
};
}

return await Task.FromResult(new GenerateSelfServeSupportsResponse(req.Supports));
}

private async Task<GenerateResponse> Handle(GenerateSelfServeSupports req, CancellationToken ct)
{
var householdMembers = req.HouseholdMembersIds.ToArray();
var supports = req.SupportTypes.Select(n => CreateSupportsForNeed(n, req.SupportPeriodFrom, req.SupportPeriodTo, householdMembers)).ToList();
return await Task.FromResult(new GenerateSelfServeSupportsResponse(supports));
}

private static IEnumerable<DateOnly> CreateSupportDays(DateTime from, DateTime to)
return request switch
{
while (from.Date < to.Date)
{
yield return DateOnly.FromDateTime(from.Date);
from = from.AddDays(1);
}
}
GenerateSelfServeSupports req => Handle(req, ct),
CalculateSelfServeSupports req => Handle(req, ct),

private static SelfServeSupport CreateSupportsForNeed(SelfServeSupportType type, DateTime from, DateTime to, IEnumerable<SelfServeHouseholdMember> householdMembers) =>
type switch
{
SelfServeSupportType.FoodGroceries => CreateSelfServeFoodGroceriesSupport(from, to, householdMembers),
SelfServeSupportType.FoodRestaurant => CreateSelfServeFoodRestaurantSupport(from, to, householdMembers),
SelfServeSupportType.Incidentals => CreateIncidentalsSupport(householdMembers),
SelfServeSupportType.Clothing => CreateClothingSupport(householdMembers),
SelfServeSupportType.ShelterAllowance => CreateShelterAllowanceSupport(from, to, householdMembers),

_ => throw new NotImplementedException($"{type}")
};

private static SelfServeClothingSupport CreateClothingSupport(IEnumerable<SelfServeHouseholdMember> householdMembers)
{
var support = new SelfServeClothingSupport
{
IncludedHouseholdMembers = householdMembers.Select(hm => hm.Id).ToList(),
TotalAmount = 0d
};
support.TotalAmount = CalculateSelfServeSupportAmount(support);
return support;
}

private static double CalculateSelfServeSupportAmount(SelfServeClothingSupport support) => 150 * support.IncludedHouseholdMembers.Count();

private static SelfServeIncidentalsSupport CreateIncidentalsSupport(IEnumerable<SelfServeHouseholdMember> householdMembers)
{
var support = new SelfServeIncidentalsSupport()
{
IncludedHouseholdMembers = householdMembers.Select(hm => hm.Id).ToList(),
TotalAmount = 0d
};
support.TotalAmount = CalculateSelfServeSupportAmount(support);
return support;
}

private static double CalculateSelfServeSupportAmount(SelfServeIncidentalsSupport support) => 50 * support.IncludedHouseholdMembers.Count();

private static SelfServeShelterAllowanceSupport CreateShelterAllowanceSupport(DateTime from, DateTime to, IEnumerable<SelfServeHouseholdMember> householdMembers)
{
var support = new SelfServeShelterAllowanceSupport
{
Nights = CreateSupportDays(from, to).Take(3).ToList(),
IncludedHouseholdMembers = householdMembers.Select(hm => hm.Id).ToList(),
TotalAmount = 0d
};
support.TotalAmount = CalculateSelfServeSupportAmount(support);
return support;
}

private static double CalculateSelfServeSupportAmount(SelfServeShelterAllowanceSupport support) => support.IncludedHouseholdMembers.Any() ? 200d * support.Nights.Count() : 0d;

private static SelfServeFoodGroceriesSupport CreateSelfServeFoodGroceriesSupport(DateTime from, DateTime to, IEnumerable<SelfServeHouseholdMember> householdMembers)
{
var support = new SelfServeFoodGroceriesSupport
{
Nights = CreateSupportDays(from, to).Take(3).ToList(),
IncludedHouseholdMembers = householdMembers.Select(hm => hm.Id).ToList(),
TotalAmount = 0d
};
support.TotalAmount = CalculateSelfServeSupportAmount(support);
return support;
}

private static double CalculateSelfServeSupportAmount(SelfServeFoodGroceriesSupport support) => support.IncludedHouseholdMembers.Count() * support.Nights.Count() * 22.5d;

private static SelfServeFoodRestaurantSupport CreateSelfServeFoodRestaurantSupport(DateTime from, DateTime to, IEnumerable<SelfServeHouseholdMember> householdMembers)
{
var support = new SelfServeFoodRestaurantSupport
{
Meals = CalculateMealPlan(from, to),
IncludedHouseholdMembers = householdMembers.Select(hm => hm.Id).ToList(),
TotalAmount = 0d
};
support.TotalAmount = CalculateSelfServeSupportAmount(support);
return support;
}

private static IEnumerable<SupportDayMeals> CalculateMealPlan(DateTime from, DateTime to)
{
var meals = new Dictionary<DateOnly, SupportDayMeals>();

var startingTime = from;
var endingTime = to;

// allow previous day dinner if breakfast is selected for first day
if (startingTime.Hour < 11)
{
var prevDay = DateOnly.FromDateTime(from.AddDays(-1));
meals.Add(prevDay, new SupportDayMeals(prevDay) { Dinner = false });
}

while (startingTime < endingTime)
{
var day = DateOnly.FromDateTime(startingTime);
var meal = meals.ContainsKey(day) ? meals[day] : new SupportDayMeals(day);
switch (startingTime.Hour)
{
case >= 1 and < 11:
meal.Breakfast = meals.Values.Count(m => m.Breakfast == true) < 3;
startingTime = new DateTime(day, new TimeOnly(11, 1), DateTimeKind.Unspecified);
break;

case >= 11 and < 15:
meal.Lunch = meals.Values.Count(m => m.Lunch == true) < 3;
startingTime = new DateTime(day, new TimeOnly(15, 1), DateTimeKind.Unspecified);
break;

case (>= 15 and <= 24) or (>= 0 and < 1):
meal.Dinner = meals.Values.Count(m => m.Dinner == true) < 3;
startingTime = new DateTime(day.AddDays(1), new TimeOnly(1, 1), DateTimeKind.Unspecified);
break;
}
meals[day] = meal;
}
_ => throw new NotImplementedException($"{request.GetType().Name}")
};
}

return meals.Values;
}
private async Task<GenerateResponse> Handle(CalculateSelfServeSupports req, CancellationToken ct)
{
await Task.CompletedTask;
var supports = req.Supports.Select(supportCreationStrategy.Evaluate).Where(supportCreationStrategy.Validate);
return new GenerateSelfServeSupportsResponse(supports);
}

private static double CalculateSelfServeSupportAmount(SelfServeFoodRestaurantSupport support)
{
var numberOfHouseholdMembers = support.IncludedHouseholdMembers.Count();
var amount = 0d;
foreach (var meal in support.Meals)
{
if (meal.Breakfast == true) amount += 12.75d * numberOfHouseholdMembers;
if (meal.Lunch == true) amount += 14.75d * numberOfHouseholdMembers;
if (meal.Dinner == true) amount += 25.50d * numberOfHouseholdMembers;
}
return amount;
}
private async Task<GenerateResponse> Handle(GenerateSelfServeSupports req, CancellationToken ct)
{
await Task.CompletedTask;
var supports = req.SupportTypes
.Select(t => supportCreationStrategy.Create(new CreateSelfServeSupport(t, req.HouseholdMembersIds, req.SupportPeriodFrom, req.SupportPeriodTo)))
.Where(supportCreationStrategy.Validate)
.ToList();
return new GenerateSelfServeSupportsResponse(supports);
}
}
Loading
Loading