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

altered the code to load all notifications when doing matching and d… #112

Merged
merged 5 commits into from
Feb 4, 2025
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
2 changes: 1 addition & 1 deletion Btms.Analytics.Tests/MovementsExceptionsTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ namespace Btms.Analytics.Tests;
public class MovementsExceptionsTests(ITestOutputHelper output) : MultipleScenarioGeneratorBaseTest(output)
{
static readonly List<object[]> scenarios = [
[typeof(Mrn24Gbd46Kpsvz3Dfar2ScenarioGenerator), "HasChedppChecks FeatureMissing : Cdms205Ac5"],
[typeof(Mrn24GBD46KPSVZ3DFAR2ModifiedAlvsDecisionCodeScenarioGenerator), "HasChedppChecks FeatureMissing : Cdms205Ac5"],
[typeof(CrNoMatchSingleItemWithDecisionScenarioGenerator), "Alvs has match decisions but no Btms links"]
];

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,20 @@ public void MultiChed_WorstCaseDecisionCode(Type generatorType, string expectedD
CheckDecisionCode(expectedDecision);
}

[Theory]
[InlineData(typeof(Mrn24Gbdev7Bgq1L0Oar4ScenarioGenerator))]
public void MultiChed_DecisionCode_ShouldContainAllItems(Type generatorType)
{
EnsureEnvironmentInitialised(generatorType);

var movement = Client.AsJsonApiClient().Get("api/movements").GetResourceObjects<Movement>().Single();

foreach (var movementDecision in movement.Decisions)
{
movementDecision.Items.Length.Should().Be(movement.Items.Count);
}
}

private void CheckDecisionCode(string expectedDecision)
{
var decision = "";
Expand Down
24 changes: 19 additions & 5 deletions Btms.Consumers/NotificationConsumer.cs
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
using Btms.Backend.Data;
using Btms.Backend.Data.Extensions;
using Btms.Types.Ipaffs;
using SlimMessageBus;
using Btms.Consumers.Extensions;
Expand All @@ -9,7 +10,6 @@
using Btms.Business.Services.Matching;
using Btms.Business.Services.Validating;
using Btms.Model.Cds;
using Microsoft.EntityFrameworkCore;
using DecisionContext = Btms.Business.Services.Decisions.DecisionContext;

namespace Btms.Consumers;
Expand Down Expand Up @@ -64,17 +64,19 @@ public async Task OnHandle(ImportNotification message, CancellationToken cancell
return;
}

var matchResult = await matchingService.Process(
new MatchingContext(linkResult.Notifications, linkResult.Movements), Context.CancellationToken);
var notifications = await LoadAllNotificationReferenced(cancellationToken, linkResult);

var decisionContext = new DecisionContext(linkResult.Notifications, linkResult.Movements, matchResult);
var matchResult = await matchingService.Process(
new MatchingContext(notifications, linkResult.Movements), Context.CancellationToken);

var decisionContext = new DecisionContext(notifications, linkResult.Movements, matchResult);
var decisionResult = await decisionService.Process(decisionContext, Context.CancellationToken);

await validationService.PostDecision(linkResult, decisionResult, Context.CancellationToken);

await dbContext.SaveChangesAsync(Context.CancellationToken);

await Context.Bus.PublishDecisions(messageId, decisionResult, decisionContext);
await Context.Bus.PublishDecisions(messageId, decisionResult, decisionContext, cancellationToken: cancellationToken);
}
else if (preProcessingResult.IsDeleted())
{
Expand All @@ -99,6 +101,18 @@ public async Task OnHandle(ImportNotification message, CancellationToken cancell
}
}

private async Task<List<Model.Ipaffs.ImportNotification>> LoadAllNotificationReferenced(CancellationToken cancellationToken, LinkResult linkResult)
{
var movementMatchReferences = linkResult.Movements.SelectMany(x => x._MatchReferences).ToList();
var notificationIdentifiers = linkResult.Notifications.Select(x => x._MatchReference);
var missingIdentifiers = movementMatchReferences.Except(notificationIdentifiers).ToList();
var notifications = await dbContext.Notifications
.Where(x => missingIdentifiers.Contains(x._MatchReference))
.ToListAsync(cancellationToken);
notifications.AddRange(linkResult.Notifications);
return notifications;
}

private void LogStatus(string state, ImportNotification message)
{
logger.LogInformation("{state} : {id}, {version}, {lastUpdated}", state, message.ReferenceNumber, message.Version, message.LastUpdated);
Expand Down

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{"serviceHeader":{"sourceSystem":"ALVS","destinationSystem":"CDS","correlationId":"000","serviceCallTimestamp":1733270123792},"header":{"entryReference":"24GBDEV7BGQ1L0OAR4","entryVersionNumber":2,"decisionNumber":1},"items":[{"itemNumber":29,"documents":[],"checks":[{"checkCode":"H222","decisionCode":"H01","decisionValidUntil":null,"decisionReasons":[]}]},{"itemNumber":30,"documents":[],"checks":[{"checkCode":"H222","decisionCode":"H01","decisionValidUntil":null,"decisionReasons":[]}]},{"itemNumber":31,"documents":[],"checks":[{"checkCode":"H222","decisionCode":"H01","decisionValidUntil":null,"decisionReasons":[]}]},{"itemNumber":32,"documents":[],"checks":[{"checkCode":"H222","decisionCode":"H01","decisionValidUntil":null,"decisionReasons":[]}]},{"itemNumber":33,"documents":[],"checks":[{"checkCode":"H222","decisionCode":"H01","decisionValidUntil":null,"decisionReasons":[]}]},{"itemNumber":34,"documents":[],"checks":[{"checkCode":"H222","decisionCode":"H01","decisionValidUntil":null,"decisionReasons":[]}]},{"itemNumber":35,"documents":[],"checks":[{"checkCode":"H222","decisionCode":"H01","decisionValidUntil":null,"decisionReasons":[]}]},{"itemNumber":36,"documents":[],"checks":[{"checkCode":"H222","decisionCode":"H01","decisionValidUntil":null,"decisionReasons":[]}]},{"itemNumber":37,"documents":[],"checks":[{"checkCode":"H222","decisionCode":"H01","decisionValidUntil":null,"decisionReasons":[]}]},{"itemNumber":38,"documents":[],"checks":[{"checkCode":"H222","decisionCode":"H01","decisionValidUntil":null,"decisionReasons":[]}]},{"itemNumber":39,"documents":[],"checks":[{"checkCode":"H222","decisionCode":"H01","decisionValidUntil":null,"decisionReasons":[]}]},{"itemNumber":40,"documents":[],"checks":[{"checkCode":"H222","decisionCode":"H01","decisionValidUntil":null,"decisionReasons":[]}]},{"itemNumber":41,"documents":[],"checks":[{"checkCode":"H222","decisionCode":"H01","decisionValidUntil":null,"decisionReasons":[]}]},{"itemNumber":42,"documents":[],"checks":[{"checkCode":"H222","decisionCode":"H01","decisionValidUntil":null,"decisionReasons":[]}]},{"itemNumber":43,"documents":[],"checks":[{"checkCode":"H222","decisionCode":"H01","decisionValidUntil":null,"decisionReasons":[]}]},{"itemNumber":44,"documents":[],"checks":[{"checkCode":"H222","decisionCode":"H01","decisionValidUntil":null,"decisionReasons":[]}]},{"itemNumber":45,"documents":[],"checks":[{"checkCode":"H222","decisionCode":"H01","decisionValidUntil":null,"decisionReasons":[]}]},{"itemNumber":46,"documents":[],"checks":[{"checkCode":"H222","decisionCode":"H01","decisionValidUntil":null,"decisionReasons":[]}]},{"itemNumber":47,"documents":[],"checks":[{"checkCode":"H222","decisionCode":"H01","decisionValidUntil":null,"decisionReasons":[]}]},{"itemNumber":48,"documents":[],"checks":[{"checkCode":"H222","decisionCode":"H01","decisionValidUntil":null,"decisionReasons":[]}]},{"itemNumber":49,"documents":[],"checks":[{"checkCode":"H222","decisionCode":"H01","decisionValidUntil":null,"decisionReasons":[]}]},{"itemNumber":50,"documents":[],"checks":[{"checkCode":"H222","decisionCode":"H01","decisionValidUntil":null,"decisionReasons":[]}]},{"itemNumber":51,"documents":[],"checks":[{"checkCode":"H222","decisionCode":"H01","decisionValidUntil":null,"decisionReasons":[]}]},{"itemNumber":52,"documents":[],"checks":[{"checkCode":"H222","decisionCode":"H01","decisionValidUntil":null,"decisionReasons":[]}]},{"itemNumber":53,"documents":[],"checks":[{"checkCode":"H222","decisionCode":"H01","decisionValidUntil":null,"decisionReasons":[]}]},{"itemNumber":54,"documents":[],"checks":[{"checkCode":"H222","decisionCode":"H01","decisionValidUntil":null,"decisionReasons":[]}]},{"itemNumber":55,"documents":[],"checks":[{"checkCode":"H222","decisionCode":"H01","decisionValidUntil":null,"decisionReasons":[]}]},{"itemNumber":56,"documents":[],"checks":[{"checkCode":"H222","decisionCode":"H01","decisionValidUntil":null,"decisionReasons":[]}]},{"itemNumber":57,"documents":[],"checks":[{"checkCode":"H222","decisionCode":"H01","decisionValidUntil":null,"decisionReasons":[]}]}]}
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{"serviceHeader":{"sourceSystem":"ALVS","destinationSystem":"CDS","correlationId":"000","serviceCallTimestamp":1733331759551},"header":{"entryReference":"24GBDEV7BGQ1L0OAR4","entryVersionNumber":3,"decisionNumber":3},"items":[{"itemNumber":29,"documents":[],"checks":[{"checkCode":"H222","decisionCode":"C03","decisionValidUntil":null,"decisionReasons":[]}]},{"itemNumber":30,"documents":[],"checks":[{"checkCode":"H222","decisionCode":"C03","decisionValidUntil":null,"decisionReasons":[]}]},{"itemNumber":31,"documents":[],"checks":[{"checkCode":"H222","decisionCode":"C03","decisionValidUntil":null,"decisionReasons":[]}]},{"itemNumber":32,"documents":[],"checks":[{"checkCode":"H222","decisionCode":"C03","decisionValidUntil":null,"decisionReasons":[]}]},{"itemNumber":33,"documents":[],"checks":[{"checkCode":"H222","decisionCode":"C03","decisionValidUntil":null,"decisionReasons":[]}]},{"itemNumber":34,"documents":[],"checks":[{"checkCode":"H222","decisionCode":"C03","decisionValidUntil":null,"decisionReasons":[]}]},{"itemNumber":35,"documents":[],"checks":[{"checkCode":"H222","decisionCode":"C03","decisionValidUntil":null,"decisionReasons":[]}]},{"itemNumber":36,"documents":[],"checks":[{"checkCode":"H222","decisionCode":"C03","decisionValidUntil":null,"decisionReasons":[]}]},{"itemNumber":37,"documents":[],"checks":[{"checkCode":"H222","decisionCode":"C03","decisionValidUntil":null,"decisionReasons":[]}]},{"itemNumber":38,"documents":[],"checks":[{"checkCode":"H222","decisionCode":"C03","decisionValidUntil":null,"decisionReasons":[]}]},{"itemNumber":39,"documents":[],"checks":[{"checkCode":"H222","decisionCode":"C03","decisionValidUntil":null,"decisionReasons":[]}]},{"itemNumber":40,"documents":[],"checks":[{"checkCode":"H222","decisionCode":"C03","decisionValidUntil":null,"decisionReasons":[]}]},{"itemNumber":41,"documents":[],"checks":[{"checkCode":"H222","decisionCode":"C03","decisionValidUntil":null,"decisionReasons":[]}]},{"itemNumber":42,"documents":[],"checks":[{"checkCode":"H222","decisionCode":"C03","decisionValidUntil":null,"decisionReasons":[]}]},{"itemNumber":43,"documents":[],"checks":[{"checkCode":"H222","decisionCode":"C03","decisionValidUntil":null,"decisionReasons":[]}]},{"itemNumber":44,"documents":[],"checks":[{"checkCode":"H222","decisionCode":"C03","decisionValidUntil":null,"decisionReasons":[]}]},{"itemNumber":45,"documents":[],"checks":[{"checkCode":"H222","decisionCode":"C03","decisionValidUntil":null,"decisionReasons":[]}]},{"itemNumber":46,"documents":[],"checks":[{"checkCode":"H222","decisionCode":"C03","decisionValidUntil":null,"decisionReasons":[]}]},{"itemNumber":47,"documents":[],"checks":[{"checkCode":"H222","decisionCode":"C03","decisionValidUntil":null,"decisionReasons":[]}]},{"itemNumber":48,"documents":[],"checks":[{"checkCode":"H222","decisionCode":"C03","decisionValidUntil":null,"decisionReasons":[]}]},{"itemNumber":49,"documents":[],"checks":[{"checkCode":"H222","decisionCode":"C03","decisionValidUntil":null,"decisionReasons":[]}]},{"itemNumber":50,"documents":[],"checks":[{"checkCode":"H222","decisionCode":"C03","decisionValidUntil":null,"decisionReasons":[]}]},{"itemNumber":51,"documents":[],"checks":[{"checkCode":"H222","decisionCode":"C03","decisionValidUntil":null,"decisionReasons":[]}]},{"itemNumber":52,"documents":[],"checks":[{"checkCode":"H222","decisionCode":"C03","decisionValidUntil":null,"decisionReasons":[]}]},{"itemNumber":53,"documents":[],"checks":[{"checkCode":"H222","decisionCode":"C03","decisionValidUntil":null,"decisionReasons":[]}]},{"itemNumber":54,"documents":[],"checks":[{"checkCode":"H222","decisionCode":"C03","decisionValidUntil":null,"decisionReasons":[]}]},{"itemNumber":55,"documents":[],"checks":[{"checkCode":"H222","decisionCode":"C03","decisionValidUntil":null,"decisionReasons":[]}]},{"itemNumber":56,"documents":[],"checks":[{"checkCode":"H222","decisionCode":"C03","decisionValidUntil":null,"decisionReasons":[]}]},{"itemNumber":57,"documents":[],"checks":[{"checkCode":"H222","decisionCode":"C03","decisionValidUntil":null,"decisionReasons":[]}]}]}
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{"serviceHeader":{"sourceSystem":"ALVS","destinationSystem":"CDS","correlationId":"000","serviceCallTimestamp":1733306877055},"header":{"entryReference":"24GBDEV7BGQ1L0OAR4","entryVersionNumber":2,"decisionNumber":2},"items":[{"itemNumber":29,"documents":[],"checks":[{"checkCode":"H222","decisionCode":"C03","decisionValidUntil":null,"decisionReasons":[]}]},{"itemNumber":30,"documents":[],"checks":[{"checkCode":"H222","decisionCode":"C03","decisionValidUntil":null,"decisionReasons":[]}]},{"itemNumber":31,"documents":[],"checks":[{"checkCode":"H222","decisionCode":"C03","decisionValidUntil":null,"decisionReasons":[]}]},{"itemNumber":32,"documents":[],"checks":[{"checkCode":"H222","decisionCode":"C03","decisionValidUntil":null,"decisionReasons":[]}]},{"itemNumber":33,"documents":[],"checks":[{"checkCode":"H222","decisionCode":"C03","decisionValidUntil":null,"decisionReasons":[]}]},{"itemNumber":34,"documents":[],"checks":[{"checkCode":"H222","decisionCode":"C03","decisionValidUntil":null,"decisionReasons":[]}]},{"itemNumber":35,"documents":[],"checks":[{"checkCode":"H222","decisionCode":"C03","decisionValidUntil":null,"decisionReasons":[]}]},{"itemNumber":36,"documents":[],"checks":[{"checkCode":"H222","decisionCode":"C03","decisionValidUntil":null,"decisionReasons":[]}]},{"itemNumber":37,"documents":[],"checks":[{"checkCode":"H222","decisionCode":"C03","decisionValidUntil":null,"decisionReasons":[]}]},{"itemNumber":38,"documents":[],"checks":[{"checkCode":"H222","decisionCode":"C03","decisionValidUntil":null,"decisionReasons":[]}]},{"itemNumber":39,"documents":[],"checks":[{"checkCode":"H222","decisionCode":"C03","decisionValidUntil":null,"decisionReasons":[]}]},{"itemNumber":40,"documents":[],"checks":[{"checkCode":"H222","decisionCode":"C03","decisionValidUntil":null,"decisionReasons":[]}]},{"itemNumber":41,"documents":[],"checks":[{"checkCode":"H222","decisionCode":"C03","decisionValidUntil":null,"decisionReasons":[]}]},{"itemNumber":42,"documents":[],"checks":[{"checkCode":"H222","decisionCode":"C03","decisionValidUntil":null,"decisionReasons":[]}]},{"itemNumber":43,"documents":[],"checks":[{"checkCode":"H222","decisionCode":"C03","decisionValidUntil":null,"decisionReasons":[]}]},{"itemNumber":44,"documents":[],"checks":[{"checkCode":"H222","decisionCode":"C03","decisionValidUntil":null,"decisionReasons":[]}]},{"itemNumber":45,"documents":[],"checks":[{"checkCode":"H222","decisionCode":"C03","decisionValidUntil":null,"decisionReasons":[]}]},{"itemNumber":46,"documents":[],"checks":[{"checkCode":"H222","decisionCode":"C03","decisionValidUntil":null,"decisionReasons":[]}]},{"itemNumber":47,"documents":[],"checks":[{"checkCode":"H222","decisionCode":"C03","decisionValidUntil":null,"decisionReasons":[]}]},{"itemNumber":48,"documents":[],"checks":[{"checkCode":"H222","decisionCode":"C03","decisionValidUntil":null,"decisionReasons":[]}]},{"itemNumber":49,"documents":[],"checks":[{"checkCode":"H222","decisionCode":"C03","decisionValidUntil":null,"decisionReasons":[]}]},{"itemNumber":50,"documents":[],"checks":[{"checkCode":"H222","decisionCode":"C03","decisionValidUntil":null,"decisionReasons":[]}]},{"itemNumber":51,"documents":[],"checks":[{"checkCode":"H222","decisionCode":"C03","decisionValidUntil":null,"decisionReasons":[]}]},{"itemNumber":52,"documents":[],"checks":[{"checkCode":"H222","decisionCode":"C03","decisionValidUntil":null,"decisionReasons":[]}]},{"itemNumber":53,"documents":[],"checks":[{"checkCode":"H222","decisionCode":"C03","decisionValidUntil":null,"decisionReasons":[]}]},{"itemNumber":54,"documents":[],"checks":[{"checkCode":"H222","decisionCode":"C03","decisionValidUntil":null,"decisionReasons":[]}]},{"itemNumber":55,"documents":[],"checks":[{"checkCode":"H222","decisionCode":"C03","decisionValidUntil":null,"decisionReasons":[]}]},{"itemNumber":56,"documents":[],"checks":[{"checkCode":"H222","decisionCode":"C03","decisionValidUntil":null,"decisionReasons":[]}]},{"itemNumber":57,"documents":[],"checks":[{"checkCode":"H222","decisionCode":"C03","decisionValidUntil":null,"decisionReasons":[]}]}]}
Loading
Loading