public async Task CanGetNoEvacuationFilesByRelatedNeedsAssessmentIdOnly()
 {
     var caseQuery = new EvacuationFilesQuery
     {
         NeedsAssessmentId = TestNeedsAssessmentId
     };
     var queryResult = await caseRepository.QueryCase(caseQuery);
     queryResult.Items.ShouldBeEmpty();
 }
 public async Task CanGetEvacuationFilessByLinkedRegistrantId()
 {
     var caseQuery = new EvacuationFilesQuery
     {
         LinkedRegistrantId = TestContactId
     };
     var files = (await caseRepository.QueryCase(caseQuery)).Items.Cast<EvacuationFile>().ToArray();
     files.ShouldNotBeEmpty();
     files.ShouldAllBe(f => f.HouseholdMembers.Any(m => m.LinkedRegistrantId == TestContactId));
 }
 public async Task CanGetNoEvacuationFilessByFileIdAndRegistrant()
 {
     var caseQuery = new EvacuationFilesQuery
     {
         FileId = "nofileid",
         PrimaryRegistrantId = TestContactId
     };
     var queryResult = await caseRepository.QueryCase(caseQuery);
     queryResult.Items.ShouldBeEmpty();
 }
        public async Task CanGetEvacuationFilesByFileId()
        {
            var caseQuery = new EvacuationFilesQuery
            {
                FileId = TestEssFileNumber
            };
            var queryResult = await caseRepository.QueryCase(caseQuery);
            queryResult.Items.ShouldHaveSingleItem();

            var evacuationFile = (EvacuationFile)queryResult.Items.ShouldHaveSingleItem();
            evacuationFile.Id.ShouldBe(TestEssFileNumber);
        }
        public async Task CanCreateEvacuationFile()
        {
            var primaryContact = await GetContactByUserId(TestContactUserId);
            var originalFile = CreateTestFile(primaryContact);
            var fileId = (await caseRepository.ManageCase(new SubmitEvacuationFileNeedsAssessment { EvacuationFile = originalFile })).Id;

            var caseQuery = new EvacuationFilesQuery
            {
                FileId = fileId
            };
            (await caseRepository.QueryCase(caseQuery)).Items.ShouldHaveSingleItem();
        }
Exemple #6
0
        public async Task CanGetEvacuationFilesByPrimaryRegistrantUserid()
        {
            var primaryContactId = TestContactId;
            var caseQuery        = new EvacuationFilesQuery
            {
                PrimaryRegistrantId = primaryContactId,
            };
            var files = (await evacuationRepository.Query(caseQuery)).Items.Cast <EvacuationFile>().ToArray();

            files.ShouldNotBeEmpty();
            files.ShouldAllBe(f => f.HouseholdMembers.Any(m => m.LinkedRegistrantId == primaryContactId));
            files.ShouldAllBe(f => f.PrimaryRegistrantId == primaryContactId);
        }
        public async Task CanGetEvacuationFilesByPrimaryRegistrantUserid()
        {
            var primaryContact = await GetContactByUserId(TestUserId);

            var caseQuery = new EvacuationFilesQuery
            {
                PrimaryRegistrantId = primaryContact.Id,
                Limit = 5
            };
            var queryResult = await caseRepository.QueryCase(caseQuery);

            queryResult.Items.ShouldNotBeEmpty();

            queryResult.Items.Cast <EvacuationFile>().ShouldAllBe(f => f.PrimaryRegistrantId == primaryContact.Id);
        }
Exemple #8
0
        public async Task CanGetEvacuationFilesByFileId()
        {
            var fileId    = TestEssFileNumber;
            var caseQuery = new EvacuationFilesQuery
            {
                FileId = fileId
            };
            var queryResult = await evacuationRepository.Query(caseQuery);

            queryResult.Items.ShouldHaveSingleItem();

            var evacuationFile = queryResult.Items.ShouldHaveSingleItem();

            evacuationFile.Id.ShouldBe(fileId);
        }
