private void GenerateUniversalProviderList(CorporateAccount account, string destinationFile) { var pageNumber = 1; while (true) { var filter = new UniversalProviderListModelFilter { Tag = account.Tag, AccountId = account.Id }; int totalRecords = 0; var primaryCarePhysicaianCollection = _primaryCarePhysicianRepository.GetPrimaryCarePhysicians(filter, pageNumber, PageSize, out totalRecords); if (!primaryCarePhysicaianCollection.IsNullOrEmpty()) { var collection = new List <UniversalProviderViewModel>(); foreach (var primaryCarePhysician in primaryCarePhysicaianCollection) { var model = GetProviderViewModel(primaryCarePhysician, account); collection.Add(model); } WriteCsv(collection, destinationFile); _logger.Info((pageNumber * PageSize) + " out of " + totalRecords + " completed"); } if ((pageNumber * PageSize) >= totalRecords) { break; } pageNumber++; } }
public IEnumerable <PrimaryCarePhysician> GetPrimaryCarePhysicians(UniversalProviderListModelFilter filter, int pageNumber, int pageSize, out int totalRecords) { using (var adapter = PersistenceLayer.GetDataAccessAdapter()) { var linqMetaData = new LinqMetaData(adapter); var eligibleCustomers = (from ce in linqMetaData.CustomerEligibility where ce.IsEligible.HasValue && ce.IsEligible.Value && ce.ForYear == DateTime.Today.Year select ce.CustomerId); var customerIds = (from cp in linqMetaData.CustomerProfile where cp.Tag == filter.Tag && eligibleCustomers.Contains(cp.CustomerId) select cp.CustomerId); var query = (from cpcp in linqMetaData.CustomerPrimaryCarePhysician where cpcp.IsActive == true && customerIds.Contains(cpcp.CustomerId) select cpcp); totalRecords = (from cpcp in query select cpcp.CustomerId).Count(); var entities = query.OrderBy(x => x.PrimaryCarePhysicianId).TakePage(pageNumber, pageSize).ToArray(); var primaryCarephysicians = _mapper.MapMultiple(entities); var addressIds = primaryCarephysicians.Where(pcp => pcp.Address != null).Select(pcp => pcp.Address.Id).ToList(); var addresses = _addressRepository.GetAddresses(addressIds); foreach (var primaryCarephysician in primaryCarephysicians) { primaryCarephysician.Address = primaryCarephysician.Address != null ? addresses.Where(a => a.Id == primaryCarephysician.Address.Id). Select(a => a).Single() : primaryCarephysician.Address; } return(primaryCarephysicians); } }