Skip to content

Commit

Permalink
Add user IDs to outbox messages
Browse files Browse the repository at this point in the history
  • Loading branch information
gunndabad committed Feb 11, 2025
1 parent 46bcfdd commit ab7058d
Show file tree
Hide file tree
Showing 15 changed files with 138 additions and 64 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,7 @@ public async Task<SetIttOutcomeResponse> Handle(SetIttOutcomeRequest request, Ca
request.IttProviderUkprn,
ittResult,
request.AssessmentDate,
Core.DataStore.Postgres.Models.SystemUser.SystemUserId,
request.SlugId);

if (!result.Succeeded)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -283,7 +283,8 @@ public dfeta_TrsOutboxMessage CreateSetInductionOutboxMessage()
return serializer.CreateCrmOutboxMessage(new AddInductionExemptionMessage()
{
PersonId = TeacherId,
ExemptionReasonId = exemptionReasonId!.Value
ExemptionReasonId = exemptionReasonId!.Value,
TrsUserId = _command.TrsUserId
});
}
else
Expand All @@ -292,7 +293,8 @@ public dfeta_TrsOutboxMessage CreateSetInductionOutboxMessage()

return serializer.CreateCrmOutboxMessage(new SetInductionRequiredToCompleteMessage()
{
PersonId = TeacherId
PersonId = TeacherId,
TrsUserId = _command.TrsUserId
});
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,9 +15,10 @@ public async Task<SetIttResultForTeacherResult> SetIttResultForTeacherAsync(
string ittProviderUkprn,
dfeta_ITTResult result,
DateOnly? assessmentDate,
Guid trsUserId,
string slugId = null)
{
var (r, _) = await SetIttResultForTeacherImplAsync(teacherId, ittProviderUkprn, result, assessmentDate, slugId);
var (r, _) = await SetIttResultForTeacherImplAsync(teacherId, ittProviderUkprn, result, assessmentDate, trsUserId, slugId);
return r;
}

