示例#1
0
        public async Task <RegistrantsSearchQueryResult> Handle(RegistrantsSearchQuery query)
        {
            var contacts = (await contactRepository.QueryContact(new SearchContactQuery
            {
                ContactId = query.Id,
                UserId = query.UserId,
                FirstName = query.FirstName,
                LastName = query.LastName,
                DateOfBirth = query.DateOfBirth
            })).Items;
            var registrants = mapper.Map <IEnumerable <RegistrantProfile> >(contacts);

            var results     = new List <RegistrantWithFiles>();
            var resultTasks = registrants.Select(async r =>
            {
                var result = new RegistrantWithFiles {
                    RegistrantProfile = r, Files = Array.Empty <Shared.Contracts.Submissions.EvacuationFile>()
                };
                if (query.IncludeCases)
                {
                    var files    = (await caseRepository.QueryCase(new EvacuationFilesQuery {
                        PrimaryRegistrantId = r.Id
                    })).Items.Cast <Resources.Cases.EvacuationFile>();
                    result.Files = mapper.Map <IEnumerable <Shared.Contracts.Submissions.EvacuationFile> >(files);
                }
                results.Add(result);
            });

            Task.WaitAll(resultTasks.ToArray());
            return(new RegistrantsSearchQueryResult {
                Items = results
            });
        }
示例#2
0
        public async Task <RegistrantsSearchQueryResult> Handle(RegistrantsSearchQuery query)
        {
            var contacts = (await contactRepository.QueryContact(new SearchContactQuery
            {
                UserId = query.UserId,
                FirstName = query.FirstName,
                LastName = query.LastName,
                DateOfBirth = query.DateOfBirth
            })).Items;
            var registrants = mapper.Map <IEnumerable <RegistrantProfile> >(contacts);

            var results = new List <RegistrantWithFiles>();

            foreach (var registrant in registrants)
            {
                var files = (await caseRepository.QueryCase(new EvacuationFilesQuery {
                    PrimaryRegistrantId = registrant.Id
                }))
                            .Items.Cast <Resources.Cases.EvacuationFile>();
                results.Add(new RegistrantWithFiles
                {
                    RegistrantProfile = registrant,
                    Files             = mapper.Map <IEnumerable <Shared.Contracts.Submissions.EvacuationFile> >(files)
                });
            }

            return(new RegistrantsSearchQueryResult {
                Items = results
            });
        }