public async System.Threading.Tasks.Task Load(EvacuationFile file, CancellationToken ct) { if (file.NeedsAssessment.CompletedBy?.Id != null) { var member = (await teamRepository.GetMembers(userId: file.NeedsAssessment.CompletedBy.Id)).SingleOrDefault(); if (member != null) { file.NeedsAssessment.CompletedBy.DisplayName = $"{member.FirstName} {member.LastName.Substring(0, 1)}."; file.NeedsAssessment.CompletedBy.TeamId = member.TeamId; file.NeedsAssessment.CompletedBy.TeamName = member.TeamName; } } if (file.RelatedTask?.Id != null) { var task = (EssTask)(await taskRepository.QueryTask(new TaskQuery { ById = file.RelatedTask.Id })).Items.SingleOrDefault(); if (task != null) { file.RelatedTask = mapper.Map <IncidentTask>(task); } } foreach (var note in file.Notes.AsParallel().WithCancellation(ct)) { if (string.IsNullOrEmpty(note.CreatedBy?.Id)) { continue; } var teamMembers = await teamRepository.GetMembers(null, null, note.CreatedBy.Id); var member = teamMembers.SingleOrDefault(); if (member != null) { note.CreatedBy.DisplayName = $"{member.FirstName}, {member.LastName.Substring(0, 1)}"; note.CreatedBy.TeamId = member.TeamId; note.CreatedBy.TeamName = member.TeamName; } } var supports = ((SearchSupportQueryResult)await supportRepository.Query(new Resources.Supports.SearchSupportsQuery { ByEvacuationFileId = file.Id })).Items; file.Supports = mapper.Map <IEnumerable <Shared.Contracts.Events.Support> >(supports); await Parallel.ForEachAsync(file.Supports, ct, async (s, ct) => await Load(s, ct)); }
public async Task CanCreateSupports() { var now = DateTime.UtcNow; now = new DateTime(now.Ticks - (now.Ticks % TimeSpan.TicksPerSecond), now.Kind); var uniqueId = Guid.NewGuid().ToString().Substring(0, 4); var householdMembers = TestData.HouseholdMemberIds; var evacuationFileId = TestData.EvacuationFileId; var newSupports = new Support[] { new ClothingSupport { SupportDelivery = new Referral { SupplierId = TestData.SupplierAId, SupplierNotes = $"{uniqueId}-notes", IssuedToPersonName = "test person", }, CreatedByTeamMemberId = TestData.Tier4TeamMemberId, IncludedHouseholdMembers = householdMembers, From = now, To = now.AddDays(3), IssuedOn = now }, new IncidentalsSupport { SupportDelivery = new Interac { NotificationEmail = $"{TestData.TestPrefix}[email protected]", NotificationMobile = "+000-000-0000", ReceivingRegistrantId = TestData.ContactId }, TotalAmount = 100.00m, CreatedByTeamMemberId = TestData.Tier4TeamMemberId, IncludedHouseholdMembers = householdMembers, From = now, To = now.AddDays(5), IssuedOn = now }, new TransportationTaxiSupport { SupportDelivery = new Referral { SupplierId = TestData.SupplierAId, SupplierNotes = $"{uniqueId}-notes", IssuedToPersonName = "test person", }, CreatedByTeamMemberId = TestData.Tier4TeamMemberId, IncludedHouseholdMembers = householdMembers, From = now, To = now.AddDays(3), IssuedOn = now, } }; var newSupportIds = ((CreateNewSupportsCommandResult)await supportRepository.Manage(new CreateNewSupportsCommand { FileId = evacuationFileId, Supports = newSupports })).Supports.Select(s => s.Id).ToArray(); newSupportIds.Count().ShouldBe(newSupports.Length); var supports = ((SearchSupportQueryResult)await supportRepository.Query(new SearchSupportsQuery { ByEvacuationFileId = evacuationFileId })) .Items.Where(s => newSupportIds.Contains(s.Id)).ToArray(); supports.Length.ShouldBe(newSupports.Length); foreach (var support in supports) { var sourceSupport = newSupports.Single(s => s.GetType() == support.GetType()); if (sourceSupport.IncludedHouseholdMembers.Any()) { support.IncludedHouseholdMembers.ShouldBe(sourceSupport.IncludedHouseholdMembers); } if (sourceSupport.CreatedByTeamMemberId != null) { support.CreatedByTeamMemberId.ShouldBe(sourceSupport.CreatedByTeamMemberId); } support.To.ShouldBe(sourceSupport.To); support.CreatedByTeamMemberId.ShouldBe(sourceSupport.CreatedByTeamMemberId); support.IncludedHouseholdMembers.ShouldBe(sourceSupport.IncludedHouseholdMembers); support.CreatedOn.ShouldBeInRange(now.AddSeconds(-5), DateTime.UtcNow); support.IssuedOn.ShouldBe(support.CreatedOn); if (sourceSupport.SupportDelivery is Referral sourceReferral) { support.Status.ShouldBe(sourceSupport.To < DateTime.UtcNow ? SupportStatus.Expired : SupportStatus.Active); var referral = support.SupportDelivery.ShouldBeAssignableTo <Referral>().ShouldNotBeNull(); referral.IssuedToPersonName.ShouldBe(sourceReferral.IssuedToPersonName); referral.SupplierNotes.ShouldBe(sourceReferral.SupplierNotes); referral.SupplierId.ShouldBe(sourceReferral.SupplierId); referral.ManualReferralId.ShouldBeNull(); referral.IssuedByDisplayName.ShouldBeNull(); if (sourceReferral.SupplierId != null) { referral.SupplierId.ShouldBe(sourceReferral.SupplierId); } } if (sourceSupport.SupportDelivery is Interac sourceETransfer) { support.Status.ShouldBe(SupportStatus.PendingScan); var etransfer = support.SupportDelivery.ShouldBeAssignableTo <Interac>().ShouldNotBeNull(); etransfer.NotificationEmail.ShouldBe(sourceETransfer.NotificationEmail); etransfer.NotificationMobile.ShouldBe(sourceETransfer.NotificationMobile); etransfer.ReceivingRegistrantId.ShouldBe(sourceETransfer.ReceivingRegistrantId); } } }