Expand All @@ -27,6 +28,7 @@ public async Task<SetIttResultForTeacherResult> SetIttResultForTeacherAsync(
string ittProviderUkprn,
dfeta_ITTResult result,
DateOnly? assessmentDate,
Guid trsUserId,
string slugId = null)
{
switch (result)
Expand Down Expand Up @@ -179,7 +181,8 @@ public async Task<SetIttResultForTeacherResult> SetIttResultForTeacherAsync(
var outboxMessage = messageSerializer.CreateCrmOutboxMessage(
new SetInductionRequiredToCompleteMessage()
{
PersonId = teacherId
PersonId = teacherId,
TrsUserId = trsUserId
});

txnRequest.Requests.Add(new CreateRequest() { Target = outboxMessage });
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -64,6 +64,7 @@ Task<SetIttResultForTeacherResult> SetIttResultForTeacherAsync(
string ittProviderUkprn,
dfeta_ITTResult result,
DateOnly? assessmentDate,
Guid trsUserId,
string slugId = null);

Task SetTsPersonIdAsync(Guid teacherId, string tsPersonId);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@ public class CreateTeacherCommand
public Guid ApplicationUserId { get; set; }
public bool IdentityVerified { get; set; }
public string OneLoginUserSubject { get; set; }
public Guid? TrsUserId { get; set; }
}

public class CreateTeacherCommandAddress
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -86,7 +86,8 @@ public async Task<InductionImportResult> ImportAsync(StreamReader csvReaderStrea
rowTransaction.AppendQuery(new CreateDqtOutboxMessageTransactionalQuery(new AddInductionExemptionMessage
{
PersonId = lookupData.Person!.Id,
ExemptionReasonId = InductionExemptionReason.PassedInWalesId
ExemptionReasonId = InductionExemptionReason.PassedInWalesId,
TrsUserId = DataStore.Postgres.Models.SystemUser.SystemUserId
}));

if (lookupData.HasActiveAlerts)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -128,7 +128,8 @@ public async Task<QtsImportResult> ImportAsync(StreamReader csvReaderStream, str
{
rowTransaction.AppendQuery(new CreateDqtOutboxMessageTransactionalQuery(new SetInductionRequiredToCompleteMessage()
{
PersonId = lookupData.PersonId.Value
PersonId = lookupData.PersonId.Value,
TrsUserId = DataStore.Postgres.Models.SystemUser.SystemUserId
}));
}

Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,5 @@
using TeachingRecordSystem.Core.DataStore.Postgres;
using TeachingRecordSystem.Core.DataStore.Postgres.Models;
using TeachingRecordSystem.Core.Services.DqtOutbox.Messages;
using SystemUser = TeachingRecordSystem.Core.DataStore.Postgres.Models.SystemUser;

namespace TeachingRecordSystem.Core.Services.DqtOutbox.Handlers;

Expand All @@ -11,9 +9,13 @@ public async Task HandleMessageAsync(AddInductionExemptionMessage message)
{
var person = await dbContext.Persons.SingleAsync(p => p.PersonId == message.PersonId);

var updatedBy = message.DqtUserId is not null && message.DqtUserName is not null
? EventModels.RaisedByUserInfo.FromDqtUser(message.DqtUserId.Value, message.DqtUserName)
: EventModels.RaisedByUserInfo.FromUserId(message.TrsUserId!.Value);

person.AddInductionExemptionReason(
message.ExemptionReasonId,
updatedBy: SystemUser.SystemUserId,
updatedBy: updatedBy,
now: clock.UtcNow,
out var @event);

Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
using TeachingRecordSystem.Core.DataStore.Postgres;
using TeachingRecordSystem.Core.Services.DqtOutbox.Messages;
using SystemUser = TeachingRecordSystem.Core.DataStore.Postgres.Models.SystemUser;

namespace TeachingRecordSystem.Core.Services.DqtOutbox.Handlers;

Expand All @@ -15,6 +14,10 @@ public async Task HandleMessageAsync(SetInductionRequiredToCompleteMessage messa
return;
}

var updatedBy = message.DqtUserId is not null && message.DqtUserName is not null
? EventModels.RaisedByUserInfo.FromDqtUser(message.DqtUserId.Value, message.DqtUserName)
: EventModels.RaisedByUserInfo.FromUserId(message.TrsUserId!.Value);

person.SetInductionStatus(
InductionStatus.RequiredToComplete,
startDate: null,
Expand All @@ -23,7 +26,7 @@ public async Task HandleMessageAsync(SetInductionRequiredToCompleteMessage messa
changeReason: null,
changeReasonDetail: null,
evidenceFile: null,
updatedBy: SystemUser.SystemUserId,
updatedBy: updatedBy,
now: clock.UtcNow,
out var @event);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,4 +4,7 @@ public record AddInductionExemptionMessage
{
public required Guid PersonId { get; init; }
public required Guid ExemptionReasonId { get; init; }
public required Guid? TrsUserId { get; init; }
public Guid? DqtUserId { get; init; }
public string? DqtUserName { get; init; }
}
Original file line number Diff line number Diff line change
Expand Up @@ -3,4 +3,7 @@ namespace TeachingRecordSystem.Core.Services.DqtOutbox.Messages;
public record SetInductionRequiredToCompleteMessage
{
public required Guid PersonId { get; init; }
public required Guid? TrsUserId { get; init; }
public Guid? DqtUserId { get; init; }
public string? DqtUserName { get; init; }
}
Original file line number Diff line number Diff line change
Expand Up @@ -274,7 +274,7 @@ public async Task Given_teacher_already_has_different_QTS_date_returns_error()
.ReturnsAsync(new[] { contact });

DataverseAdapterMock
.Setup(mock => mock.SetIttResultForTeacherAsync(contact.Id, ittProviderUkprn, outcome.ConvertToITTResult(), assessmentDate, It.IsAny<string>()))
.Setup(mock => mock.SetIttResultForTeacherAsync(contact.Id, ittProviderUkprn, outcome.ConvertToITTResult(), assessmentDate, It.IsAny<Guid>(), It.IsAny<string>()))
.ReturnsAsync(SetIttResultForTeacherResult.Failed(SetIttResultForTeacherFailedReason.QtsDateMismatch));

var requestBody = new SetIttOutcomeRequest()
Expand Down Expand Up @@ -314,7 +314,7 @@ public async Task Given_teacher_passing_withdrawn_outcome_for_teacher_that_is_wi
.ReturnsAsync(new[] { contact });

DataverseAdapterMock
.Setup(mock => mock.SetIttResultForTeacherAsync(contact.Id, ittProviderUkprn, outcome.ConvertToITTResult(), null, It.IsAny<string>()))
.Setup(mock => mock.SetIttResultForTeacherAsync(contact.Id, ittProviderUkprn, outcome.ConvertToITTResult(), null, It.IsAny<Guid>(), It.IsAny<string>()))
.ReturnsAsync(SetIttResultForTeacherResult.Success(null));

var requestBody = new SetIttOutcomeRequest()
Expand Down Expand Up @@ -361,7 +361,7 @@ public async Task Given_teacher_state_is_invalid_returns_error(
.ReturnsAsync(new[] { contact });

DataverseAdapterMock
.Setup(mock => mock.SetIttResultForTeacherAsync(contact.Id, ittProviderUkprn, outcome.ConvertToITTResult(), assessmentDate, It.IsAny<string>()))
.Setup(mock => mock.SetIttResultForTeacherAsync(contact.Id, ittProviderUkprn, outcome.ConvertToITTResult(), assessmentDate, It.IsAny<Guid>(), It.IsAny<string>()))
.ReturnsAsync(SetIttResultForTeacherResult.Failed(failedReason));

var requestBody = new SetIttOutcomeRequest()
Expand Down
Loading

0 comments on commit ab7058d

Please sign in to comment.