Exemple #9
0
        public async Task CanGetEvacuationFilesByFileIdAndRelatedNeedsAssessmentId()
        {
            var caseQuery = new EvacuationFilesQuery
            {
                FileId            = TestEssFileNumber,
                NeedsAssessmentId = TestNeedsAssessmentId
            };
            var queryResult = await evacuationRepository.Query(caseQuery);

            queryResult.Items.ShouldHaveSingleItem();

            var evacuationFile = (EvacuationFile)queryResult.Items.ShouldHaveSingleItem();

            evacuationFile.Id.ShouldBe(TestEssFileNumber);
            evacuationFile.NeedsAssessment.Id.ShouldBe(TestNeedsAssessmentId);
        }
        public async Task <IEnumerable <EvacuationFile> > Read(EvacuationFilesQuery query)
        {
            var readCtx = essContextFactory.CreateReadOnly();

            //get all matching files
            var files = (await QueryHouseholdMemberFiles(readCtx, query))
                        .Concat(await QueryEvacuationFiles(readCtx, query))
                        .Concat(await QueryNeedsAssessments(readCtx, query));

            //secondary filter after loading the files
            if (!string.IsNullOrEmpty(query.FileId))
            {
                files = files.Where(f => f.era_name == query.FileId);
            }
            if (query.RegistraionDateFrom.HasValue)
            {
                files = files.Where(f => f.createdon.Value.UtcDateTime >= query.RegistraionDateFrom.Value);
            }
            if (query.RegistraionDateTo.HasValue)
            {
                files = files.Where(f => f.createdon.Value.UtcDateTime <= query.RegistraionDateTo.Value);
            }
            if (query.IncludeFilesInStatuses.Any())
            {
                files = files.Where(f => query.IncludeFilesInStatuses.Any(s => (int)s == f.era_essfilestatus));
            }
            if (query.Limit.HasValue)
            {
                files = files.OrderByDescending(f => f.era_name).Take(query.Limit.Value);
            }

            //ensure files will be loaded only once and have a needs assessment
            files = files
                    .Where(f => f.statecode == (int)EntityState.Active && f._era_currentneedsassessmentid_value.HasValue)
                    .Distinct(new LambdaComparer <era_evacuationfile>((f1, f2) => f1.era_evacuationfileid == f2.era_evacuationfileid, f => f.era_evacuationfileid.GetHashCode()));

            return((await ParallelLoadEvacuationFilesAsync(readCtx, files)).Select(f => MapEvacuationFile(f, query.MaskSecurityPhrase)).ToArray());
        }
        private static async Task <IEnumerable <era_evacuationfile> > QueryNeedsAssessments(EssContext ctx, EvacuationFilesQuery query)
        {
            var shouldQueryNeedsAssessments = !string.IsNullOrEmpty(query.NeedsAssessmentId) && !string.IsNullOrEmpty(query.FileId);

            if (!shouldQueryNeedsAssessments)
            {
                return(Array.Empty <era_evacuationfile>());
            }

            var needsAssessmentQuery = ctx.era_needassessments
                                       .Expand(na => na.era_EvacuationFile)
                                       .Where(n => n.era_needassessmentid == Guid.Parse(query.NeedsAssessmentId));

            return((await((DataServiceQuery <era_needassessment>)needsAssessmentQuery).GetAllPagesAsync()).Select(na =>
            {
                na.era_EvacuationFile.era_CurrentNeedsAssessmentid = na;
                return na.era_EvacuationFile;
            }).Where(f => f.era_name == query.FileId).ToArray());
        }
        private static async Task <IEnumerable <era_evacuationfile> > QueryEvacuationFiles(EssContext ctx, EvacuationFilesQuery query)
        {
            var shouldQueryFiles =
                string.IsNullOrEmpty(query.NeedsAssessmentId) &&
                (!string.IsNullOrEmpty(query.FileId) ||
                 !string.IsNullOrEmpty(query.ExternalReferenceId) ||
                 query.RegistraionDateFrom.HasValue ||
                 query.RegistraionDateTo.HasValue);

            if (!shouldQueryFiles)
            {
                return(Array.Empty <era_evacuationfile>());
            }

            var filesQuery = ctx.era_evacuationfiles.Expand(f => f.era_CurrentNeedsAssessmentid).Where(f => f.statecode == (int)EntityState.Active);

            if (!string.IsNullOrEmpty(query.FileId))
            {
                filesQuery = filesQuery.Where(f => f.era_name == query.FileId);
            }
            if (!string.IsNullOrEmpty(query.ExternalReferenceId))
            {
                filesQuery = filesQuery.Where(f => f.era_paperbasedessfile == query.ExternalReferenceId);
            }
            if (query.RegistraionDateFrom.HasValue)
            {
                filesQuery = filesQuery.Where(f => f.createdon >= query.RegistraionDateFrom.Value);
            }
            if (query.RegistraionDateTo.HasValue)
            {
                filesQuery = filesQuery.Where(f => f.createdon <= query.RegistraionDateTo.Value);
            }

            return((await((DataServiceQuery <era_evacuationfile>)filesQuery).GetAllPagesAsync()).ToArray());
        }
        private static async Task <IEnumerable <era_evacuationfile> > QueryHouseholdMemberFiles(EssContext ctx, EvacuationFilesQuery query)
        {
            var shouldQueryHouseholdMembers =
                string.IsNullOrEmpty(query.FileId) && string.IsNullOrEmpty(query.NeedsAssessmentId) &&
                (!string.IsNullOrEmpty(query.LinkedRegistrantId) ||
                 !string.IsNullOrEmpty(query.PrimaryRegistrantId) ||
                 !string.IsNullOrEmpty(query.HouseholdMemberId));

            if (!shouldQueryHouseholdMembers)
            {
                return(Array.Empty <era_evacuationfile>());
            }

            var memberQuery = ctx.era_householdmembers.Expand(m => m.era_EvacuationFileid).Where(m => m.statecode == (int)EntityState.Active);

            if (!string.IsNullOrEmpty(query.PrimaryRegistrantId))
            {
                memberQuery = memberQuery.Where(m => m.era_isprimaryregistrant == true && m._era_registrant_value == Guid.Parse(query.PrimaryRegistrantId));
            }
            if (!string.IsNullOrEmpty(query.HouseholdMemberId))
            {
                memberQuery = memberQuery.Where(m => m.era_householdmemberid == Guid.Parse(query.HouseholdMemberId));
            }
            if (!string.IsNullOrEmpty(query.LinkedRegistrantId))
            {
                memberQuery = memberQuery.Where(m => m._era_registrant_value == Guid.Parse(query.LinkedRegistrantId));
            }

            return((await((DataServiceQuery <era_householdmember>)memberQuery).GetAllPagesAsync()).Select(m => m.era_EvacuationFileid).ToArray());
        }
Exemple #14
0
        public async Task <IEnumerable <EvacuationFile> > ReadAll(EvacuationFilesQuery query)
        {
            IEnumerable <Guid?> fileIds = Array.Empty <Guid?>();
            var queryContacts           = !string.IsNullOrEmpty(query.FirstName) ||
                                          !string.IsNullOrEmpty(query.LastName) ||
                                          !string.IsNullOrEmpty(query.DateOfBirth) ||
                                          !string.IsNullOrEmpty(query.PrimaryRegistrantId);
            var queryFiles = !string.IsNullOrEmpty(query.FileId) ||
                             query.IncludeFilesInStatuses.Any() ||
                             query.RegistraionDateFrom.HasValue ||
                             query.RegistraionDateTo.HasValue;

            if (queryContacts)
            {
                var contactQuery = essContext.contacts
                                   .Where(c => c.statecode == (int)EntityState.Active);

                //if (!string.IsNullOrEmpty(query.PrimaryRegistrantUserId)) contactQuery = contactQuery.Where(c => c.era_bcservicescardid.Equals(query.PrimaryRegistrantUserId, StringComparison.OrdinalIgnoreCase));
                if (!string.IsNullOrEmpty(query.PrimaryRegistrantId))
                {
                    contactQuery = contactQuery.Where(c => c.contactid == Guid.Parse(query.PrimaryRegistrantId));
                }
                if (!string.IsNullOrEmpty(query.LastName))
                {
                    contactQuery = contactQuery.Where(c => c.lastname.Equals(query.LastName, StringComparison.OrdinalIgnoreCase));
                }
                if (!string.IsNullOrEmpty(query.FirstName))
                {
                    contactQuery = contactQuery.Where(c => c.firstname.Equals(query.FirstName, StringComparison.OrdinalIgnoreCase));
                }
                if (!string.IsNullOrEmpty(query.DateOfBirth))
                {
                    contactQuery = contactQuery.Where(c => c.birthdate.Equals(Date.Parse(query.DateOfBirth)));
                }
                if (!query.IncludeHouseholdMembers)
                {
                    contactQuery = contactQuery.Where(m => m.era_registranttype == (int)RegistrantType.Primary);
                }

                var matchingContactIds = (await((DataServiceQuery <contact>)contactQuery).GetAllPagesAsync()).Select(c => c.contactid).ToArray();

                var householdMembersQuery = essContext.era_needsassessmentevacuees
                                            .Expand(m => m.era_NeedsAssessmentID)
                                            .Where(m => m.statecode == (int)EntityState.Active);

                var matchingContactFileIds = matchingContactIds
                                             .Select(id => householdMembersQuery
                                                     .Where(m => m.era_RegistrantID.contactid == id && m.era_NeedsAssessmentID != null)
                                                     .ToArray()
                                                     .Select(m => m.era_NeedsAssessmentID?._era_evacuationfile_value))
                                             .SelectMany(f => f)
                                             .ToArray();

                //merge matching file ids
                fileIds = fileIds.Any()
                    ? fileIds.Union(matchingContactFileIds)
                    : fileIds.Concat(matchingContactFileIds);
            }

            if (queryFiles)
            {
                var fileQuery = essContext.era_evacuationfiles.Where(f => f.statecode == (int)EntityState.Active);
                if (!string.IsNullOrEmpty(query.FileId))
                {
                    fileQuery = fileQuery.Where(f => f.era_name == query.FileId);
                }
                if (query.RegistraionDateFrom.HasValue)
                {
                    fileQuery = fileQuery.Where(f => f.createdon >= query.RegistraionDateFrom.Value);
                }
                if (query.RegistraionDateTo.HasValue)
                {
                    fileQuery = fileQuery.Where(f => f.createdon <= query.RegistraionDateTo.Value);
                }
                if (query.IncludeFilesInStatuses.Any())
                {
                    fileQuery = fileQuery.Where(f => query.IncludeFilesInStatuses.Any(s => (int)s == f.statuscode));
                }

                var matchingFileIds = (await((DataServiceQuery <era_evacuationfile>)fileQuery).GetAllPagesAsync()).Select(f => f.era_evacuationfileid).ToArray();

                //merge matching file ids
                fileIds = fileIds.Any()
                    ? fileIds.Union(matchingFileIds)
                    : fileIds.Concat(matchingFileIds);
            }

            essContext.DetachAll();

            if (query.Limit.HasValue)
            {
                fileIds = fileIds.OrderByDescending(id => id).Take(query.Limit.Value);
            }

            var evacuationFiles = fileIds.Distinct().OrderByDescending(id => id).Select(id => GetEvacuationFileById(id.Value, query.MaskSecurityPhrase).GetAwaiter().GetResult()).ToArray();

            essContext.DetachAll();

            return(evacuationFiles);
        }
        public async Task CanMapEvacuationFile()
        {
            var now            = DateTime.UtcNow;
            var primaryContact = await GetContactByUserId(TestUserId);

            var originalFile = CreateTestFile(primaryContact);
            var fileId       = (await caseRepository.ManageCase(new SaveEvacuationFile {
                EvacuationFile = originalFile
            })).CaseId;

            var caseQuery = new EvacuationFilesQuery
            {
                FileId = fileId
            };
            var evacuationFile = (EvacuationFile)(await caseRepository.QueryCase(caseQuery)).Items.ShouldHaveSingleItem();

            // Evacuation file
            evacuationFile.EvacuatedFromAddress.ShouldNotBeNull();
            evacuationFile.Id.ShouldBe(fileId);
            evacuationFile.EvacuatedFromAddress.AddressLine1.ShouldBe(originalFile.EvacuatedFromAddress.AddressLine1);
            evacuationFile.EvacuatedFromAddress.AddressLine2.ShouldBe(originalFile.EvacuatedFromAddress.AddressLine2);
            evacuationFile.EvacuatedFromAddress.CommunityCode.ShouldBe(originalFile.EvacuatedFromAddress.CommunityCode);
            evacuationFile.EvacuatedFromAddress.CountryCode.ShouldBe(originalFile.EvacuatedFromAddress.CountryCode);
            evacuationFile.EvacuatedFromAddress.StateProvinceCode.ShouldBe(originalFile.EvacuatedFromAddress.StateProvinceCode);
            evacuationFile.EvacuatedFromAddress.PostalCode.ShouldBe(originalFile.EvacuatedFromAddress.PostalCode);
            evacuationFile.EvacuationDate.ShouldBeInRange(now, DateTime.UtcNow);
            evacuationFile.PrimaryRegistrantId.ShouldBe(primaryContact.Id);

            // Needs Assessments
            evacuationFile.NeedsAssessments.ShouldHaveSingleItem();
            for (var i = 0; i < originalFile.NeedsAssessments.Count(); i++)
            {
                var originalNeedsAssessment = originalFile.NeedsAssessments.ElementAt(i);
                var needsAssessment         = evacuationFile.NeedsAssessments.ElementAt(i);
                needsAssessment.Insurance.ShouldBe(originalNeedsAssessment.Insurance);
                needsAssessment.CanEvacueeProvideClothing.ShouldBe(originalNeedsAssessment.CanEvacueeProvideClothing);
                needsAssessment.CanEvacueeProvideFood.ShouldBe(originalNeedsAssessment.CanEvacueeProvideFood);
                needsAssessment.CanEvacueeProvideIncidentals.ShouldBe(originalNeedsAssessment.CanEvacueeProvideIncidentals);
                needsAssessment.CanEvacueeProvideLodging.ShouldBe(originalNeedsAssessment.CanEvacueeProvideLodging);
                needsAssessment.CanEvacueeProvideTransportation.ShouldBe(originalNeedsAssessment.CanEvacueeProvideTransportation);
                needsAssessment.HaveMedication.ShouldBe(originalNeedsAssessment.HaveMedication);
                needsAssessment.HasPetsFood.ShouldBe(originalNeedsAssessment.HasPetsFood);
                needsAssessment.HaveSpecialDiet.ShouldBe(originalNeedsAssessment.HaveSpecialDiet);
                needsAssessment.SpecialDietDetails.ShouldBe(originalNeedsAssessment.SpecialDietDetails);

                needsAssessment.HouseholdMembers.Count().ShouldBe(originalNeedsAssessment.HouseholdMembers.Count());
                for (var j = 0; j < originalNeedsAssessment.HouseholdMembers.Count(); j++)
                {
                    var originalHouseholdMember = originalNeedsAssessment.HouseholdMembers.OrderBy(m => m.DateOfBirth).ElementAt(i);
                    var householdMember         = needsAssessment.HouseholdMembers.Where(m => !m.IsPrimaryRegistrant).OrderBy(m => m.DateOfBirth).ElementAt(i);
                    householdMember.DateOfBirth.ShouldBe(originalHouseholdMember.DateOfBirth);
                    householdMember.FirstName.ShouldBe(originalHouseholdMember.FirstName);
                    householdMember.LastName.ShouldBe(originalHouseholdMember.LastName);
                    householdMember.Gender.ShouldBe(originalHouseholdMember.Gender);
                    householdMember.Initials.ShouldBe(originalHouseholdMember.Initials);
                    householdMember.PreferredName.ShouldBe(originalHouseholdMember.PreferredName);
                    householdMember.IsUnder19.ShouldBe(originalHouseholdMember.IsUnder19);
                    householdMember.Id.ShouldNotBeNull();
                }
                needsAssessment.Pets.Count().ShouldBe(originalNeedsAssessment.Pets.Count());
                for (var j = 0; j < originalNeedsAssessment.Pets.Count(); j++)
                {
                    var originalPet = originalNeedsAssessment.Pets.OrderBy(p => p.Type).ElementAt(i);
                    var pet         = needsAssessment.Pets.OrderBy(p => p.Type).ElementAt(i);

                    pet.Quantity.ShouldBe(originalPet.Quantity);
                    pet.Type.ShouldBe(originalPet.Type);
                }
            }
        }
        public async Task CanMapEvacuationFile()
        {
            var now = DateTime.UtcNow;
            var primaryContact = await GetContactByUserId(TestContactUserId);
            var originalFile = CreateTestFile(primaryContact);
            var fileId = (await caseRepository.ManageCase(new SubmitEvacuationFileNeedsAssessment { EvacuationFile = originalFile })).Id;

            var caseQuery = new EvacuationFilesQuery
            {
                FileId = fileId
            };
            var evacuationFile = (EvacuationFile)(await caseRepository.QueryCase(caseQuery)).Items.ShouldHaveSingleItem();

            // Evacuation file
            evacuationFile.EvacuatedFrom.ShouldNotBeNull();
            evacuationFile.Id.ShouldBe(fileId);
            evacuationFile.EvacuatedFrom.AddressLine1.ShouldBe(originalFile.EvacuatedFrom.AddressLine1);
            evacuationFile.EvacuatedFrom.AddressLine2.ShouldBe(originalFile.EvacuatedFrom.AddressLine2);
            evacuationFile.EvacuatedFrom.CommunityCode.ShouldBe(originalFile.EvacuatedFrom.CommunityCode);
            evacuationFile.EvacuatedFrom.PostalCode.ShouldBe(originalFile.EvacuatedFrom.PostalCode);
            evacuationFile.EvacuationDate.ShouldBeInRange(now.AddSeconds(-1), DateTime.UtcNow);
            evacuationFile.PrimaryRegistrantId.ShouldBe(primaryContact.Id);
            evacuationFile.RegistrationLocation.ShouldBe(originalFile.RegistrationLocation);
            evacuationFile.TaskId.ShouldBe(originalFile.TaskId);
            if (originalFile.TaskId != null) evacuationFile.TaskLocationCommunityCode.ShouldNotBeNull();
            evacuationFile.HouseholdMembers.Count().ShouldBe(originalFile.NeedsAssessment.HouseholdMembers.Count());

            // Needs Assessment

            var originalNeedsAssessment = originalFile.NeedsAssessment;
            var needsAssessment = evacuationFile.NeedsAssessment;
            needsAssessment.Insurance.ShouldBe(originalNeedsAssessment.Insurance);
            needsAssessment.CanProvideClothing.ShouldBe(originalNeedsAssessment.CanProvideClothing);
            needsAssessment.CanProvideFood.ShouldBe(originalNeedsAssessment.CanProvideFood);
            needsAssessment.CanProvideIncidentals.ShouldBe(originalNeedsAssessment.CanProvideIncidentals);
            needsAssessment.CanProvideLodging.ShouldBe(originalNeedsAssessment.CanProvideLodging);
            needsAssessment.CanProvideTransportation.ShouldBe(originalNeedsAssessment.CanProvideTransportation);
            needsAssessment.TakeMedication.ShouldBe(originalNeedsAssessment.TakeMedication);
            needsAssessment.HaveMedicalSupplies.ShouldBe(originalNeedsAssessment.HaveMedicalSupplies);
            needsAssessment.HavePetsFood.ShouldBe(originalNeedsAssessment.HavePetsFood);
            needsAssessment.HaveSpecialDiet.ShouldBe(originalNeedsAssessment.HaveSpecialDiet);
            needsAssessment.SpecialDietDetails.ShouldBe(originalNeedsAssessment.SpecialDietDetails);

            needsAssessment.HouseholdMembers.Count().ShouldBe(originalNeedsAssessment.HouseholdMembers.Count());
            needsAssessment.HouseholdMembers.Where(m => m.IsPrimaryRegistrant).ShouldHaveSingleItem().LinkedRegistrantId.ShouldBe(primaryContact.Id);
            for (var j = 0; j < originalNeedsAssessment.HouseholdMembers.Count(); j++)
            {
                var originalHouseholdMember = originalNeedsAssessment.HouseholdMembers.OrderBy(m => m.DateOfBirth).ElementAt(j);
                var householdMember = needsAssessment.HouseholdMembers.OrderBy(m => m.DateOfBirth).ElementAt(j);
                householdMember.DateOfBirth.ShouldBe(originalHouseholdMember.DateOfBirth);
                householdMember.FirstName.ShouldBe(originalHouseholdMember.FirstName);
                householdMember.LastName.ShouldBe(originalHouseholdMember.LastName);
                householdMember.Gender.ShouldBe(originalHouseholdMember.Gender);
                householdMember.Initials.ShouldBe(originalHouseholdMember.Initials);
                householdMember.IsUnder19.ShouldBe(originalHouseholdMember.IsUnder19);
                householdMember.Id.ShouldNotBeNull();
                householdMember.LinkedRegistrantId.ShouldBe(originalHouseholdMember.LinkedRegistrantId);
                if (householdMember.LinkedRegistrantId != null)
                {
                    householdMember.HasAccessRestriction.ShouldNotBeNull().ShouldBe(primaryContact.RestrictedAccess);
                    householdMember.IsVerifiedRegistrant.ShouldNotBeNull().ShouldBe(primaryContact.Verified);
                }
                else
                {
                    householdMember.HasAccessRestriction.ShouldBeNull();
                    householdMember.IsVerifiedRegistrant.ShouldBeNull();
                }
            }
            needsAssessment.Pets.Count().ShouldBe(originalNeedsAssessment.Pets.Count());
            for (var j = 0; j < originalNeedsAssessment.Pets.Count(); j++)
            {
                var originalPet = originalNeedsAssessment.Pets.OrderBy(p => p.Type).ElementAt(j);
                var pet = needsAssessment.Pets.OrderBy(p => p.Type).ElementAt(j);

                pet.Quantity.ShouldBe(originalPet.Quantity);
                pet.Type.ShouldBe(originalPet.Type);
                pet.Id.ShouldNotBeNullOrEmpty();
            }
        }