public UserListModel GetUserListModelPaged(int pageNumber, int pageSize, ModelFilterBase filter, out int totalRecords) { using (var myAdapter = PersistenceLayer.GetDataAccessAdapter()) { var linqMetaData = new LinqMetaData(myAdapter); var orgQuery = BuildQuery(filter as UserListModelFilter, linqMetaData); //var organziationRoleUserEntities = orgQuery.OrderBy(oru => oru.User.FirstName).TakePage(pageNumber, pageSize).ToList(); ... This takes 9 seconds when resolving a prefetch to User table. var organziationRoleUserEntities = orgQuery.TakePage(pageNumber, pageSize).ToList(); var users = (from u in linqMetaData.User where organziationRoleUserEntities.Select(oru => oru.UserId).Contains(u.UserId) select u).ToArray(); organziationRoleUserEntities.ForEach( oru => oru.User = users.Where(u => u.UserId == oru.UserId).SingleOrDefault()); totalRecords = orgQuery.Count(); var addressIds = organziationRoleUserEntities.Select(oru => oru.User.HomeAddressId).ToList(); var addresses = linqMetaData.Address.WithPath(pf => pf.Prefetch(a => a.City).Prefetch(a => a.State).Prefetch(a => a.Zip)).Where(address => addressIds.Contains(address.AddressId)).ToList(); var orgRoleUsers = _organizationRoleUserRepository.GetOrganizationRoleUserByUserIds(organziationRoleUserEntities.Select(oru => oru.UserId).ToArray()); var otganizations = _organizationRepository.GetOrganizations(orgRoleUsers.Select(oru => oru.OrganizationId).ToArray()); var roles = _roleRepository.GetAll(); var userListModel = _factory.Create(organziationRoleUserEntities, addresses, orgRoleUsers, otganizations, roles); return(userListModel); } }
public TestListModel GetAllTest(int pageNumber, int pageSize, ModelFilterBase filter, out int totalRecords) { var tests = _testRepository.GetAllTest(pageNumber, pageSize, filter as TestListModelFilter, out totalRecords); if (tests.IsNullOrEmpty()) { return(null); } var model = new TestListModel(); model.Collection = Mapper.Map <IEnumerable <Test>, IEnumerable <TestViewModel> >(tests); return(model); }
public ListModelBase <HealthPlanCallQueueViewModel, HealthPlanCallQueueListModelFilter> GetHealthPlanCallQueueList(int pageNumber, int pageSize, ModelFilterBase filter, out int totalRecords) { var assignmentFilter = filter as HealthPlanCallQueueListModelFilter ?? new HealthPlanCallQueueListModelFilter(); var healthPlanCallQueuesCriteria = _healthPlanCallQueueCriteriaRepository.GetHealthPlanCallQueueCriteria(filter as HealthPlanCallQueueListModelFilter, pageNumber, pageSize, out totalRecords); if (healthPlanCallQueuesCriteria == null && !healthPlanCallQueuesCriteria.Any()) { totalRecords = 0; return(null); } var callQueueIds = healthPlanCallQueuesCriteria.Select(cq => cq.CallQueueId).ToArray(); var healthPlanIds = healthPlanCallQueuesCriteria.Where(x => x.HealthPlanId.HasValue).Select(s => s.HealthPlanId.Value).ToArray(); IEnumerable <CorporateAccount> healthPlans = null; if (healthPlanIds != null && healthPlanIds.Any()) { healthPlans = _corporateAccountRepository.GetByIds(healthPlanIds); } IEnumerable <CallQueue> healthPlanCallQueues = null; if (callQueueIds != null && callQueueIds.Any()) { healthPlanCallQueues = _callQueueRepository.GetByIds(callQueueIds, false, true); } var assignOrgRoleIds = healthPlanCallQueuesCriteria.Select(a => a.DataRecorderMetaData.DataRecorderCreator.Id).Distinct().ToArray(); var modifiedBy = healthPlanCallQueuesCriteria.Where(x => x.DataRecorderMetaData.DataRecorderModifier != null).Select(a => a.DataRecorderMetaData.DataRecorderModifier.Id).Distinct().ToArray(); if (modifiedBy != null && modifiedBy.Any()) { assignOrgRoleIds = assignOrgRoleIds.Concat(modifiedBy).ToArray(); } var criteriaIds = healthPlanCallQueuesCriteria.Select(s => s.Id).ToArray(); IEnumerable <HealthPlanCriteriaAssignment> healthPlanCriteriaAssignment = null; IEnumerable <HealthPlanCriteriaTeamAssignment> healthPlanCriteriaTeamAssignment = null; var campaignIds = healthPlanCallQueuesCriteria.Where(s => s.CampaignId.HasValue).Select(x => x.CampaignId.Value).ToArray(); var campaigns = _campaignRepository.GetByIds(campaignIds); if (criteriaIds != null && criteriaIds.Any()) { healthPlanCriteriaAssignment = _healthPlanCriteriaAssignmentRepository.GetByCriteriaIds(criteriaIds); healthPlanCriteriaTeamAssignment = _healthPlanCriteriaTeamAssignmentRepository.GetByCriteriaIds(criteriaIds); if (healthPlanCriteriaAssignment != null && healthPlanCriteriaAssignment.Any()) { var assignAssignmentRoleUserIds = healthPlanCriteriaAssignment.Select(s => s.AssignedToOrgRoleUserId).Distinct().ToArray(); if (assignAssignmentRoleUserIds != null && assignAssignmentRoleUserIds.Any()) { assignOrgRoleIds = assignOrgRoleIds.Concat(assignAssignmentRoleUserIds).ToArray(); } var assignmentBy = healthPlanCriteriaAssignment.Select(s => s.CreatedBy).Distinct().ToArray(); if (assignmentBy.Any()) { assignOrgRoleIds = assignOrgRoleIds.Concat(assignmentBy).ToArray(); } } } IEnumerable <OrderedPair <long, string> > teamIdNamePairs = null; if (!healthPlanCriteriaTeamAssignment.IsNullOrEmpty()) { teamIdNamePairs = _callCenterTeamRepository.GetIdNamePairOfTeams(healthPlanCriteriaTeamAssignment.Select(x => x.TeamId).ToArray()); var assignmentBy = healthPlanCriteriaTeamAssignment.Select(s => s.CreatedBy).Distinct().ToArray(); if (assignmentBy.Any()) { assignOrgRoleIds = assignOrgRoleIds.Concat(assignmentBy).ToArray(); } } assignOrgRoleIds = assignOrgRoleIds.Distinct().ToArray(); var agentIdNamePairs = _organizationRoleUserRepository.GetNameIdPairofUsers(assignOrgRoleIds); var criteriaCustomerCountPairs = new List <OrderedPair <long, long> >(); if (assignmentFilter.ShowAssignmentMetaData) { foreach (var criteria in healthPlanCallQueuesCriteria) { var count = _customerCallQueueCallAttemptService.CustomerCountForHealthPlanCriteria(criteria, healthPlanCallQueues); criteriaCustomerCountPairs.Add(new OrderedPair <long, long>(criteria.Id, count)); } } var criteriaDirectMailDates = _healthPlanCriteriaDirectMailService.GetDirectMailDatesByCriteriaIds(criteriaIds); return(_callQueueListModelFactory.CreateHealthPlanCallQueueList(healthPlanCallQueuesCriteria, agentIdNamePairs, healthPlanCallQueues, healthPlans, healthPlanCriteriaAssignment, campaigns, healthPlanCriteriaTeamAssignment, teamIdNamePairs, criteriaCustomerCountPairs, criteriaDirectMailDates, assignmentFilter.ShowAssignmentMetaData)); }
public ListModelBase <AppointmentEncounterModel, AppointmentEncounterFilter> GetAppointmentEncounterReport(int pageNumber, int pageSize, ModelFilterBase filter, out int totalRecords) { var eventCustomers = _eventCustomerRepository.GetAppointmentEncounterReport(pageNumber, pageSize, filter as AppointmentEncounterFilter, out totalRecords); if (eventCustomers.IsNullOrEmpty()) { return(null); } var customerids = eventCustomers.Select(x => x.CustomerId).Distinct().ToArray(); var eventCustomerIds = eventCustomers.Select(x => x.Id).ToArray(); var appointmentIds = eventCustomers.Where(x => x.AppointmentId.HasValue).Select(x => x.AppointmentId.Value); var eventIds = eventCustomers.Select(x => x.EventId).Distinct().ToArray(); var customers = _customerRepository.GetCustomers(customerids); var eventsCollection = ((IUniqueItemRepository <Event>)_eventRepository).GetByIds(eventIds); var pcpAppointment = _pcpAppointmentRepository.GetByEventCustomerIds(eventCustomerIds); var appointments = _appointmentRepository.GetByIds(appointmentIds); return(_appointmentEncounterFactory.Create(eventCustomers, customers, pcpAppointment, appointments, eventsCollection)); }
public ListModelBase <LabsInboundViewModel, LabsInboundFilter> GetLabsInboundReportList(int pageNumber, int pageSize, ModelFilterBase filter, out int totalRecords) { filter = filter ?? new LabsInboundFilter(); var customerEventTestStates = _customerEventTestStateRepository.GetForLabInboundReport(filter as LabsInboundFilter, pageNumber, pageSize, out totalRecords); if (customerEventTestStates.IsNullOrEmpty()) { return(null); } var customerEventScreeningTestIds = customerEventTestStates.Select(x => x.CustomerEventScreeningTestId).Distinct(); var customerEventScreeningTests = _eventCustomerResultRepository.GetCustomerEventScreeningTestsByIds(customerEventScreeningTestIds); var testIds = customerEventScreeningTests.Select(x => x.TestId).Distinct(); var tests = _testRepository.GetTestByIds(testIds); var eventCustomerResultIds = customerEventScreeningTests.Select(x => x.EventCustomerResultId).Distinct(); var eventCustomerResults = _eventCustomerResultRepository.GetByIds(eventCustomerResultIds); var eventCustomers = _eventCustomerRepository.GetByIds(eventCustomerResultIds); var eventIds = eventCustomers.Select(x => x.EventId).Distinct(); var events = _eventRepository.GetByIds(eventIds); var customerIds = eventCustomers.Select(x => x.CustomerId).Distinct().ToArray(); var customers = _customerRepository.GetCustomers(customerIds); var chaseOutbounds = _chaseOutboundRepository.GetByCustomerIds(customerIds); var customerChaseCampaigns = _chaseCampaignRepository.GetCustomerChaseCampaignsByCustomerIds(customerIds); var chaseCampaignIds = customerChaseCampaigns.Select(x => x.ChaseCampaignId).Distinct(); var chaseCampaigns = _chaseCampaignRepository.GetByIds(chaseCampaignIds); return(_labsInboundReportFactory.Create(customerEventTestStates, customerEventScreeningTests, eventCustomers, customers, chaseOutbounds, customerChaseCampaigns, chaseCampaigns, tests, events, eventCustomerResults)); }
public ListModelBase <ConditionInboundViewModel, ConditionInboundFilter> GetConditionInboundReportList(int pageNumber, int pageSize, ModelFilterBase filter, out int totalRecords) { filter = filter ?? new ConditionInboundFilter(); var diagnosisRecords = _eventCustomerDiagnosisRepository.GetForConditionInboundReport(filter as ConditionInboundFilter, pageNumber, pageSize, out totalRecords); if (!diagnosisRecords.Any()) { return(null); } var eventCustomerIds = diagnosisRecords.Select(x => x.EventCustomerId).Distinct().ToArray(); var eventCustomers = _eventCustomerRepository.GetByIds(eventCustomerIds); var customerIds = eventCustomers.Select(x => x.CustomerId).Distinct().ToArray(); var chaseOutbounds = _chaseOutboundRepository.GetByCustomerIds(customerIds); var customerChaseCampaigns = _chaseCampaignRepository.GetCustomerChaseCampaignsByCustomerIds(customerIds); var chaseCampaignIds = customerChaseCampaigns.Select(x => x.ChaseCampaignId).Distinct(); var chaseCampaigns = _chaseCampaignRepository.GetByIds(chaseCampaignIds); return(_conditionInboundReportFactory.Create(diagnosisRecords, eventCustomers, chaseOutbounds, customerChaseCampaigns, chaseCampaigns)); }
public ListModelBase <MemberResultMailedReportViewModel, MemberResultMailedReportFilter> GetMemberResultMailedReport(int pageNumber, int pageSize, ModelFilterBase filter, out int totalRecords) { var memberFilter = filter as MemberResultMailedReportFilter; var pcpResultMailedFilter = new PcpResultMailedReportModelFilter { CustomTags = memberFilter.CustomTags, ExcludeCustomerWithCustomTag = memberFilter.ExcludeCustomerWithCustomTag, DateTo = memberFilter.DateTo, DateFrom = memberFilter.DateFrom, HealthPlanId = memberFilter.HealthPlanId, Tag = memberFilter.Tag }; var shippingDetails = _shippingDetailRepository.GetEventCustomerShippingDetailForFilter(pageNumber, pageSize, pcpResultMailedFilter, memberFilter.ShippingOptions, out totalRecords); if (shippingDetails.IsNullOrEmpty()) { return(null); } var shippingDetailIdEventCustomerIdPairs = _shippingDetailRepository.GetShippingDetailIdEventCustomerIdPairs(shippingDetails.Select(sd => sd.Id).ToArray()); var addresses = _addressRepository.GetAddresses(shippingDetails.Select(sd => sd.ShippingAddress.Id).ToList()); var eventCustomers = _eventCustomerRepository.GetByIds(shippingDetailIdEventCustomerIdPairs.Select(sdec => sdec.SecondValue).ToArray()); var customers = _customerRepository.GetCustomers(eventCustomers.Select(ec => ec.CustomerId).ToArray()); return(_memberResultMailedReportFactory.Create(shippingDetails, shippingDetailIdEventCustomerIdPairs, eventCustomers, customers, addresses)); }
public ListModelBase <DailyPatientRecapCustomModel, DailyPatientRecapModelFilter> GetDailyPatientReapCustomModel(int pageNumber, int pageSize, ModelFilterBase filter, out int totalRecords) { var eventCustomers = _eventCustomerRepository.GetEventsCustomersForDailyPatientRecapCustom(pageNumber, pageSize, filter as DailyPatientRecapModelFilter, out totalRecords); if (eventCustomers.IsNullOrEmpty()) { return(null); } var eventIds = eventCustomers.Select(x => x.EventId).Distinct(); var events = _eventRepository.GetEventswithPodbyIds(eventIds); var pods = _podRepository.GetPodsForEvents(eventIds); var eventPods = _eventPodRepository.GetByEventIds(eventIds); var customerIds = eventCustomers.Select(x => x.CustomerId).Distinct().ToArray(); var customers = _customerRepository.GetCustomers(customerIds); var eventCustomerIds = eventCustomers.Select(x => x.Id).ToArray(); var orders = _orderRepository.GetAllOrdersByEventCustomerIds(eventCustomerIds, true); var orderPackageIdNamePair = _eventPackageRepository.GetPackageNamesForOrder(orders.Select(o => o.Id).ToList()); //var orderTestIdNamePair = _eventTestRepository.GetTestNamesForOrders(orders.Select(o => o.Id).ToList()); var orderIdEventPackageTestIdPairs = _eventPackageRepository.GetOrderIdEventPackageTestIdPairsForOrder(orders.Select(o => o.Id).ToArray()); var orderIdTestIdPairs = _eventTestRepository.GetOrderIdTestIdPairsForOrders(orders.Select(o => o.Id).ToArray()); var testNotPerformedEventCustomerIdTestIdPairs = _testNotPerformedRepository.GetEventCusromerResultIdTestIdPairs(eventCustomerIds); var testIds = orderIdEventPackageTestIdPairs.Select(op => op.SecondValue).Distinct().ToList(); testIds.AddRange(orderIdTestIdPairs.Select(op => op.SecondValue).Distinct().ToArray()); var tests = _testRepository.GetTestNameValuePair(testIds); var eventIdCorporateAccounrNamePairs = _corporateAccountRepository.GetEventIdCorporateAccountNamePair(eventIds); return(_dailyPatientRecapListModelFactory.CreateCustomListModel(eventCustomers, customers, orders, eventIdCorporateAccounrNamePairs, pods, eventPods, events, orderIdEventPackageTestIdPairs, orderIdTestIdPairs, testNotPerformedEventCustomerIdTestIdPairs, tests, orderPackageIdNamePair)); }
public ListModelBase <NonTargetableReportModel, NonTargetableReportModelFilter> GetCustomersForNonTargetableService(int pageNumber, int pageSize, ModelFilterBase filter, out int totalRecords) { var customerIds = _eventCustomerRepository.GetCustomerIdsForNonTargetableReport(pageNumber, pageSize, filter as NonTargetableReportModelFilter, out totalRecords); return(GetNonTargetableReportModel(customerIds)); }
public ListModelBase <CustomTestPerformedViewModel, CustomTestPerformedReportFilter> CustomTestPerformedReport(int pageNumber, int pageSize, ModelFilterBase filter, out int totalRecords) { var eventCustomerResults = _eventCustomerRepository.GetEventCustomerResultByFilter(filter as CustomTestPerformedReportFilter, pageNumber, pageSize, out totalRecords); if (eventCustomerResults.IsNullOrEmpty()) { return(null); } var eventCustomeResultIds = eventCustomerResults.Select(x => x.EventCustomerId).ToArray(); var customerEventScreeningTests = _eventCustomerResultRepository.GetCustomerEventScreeningTestsByEventCustomerResultIds(eventCustomeResultIds); var events = _eventRepository.GetEventswithPodbyIds(eventCustomerResults.Select(ecr => ecr.EventId).Distinct().ToArray()); var customers = _customerRepository.GetCustomers(eventCustomerResults.Select(ecr => ecr.CustomerId).Distinct().ToArray()); var tests = ((IUniqueItemRepository <Test>)_testRepository).GetByIds(customerEventScreeningTests.Select(ces => ces.TestId).Distinct().ToArray()); return(_customTestPerformedListModelFactory.Create(eventCustomerResults, customerEventScreeningTests, events, customers, tests)); }
public ListModelBase <RefundRequestBasicInfoModel, RefundRequestListModelFilter> GetPendingRequests(int pageNumber, int pageSize, ModelFilterBase filter, out int totalRecords) { var refundRequestFilter = filter as RefundRequestListModelFilter; var requests = _refundRequestRepository.Get(pageNumber, pageSize, refundRequestFilter, out totalRecords); if (requests == null || requests.Count() < 1) { return(null); } var customerIds = requests.Select(r => r.CustomerId).ToArray(); var customers = _customerRepository.GetCustomers(customerIds); var eventIds = requests.Select(r => r.EventId).Distinct().ToArray(); var eventCustomers = _eventCustomerRepository.GetEventCustomersByEventIdsCustomerIds(eventIds, customerIds); var appointmentCancellationLog = new List <EventAppointmentCancellationLog>(); if (!eventCustomers.IsNullOrEmpty()) { var cancellationLog = _eventAppointmentCancellationLogRepository.GetByEventCustomerIds(eventCustomers.Select(x => x.Id)); if (!cancellationLog.IsNullOrEmpty()) { appointmentCancellationLog.AddRange(cancellationLog); } } var events = _eventRepository.GetEventswithPodbyIds(eventIds); var hosts = _hostRepository.GetEventHosts(eventIds); var orders = _orderRepository.GetOrderByOrderIds(requests.Select(r => r.OrderId)); var orgRoleUserIds = requests.Select(r => r.RequestedByOrgRoleUserId).Distinct().ToArray(); if (refundRequestFilter.RefundRequestStatus < 0 || refundRequestFilter.RefundRequestStatus == (int)RequestStatus.Resolved || refundRequestFilter.RefundRequestStatus == (int)RequestStatus.Reverted) { var processedbyOrgRoleUserIds = requests.Where(r => r.RefundRequestResult != null).Select(r => r.RefundRequestResult.ProcessedByOrgRoleUserId).Distinct().ToArray(); if (processedbyOrgRoleUserIds.Count() > 0) { orgRoleUserIds = orgRoleUserIds.Concat(processedbyOrgRoleUserIds).ToArray(); } } var bookedByOrgRoleUserIds = orders.Select(o => o.DataRecorderMetaData.DataRecorderCreator.Id).ToArray(); orgRoleUserIds = orgRoleUserIds.Concat(bookedByOrgRoleUserIds).ToArray(); var idNamePairs = _organizationRoleUserRepository.GetNameIdPairofUsers(orgRoleUserIds); var organizationRoleUsers = _organizationRoleUserRepository.GetOrganizationRoleUsers(orgRoleUserIds); var roles = _roleRepository.GetAll(); return(_refundRequestListFactory.Create(requests, customers, events, hosts, idNamePairs, organizationRoleUsers, roles, orders, eventCustomers, appointmentCancellationLog)); }
public ListModelBase <KynCustomerModel, KynCustomerModelFilter> GetKynCustomerReport(int pageNumber, int pageSize, ModelFilterBase filter, out int totalRecords) { var kynfilter = filter as KynCustomerModelFilter; var eventCustomers = _eventCustomerRepository.GetKynEventCustomers(pageNumber, pageSize, kynfilter, out totalRecords); if (eventCustomers.IsNullOrEmpty()) { return(new KynCustomerListModel()); } var eventIds = eventCustomers.Select(ec => ec.EventId).Distinct().ToArray(); var eventCustomerIds = eventCustomers.Select(ec => ec.Id).Distinct().ToArray(); var healthAssessments = _healthAssessmentRepository.GetCustomerHealthInfoByEventCustomerIds(eventCustomerIds); var healthAssessmentsOrgRoleUserIds = healthAssessments.Where(ha => ha.DataRecorderMetaData != null && ha.DataRecorderMetaData.DataRecorderCreator != null).Select(ha => ha.DataRecorderMetaData.DataRecorderCreator.Id).ToList(); var healthAssessmentsbyAgentNameIdPair = _organizationRoleUserRepository.GetNameIdPairofUsers(healthAssessmentsOrgRoleUserIds.ToArray()).ToArray(); var healthAssessmentModifiedByAgent = _organizationRoleUserRepository.GetOrganizationRoleUsers(healthAssessmentsOrgRoleUserIds.ToArray()).ToArray(); var customers = _customerRepository.GetCustomers(eventCustomers.Select(ec => ec.CustomerId).Distinct().ToArray()); var events = _eventRepository.GetEventswithPodbyIds(eventIds); var pods = _podRepository.GetPodsForEvents(eventIds); var appointments = _appointmentRepository.GetAppointmentsForEvents(eventIds); var showKyn = kynfilter != null && kynfilter.ShowOnlyKyn; var orgRoleUserIds = eventCustomers.Where(ec => ec.DataRecorderMetaData != null && ec.DataRecorderMetaData.DataRecorderCreator != null).Select(ec => ec.DataRecorderMetaData.DataRecorderCreator.Id).ToList(); var registeredbyAgent = _organizationRoleUserRepository.GetOrganizationRoleUsers(orgRoleUserIds); var roles = _roleRepository.GetAll(); var registeredbyAgentNameIdPair = _organizationRoleUserRepository.GetNameIdPairofUsers(orgRoleUserIds.ToArray()).ToArray(); var customerIds = customers.Select(c => c.CustomerId).ToArray(); var customTags = _customTagRepository.GetByCustomerIds(customerIds); var corporateAccountNames = _corporateAccountRepository.GetEventIdCorporateAccountNamePair(eventIds); var hospitalPartnerNames = _hospitalPartnerRepository.GetEventIdHospitalPartnerNamePair(eventIds); return(_kynCustomerReportingFactory.Create(eventCustomers, events, customers, appointments, pods, showKyn, registeredbyAgent, roles, registeredbyAgentNameIdPair, customTags, corporateAccountNames, hospitalPartnerNames, healthAssessments, healthAssessmentsbyAgentNameIdPair, healthAssessmentModifiedByAgent)); }
public ListModelBase <HourlyAppointmentBookedModel, HourlyAppointmentsBookedListModelFilter> GetHourlyAppointmentsBooked(int pageNumber, int pageSize, ModelFilterBase filter, out int totalRecords) { var customFilter = filter as HourlyAppointmentsBookedListModelFilter; customFilter = customFilter ?? new HourlyAppointmentsBookedListModelFilter(); var appFilter = new AppointmentsBookedListModelFilter { AccountId = customFilter.AccountId, FromDate = customFilter.FromDate, ToDate = customFilter.ToDate, ShowCustomersWithAppointment = customFilter.ShowCustomersWithAppointment, IsHealthPlanEvent = true }; var eventCustomers = _eventCustomerRepository.GetEventCustomersbyRegisterationDate(pageNumber, pageSize, appFilter, out totalRecords); if (eventCustomers.IsNullOrEmpty()) { return(null); } var appointments = _appointmentRepository.GetByIds(eventCustomers.Where(ec => ec.AppointmentId.HasValue).Select(ec => ec.AppointmentId.Value).ToList()); var eventIds = eventCustomers.Select(ec => ec.EventId).Distinct().ToArray(); var model = _eventReportingService.GetEventVolumeModel(eventCustomers.Select(ec => ec.EventId).Distinct().ToArray()); var customers = _customerRepository.GetCustomers(eventCustomers.Select(ec => ec.CustomerId).Distinct().ToArray()); var customerIds = customers.Select(x => x.CustomerId); var orders = _orderRepository.GetAllOrdersByEventCustomerIds(eventCustomers.Select(ec => ec.Id).ToArray(), true); var customerEligibilities = _customerEligibilityRepository.GetCustomerEligibilityByCustomerIdsAndYear(customerIds, DateTime.Today.Year); if (customerEligibilities.IsNullOrEmpty()) { customerEligibilities = new List <CustomerEligibility>(); } var eventPackages = _eventPackageRepository.GetbyEventIds(eventIds); var eventTests = _eventTestRepository.GetByEventIds(eventIds); var sourceCodes = _sourceCodeRepository.GetSourceCodeByIds(orders.SelectMany(o => o.OrderDetails.Where(od => od.SourceCodeOrderDetail != null && od.SourceCodeOrderDetail.IsActive) .Select(od => od.SourceCodeOrderDetail.SourceCodeId)).Distinct().ToArray()); var orgRoleUserIds = eventCustomers.Where(ec => ec.DataRecorderMetaData != null && ec.DataRecorderMetaData.DataRecorderCreator != null).Select(ec => ec.DataRecorderMetaData.DataRecorderCreator.Id).ToList(); var eventAppointmentChangeLogs = _eventAppointmentChangeLogRepository.GetByEventCustomerIds(eventCustomers.Select(ec => ec.Id).ToArray()).ToArray(); orgRoleUserIds.AddRange(eventAppointmentChangeLogs.Select(eacl => eacl.CreatedByOrgRoleUserId)); var registeredbyAgent = _organizationRoleUserRepository.GetOrganizationRoleUsers(orgRoleUserIds); var roles = _roleRepository.GetAll(); var registeredbyAgentNameIdPair = _organizationRoleUserRepository.GetNameIdPairofUsers(orgRoleUserIds.ToArray()).ToArray(); var callDetails = _callCenterCallRepository.GetCallDetails(customers); var shippingDetailIds = orders.SelectMany(o => o.OrderDetails.SelectMany(od => od.ShippingDetailOrderDetails.Select(sdod => sdod.ShippingDetailId))).ToArray(); var shippingDetails = _shippingDetailRepository.GetByIds(shippingDetailIds); var cdShippingOption = _shippingOptionRepository.GetShippingOptionByProductId((long)Product.UltraSoundImages); var shippingOptions = _shippingOptionRepository.GetAllShippingOptions(); var customTags = _customTagRepository.GetByCustomerIds(customerIds); var tagNames = customers.Where(x => !string.IsNullOrEmpty(x.Tag)).Select(x => x.Tag).ToArray(); var corporateAccount = _corporateAccountRepository.GetByTags(tagNames); var corporateAccountIds = corporateAccount.Select(x => x.Id).ToArray(); var accountAdditionalField = _accountAdditionalFieldRepository.GetAccountAdditionalFieldsByAccountIds(corporateAccountIds); var primaryCarePhysicians = _primaryCarePhysicianRepository.GetByCustomerIds(eventCustomers.Select(ec => ec.CustomerId).Distinct().ToArray()); var languages = _languageRepository.GetAll(); var pcpAppointments = _pcpAppointmentRepository.GetByEventCustomerIds(eventCustomers.Select(ec => ec.Id).ToArray()); return(_customAppointmentsBookedModelFactory.CreateHourlyModel(eventCustomers, appointments, orders, model, customers, registeredbyAgent, roles, registeredbyAgentNameIdPair, sourceCodes, callDetails, shippingDetails, cdShippingOption, shippingOptions, eventAppointmentChangeLogs, primaryCarePhysicians, eventPackages, eventTests, languages, customTags, corporateAccount, accountAdditionalField, pcpAppointments, customerEligibilities)); }
public ListModelBase <GmsExcludedCustomerViewModel, OutboundCallQueueFilter> GetExcludedCustomers(int pageNumber, int pageSize, ModelFilterBase filter, out int totalRecords) { var outboundCallQueueFilter = filter as OutboundCallQueueFilter ?? new OutboundCallQueueFilter(); var organization = _organizationRepository.GetOrganizationbyId(outboundCallQueueFilter.HealthPlanId); CallQueue callQueue = null; var criteria = _healthPlanCallQueueCriteriaRepository.GetById(outboundCallQueueFilter.CriteriaId); callQueue = _callQueueRepository.GetById(outboundCallQueueFilter.CallQueueId > 0 ? outboundCallQueueFilter.CallQueueId : criteria.CallQueueId); outboundCallQueueFilter.CallQueueId = callQueue.Id; _healthPlanOutboundCallQueueService.GetAccountCallQueueSettingForCallQueue(outboundCallQueueFilter); var excludedCustomers = _gmsExcludedCustomerRepository.GetExcludedCallQueueCustomers(pageNumber, pageSize, outboundCallQueueFilter, callQueue, outboundCallQueueFilter.SuppressionType, out totalRecords); var model = new ExcludedCustomerListModel { Filter = outboundCallQueueFilter }; var customerIds = excludedCustomers.Where(x => x.CustomerId.HasValue).Select(x => x.CustomerId.Value).ToArray(); if (!customerIds.IsNullOrEmpty()) { var customers = _customerRepository.GetCustomers(customerIds); var customTags = _corporateCustomerCustomTagRepository.GetByCustomerIds(customerIds); model.Collection = Create(excludedCustomers, customers, customTags, organization); return(model); } model.Collection = Create(excludedCustomers, null, null, organization); return(model); }
public ListModelBase <BarrierInboundViewModel, BarrierInboundFilter> GetBarrierInboundReportList(int pageNumber, int pageSize, ModelFilterBase filter, out int totalRecords) { filter = filter ?? new BarrierInboundFilter(); var eventCustomerBarriers = _barrierRepository.GetForBarrierInboundReport(filter as BarrierInboundFilter, pageNumber, pageSize, out totalRecords); var barrierIds = eventCustomerBarriers.Select(x => x.BarrierId).ToArray(); var barriers = _barrierRepository.GetByIds(barrierIds); var eventCustomerIds = eventCustomerBarriers.Select(x => x.EventCustomerId); var eventCustomers = _eventCustomerRepository.GetByIds(eventCustomerIds); var customerIds = eventCustomers.Select(x => x.CustomerId).ToArray(); var customers = customerIds.Any() ? _customerRepository.GetCustomers(customerIds) : null; var chaseOutbounds = _chaseOutboundRepository.GetByCustomerIds(customerIds); var customerChaseCampaigns = _chaseCampaignRepository.GetCustomerChaseCampaignsByCustomerIds(customerIds); var chaseCampaignIds = customerChaseCampaigns.Select(x => x.ChaseCampaignId).Distinct(); var chaseCampaigns = _chaseCampaignRepository.GetByIds(chaseCampaignIds); return(_barrierInboundReportFactory.Create(eventCustomerBarriers, barriers, eventCustomers, customers, chaseOutbounds, customerChaseCampaigns, chaseCampaigns)); }
public ListModelBase <CustomerCdContentTrackingModel, CustomerCdConentTrackingModelFilter> GetCustomerCdContentTrackingModel(int pageNumber, int pageSize, ModelFilterBase filter, out int totalRecords) { var eventCustomers = _eventCustomerRepository.GetEventCustomersWithCdPurchase(pageNumber, pageSize, filter as CustomerCdConentTrackingModelFilter, out totalRecords); if (eventCustomers.IsNullOrEmpty()) { return(null); } var customers = _customerRepository.GetCustomers(eventCustomers.Select(ec => ec.CustomerId).ToArray()); var orderIds = _orderRepository.GetOrderEventCustomerIdPairforEventCustomerIds( eventCustomers.Select(ec => ec.Id).ToArray()); var cdContentTrackingList = _cdContentGeneratorTrackingRepository.GetCdContentGeneratedforEventCustomerIds( eventCustomers.Select(ec => ec.Id).ToArray()); var orgRoleUserIds = (from cdContentGeneratorTracking in cdContentTrackingList where cdContentGeneratorTracking.DownloadedByOrgRoleUserId.HasValue select cdContentGeneratorTracking.DownloadedByOrgRoleUserId.Value).ToArray(); var idNamePairs = _orgRoleuserRepository.GetNameIdPairofUsers(orgRoleUserIds); return(_customerCdContentTrackingModelFactory.Create(eventCustomers, customers, orderIds, cdContentTrackingList, idNamePairs)); }
public ListModelBase <CallSkippedReportViewModel, CallSkippedReportFilter> GetCallSkippedReport(int pageNumber, int pageSize, ModelFilterBase filter, out int totalRecords) { var callSkippedFilter = filter as CallSkippedReportFilter ?? new CallSkippedReportFilter(); var model = (IReadOnlyCollection <CallSkippedReportEditModel>)_customerCallQueueCallAttemptRepository.GetForCallSkippedReport(pageNumber, pageSize, callSkippedFilter, out totalRecords); List <long> orgRoleUserIds = model.Select(x => x.CustomerId).ToList(); orgRoleUserIds.AddRange(model.Select(x => x.AgentId)); var agentAndCustomerDetailsIdNamePair = (IReadOnlyCollection <OrderedPair <long, string> >)_organizationRoleUserRepository.GetNameIdPairofUsers(orgRoleUserIds.ToArray()); var callQueues = (IReadOnlyCollection <CallQueue>)_callQueueRepository.GetAll(isManual: false, isHealthPlan: true); var accounts = (IReadOnlyCollection <CorporateAccount>)_corporateAccountRepository.GetAllHealthPlan(); var collection = _callSkippedReportFactory.Create(agentAndCustomerDetailsIdNamePair, callQueues, accounts, model); return(new CallSkippedReportListModel { Collection = collection, Filter = callSkippedFilter }); }
public ListModelBase <InterviewInboundViewModel, InterviewInboundFilter> GetInterviewInboundReportList(int pageNumber, int pageSize, ModelFilterBase filter, out int totalRecords) { filter = filter ?? new InterviewInboundFilter(); var interviewInboundFilter = filter as InterviewInboundFilter ?? new InterviewInboundFilter(); var responseVendorReportFilter = new ResponseVendorReportFilter { StartDate = interviewInboundFilter.StartDate, EndDate = interviewInboundFilter.EndDate, AccountId = interviewInboundFilter.AccountId, CustomTags = interviewInboundFilter.CustomTags }; var customerIds = _customerRepository.GetCustomersByCustomTag(responseVendorReportFilter, pageNumber, pageSize, out totalRecords); //var customerIds = _callRepository.GetForInterviewReport(filter as InterviewInboundFilter, pageNumber, pageSize, out totalRecords); if (customerIds.IsNullOrEmpty()) { return(null); } var calls = _callRepository.GetCallsForInterviewReport(filter as InterviewInboundFilter, customerIds); var customers = customerIds.Any() ? _customerRepository.GetCustomers(customerIds.ToArray()) : new List <Customer>(); //var eventCustomers = _eventCustomerRepository.GetEventCustomersByEventIdsCustomerIds(eventIds, customerIds) ?? new List<EventCustomer>(); var eventCustomers = _eventCustomerRepository.GetByEventIdsOrCustomerIds(interviewInboundFilter.StartDate, customerIds) ?? new List <EventCustomer>(); var eventCustomerIds = eventCustomers.Select(x => x.Id); var eventIds = eventCustomers.Select(x => x.EventId).ToArray(); var events = _eventRepository.GetEvents(eventIds); var chaseOutbounds = _chaseOutboundRepository.GetByCustomerIds(customerIds); var customerChaseCampaigns = _chaseCampaignRepository.GetCustomerChaseCampaignsByCustomerIds(customerIds.ToArray()); var chaseCampaignIds = customerChaseCampaigns.Select(x => x.ChaseCampaignId).Distinct(); var chaseCampaigns = _chaseCampaignRepository.GetByIds(chaseCampaignIds); var appointmentIds = eventCustomers.Where(x => x.AppointmentId.HasValue).Select(x => x.AppointmentId.Value); var appointments = _appointmentRepository.GetByIds(appointmentIds); var eventAppointmentCancellatonLogs = _eventAppointmentCancellationLogRepository.GetByEventCustomerIds(eventCustomerIds); var noteIds = eventAppointmentCancellatonLogs.Where(x => x.NoteId.HasValue).Select(x => x.NoteId.Value); var customerCallNotes = _customerCallNotesRepository.GetByIds(noteIds); var eventIdStaffIdPairs = _eventRepository.GetEventStaffPairs(eventIds); var orgRoleUserIds = eventIdStaffIdPairs.Select(x => x.SecondValue).Distinct().ToArray(); var organizationRoleUsers = _organizationRoleUserRepository.GetOrganizationRoleUsers(orgRoleUserIds); var userIds = organizationRoleUsers.Select(x => x.UserId).Distinct().ToList(); var users = _userRepository.GetUsers(userIds); return(_interviewInboundReportFactory.Create(eventCustomers, customers, chaseOutbounds, customerChaseCampaigns, chaseCampaigns, calls, appointments, events, eventAppointmentCancellatonLogs, customerCallNotes, eventIdStaffIdPairs, organizationRoleUsers, users)); }
public ListModelBase <DailyPatientRecapModel, DailyPatientRecapModelFilter> GetDailyPatientReapModel(int pageNumber, int pageSize, ModelFilterBase filter, out int totalRecords) { var eventCustomers = _eventCustomerRepository.GetEventsCustomersForDailyPatientRecap(pageNumber, pageSize, filter as DailyPatientRecapModelFilter, out totalRecords); if (eventCustomers.IsNullOrEmpty()) { return(null); } var eventIds = eventCustomers.Select(x => x.EventId).Distinct(); var appointmentids = eventCustomers.Where(ec => ec.AppointmentId.HasValue).Select(ec => ec.AppointmentId.Value).ToList(); var events = _eventRepository.GetEventswithPodbyIds(eventIds); var pods = _podRepository.GetPodsForEvents(eventIds); var eventPods = _eventPodRepository.GetByEventIds(eventIds); var customerIds = eventCustomers.Select(x => x.CustomerId).Distinct().ToArray(); var customers = _customerRepository.GetCustomers(customerIds); var eventCustomerIds = eventCustomers.Select(x => x.Id).ToArray(); var orders = _orderRepository.GetAllOrdersByEventCustomerIds(eventCustomerIds, true); var orderPackageIdNamePair = _eventPackageRepository.GetPackageNamesForOrder(orders.Select(o => o.Id).ToList()); //var orderTestIdNamePair = _eventTestRepository.GetTestNamesForOrders(orders.Select(o => o.Id).ToList()); var orderIdEventPackageTestIdPairs = _eventPackageRepository.GetOrderIdEventPackageTestIdPairsForOrder(orders.Select(o => o.Id).ToArray()); var orderIdTestIdPairs = _eventTestRepository.GetOrderIdTestIdPairsForOrders(orders.Select(o => o.Id).ToArray()); var testNotPerformedEventCustomerIdTestIdPairs = _testNotPerformedRepository.GetEventCusromerResultIdTestIdPairs(eventCustomerIds); var testIds = orderIdEventPackageTestIdPairs.Select(op => op.SecondValue).Distinct().ToList(); testIds.AddRange(orderIdTestIdPairs.Select(op => op.SecondValue).Distinct().ToArray()); var tests = _testRepository.GetTestNameValuePair(testIds); var shippingDetailIds = orders.SelectMany(o => o.OrderDetails.SelectMany(od => od.ShippingDetailOrderDetails.Select(sdod => sdod.ShippingDetailId))).ToArray(); var shippingDetails = _shippingDetailRepository.GetByIds(shippingDetailIds); var cdShippingOption = _shippingOptionRepository.GetShippingOptionByProductId((long)Product.UltraSoundImages); var eventHospitalPartners = _hospitalPartnerRepository.GetEventHospitalPartnersByEventIds(eventIds).ToArray(); var organizationIds = eventHospitalPartners.Select(ehp => ehp.HospitalPartnerId).Distinct().ToArray(); var hospitalFacilityIds = eventCustomers.Where(ec => ec.HospitalFacilityId.HasValue && ec.HospitalFacilityId.Value > 0).Select(ec => ec.HospitalFacilityId.Value).ToArray(); organizationIds = organizationIds.Concat(hospitalFacilityIds).ToArray(); var organizations = _organizationRepository.GetOrganizations(organizationIds); var eventIdHospitalPartnerNamePairs = (from ehp in eventHospitalPartners join org in organizations on ehp.HospitalPartnerId equals org.Id select new OrderedPair <long, string>(ehp.EventId, org.Name)).ToArray(); var eventIdCorporateAccounrNamePairs = _corporateAccountRepository.GetEventIdCorporateAccountNamePair(eventIds); var appointments = _appointmentRepository.GetByIds(appointmentids); return(_dailyPatientRecapListModelFactory.CreateListModel(eventCustomers, customers, orders, shippingDetails, cdShippingOption, eventIdHospitalPartnerNamePairs, eventIdCorporateAccounrNamePairs, appointments, pods, eventPods, events, orderIdEventPackageTestIdPairs, orderIdTestIdPairs, testNotPerformedEventCustomerIdTestIdPairs, tests, orderPackageIdNamePair)); }
public ListModelBase <BiWeeklyMicroAlbuminFobtReportViewModel, BiWeeklyMicroAlbuminFobtReportModelFilter> GetEventCustomerResultForReport(int pageNumber, int pageSize, ModelFilterBase filter, out int totalRecords) { var eventCustomerResultCollection = _eventCustomerResultRepository.GetLabKitDistributionReport(filter as BiWeeklyMicroAlbuminFobtReportModelFilter, pageNumber, pageSize, out totalRecords); return(GetBiWeeklyMicroAlbuminFobtReportModel((IReadOnlyCollection <EventCustomerResult>)eventCustomerResultCollection)); }
public ListModelBase <GiftCertificateReportWellmedViewModel, GiftCertificateReportFilter> GetGiftCertificateWellmedReport(int pageNumber, int pageSize, ModelFilterBase filter, out int totalRecords) { var eventCustomers = _eventCustomerRepository.GetForGiftCertificateReport(pageNumber, pageSize, filter as GiftCertificateReportFilter, out totalRecords); if (!eventCustomers.Any()) { return(null); } var customerIds = eventCustomers.Select(x => x.CustomerId).ToArray(); var customers = _customerRepository.GetCustomers(customerIds); var model = _eventReportingService.GetEventVolumeModel(eventCustomers.Select(ec => ec.EventId).ToArray()); var eventCustomerIds = eventCustomers.Select(ec => ec.Id).ToArray(); var orders = _orderRepository.GetAllOrdersByEventCustomerIds(eventCustomerIds); var orderIds = orders.Select(o => o.Id).ToArray(); var orderPackageIdNamePair = _eventPackageRepository.GetPackageNamesForOrder(orderIds); var orderTestIdNamePair = _eventTestRepository.GetTestNamesForOrders(orderIds); return(_giftCertificateReportWellmedFactory.Create(customers, eventCustomers, model, orders, orderPackageIdNamePair, orderTestIdNamePair)); }
public ListModelBase <ProspectCustomerBasicInfoModel, ProspectCustomerListModelFilter> GetAbandonedCustomers(int pageNumber, int pageSize, ModelFilterBase filter, out int totalRecords) { var modelFilter = filter as ProspectCustomerListModelFilter; if (modelFilter.AgentOrganizationId > 0 && !modelFilter.FromDate.HasValue && !modelFilter.ToDate.HasValue) { modelFilter.FromDate = DateTime.Today.AddDays(-90); modelFilter.DateType = (int)ProspectCustomerDateTypeFilter.CreatedDate; } var prospectCustomers = _prospectCustomerRepository.GetAbandonedProspectCustomer(pageNumber, pageSize, modelFilter, out totalRecords); var model = new ProspectCustomerListModel(); if (prospectCustomers != null && prospectCustomers.Any()) { var prospectCustomerNotes = _customerCallNotesRepository.GetProspectCustomerNotes(prospectCustomers.Select(pc => pc.Id).ToArray()); var orgRoleUserIds = prospectCustomers.Where(pc => pc.ContactedBy.HasValue).Select(pc => pc.ContactedBy.Value).ToList(); if (prospectCustomerNotes != null && prospectCustomerNotes.Any()) { orgRoleUserIds.AddRange(prospectCustomerNotes.Select(pcn => pcn.DataRecorderMetaData.DataRecorderCreator.Id)); } orgRoleUserIds = orgRoleUserIds.Distinct().ToList(); var idNamePairs = _organizationRoleUserRepository.GetNameIdPairofUsers(orgRoleUserIds.ToArray()); var customerIds = prospectCustomers.Where(x => x.CustomerId.HasValue && x.CustomerId.Value > 0).Select(x => x.CustomerId.Value); var customers = new List <Customer>(); if (!customerIds.IsNullOrEmpty()) { customers = _customerRepository.GetCustomers(customerIds.ToArray()); } var customTags = _corporateCustomerCustomTagRepository.GetByCustomerIds(customerIds); var corportateAccounts = new List <CorporateAccount>(); if (!customers.IsNullOrEmpty()) { var cutomerTags = customers.Where(x => !string.IsNullOrEmpty(x.Tag) && x.Tag.Trim().Length > 1).Select(x => x.Tag); if (customTags.Any()) { corportateAccounts.AddRange(_corporateAccountRepository.GetByTags(cutomerTags.ToArray())); } } var pcBasicmodels = new ProspectCustomerBasicInfoModel[prospectCustomers.Count()]; int index = 0; foreach (var prospectCustomer in prospectCustomers) { SourceCode sourceCode = null; if (prospectCustomer.SourceCodeId.HasValue) { sourceCode = _sourceCodeRepository.GetSourceCodeById(prospectCustomer.SourceCodeId.Value); } pcBasicmodels[index] = Mapper.Map <ProspectCustomer, ProspectCustomerBasicInfoModel>(prospectCustomer); if (prospectCustomer.CustomerId.HasValue) { if (customers.Any()) { var customer = customers.First(x => x.CustomerId == prospectCustomer.CustomerId); pcBasicmodels[index].CorporateTag = string.IsNullOrEmpty(customer.Tag) ? "" : customer.Tag; pcBasicmodels[index].MemberId = string.IsNullOrEmpty(customer.InsuranceId) ? "" : customer.InsuranceId; if (corportateAccounts.Any() && !string.IsNullOrEmpty(customer.Tag)) { var corportateAccount = corportateAccounts.First(x => x.Tag == customer.Tag); pcBasicmodels[index].CorporateSponsor = corportateAccount.Name; } } var corporateCustomTags = string.Empty; if (customTags != null && customTags.Any()) { var customerCustomTags = customTags.Where(ct => ct.CustomerId == prospectCustomer.CustomerId).Select(ct => ct.Tag).ToArray(); if (customerCustomTags.Any()) { corporateCustomTags = string.Join(",", customerCustomTags); } } pcBasicmodels[index].CustomTags = corporateCustomTags; if (!string.IsNullOrEmpty(pcBasicmodels[index].CorporateTag) && string.IsNullOrEmpty(pcBasicmodels[index].CustomTags)) { pcBasicmodels[index].CustomTags = "None"; } } var notesVieModel = new List <NotesViewModel>(); var prospectNotes = _notesViewModelFactory.GetProspectCustomerNotes(prospectCustomer.Id, prospectCustomerNotes, idNamePairs); if (prospectNotes != null) { notesVieModel.AddRange(prospectNotes); } if (prospectCustomer.Tag == ProspectCustomerTag.Cancellation && prospectCustomer.CustomerId.HasValue && _settings.IsRefundQueueEnabled) { var eventCustomers = _eventCustomerRepository.GetbyCustomerId(prospectCustomer.CustomerId.Value); eventCustomers = eventCustomers.Where(ec => !ec.AppointmentId.HasValue); if (eventCustomers.Any()) { var eventCustomerId = eventCustomers.Select(ec => ec.Id).Max(); if (eventCustomerId > 0) { var orderId = _orderRepository.GetOrderIdByEventCustomerId(eventCustomerId); var refundRequests = _refundRequestRepository.GetbyOrderId(orderId, true); if (refundRequests != null && refundRequests.Any() && refundRequests.Count(rr => rr.RefundRequestType == RefundRequestType.CustomerCancellation) > 0) { var refundRequest = refundRequests.LastOrDefault(rr => rr.RefundRequestType == RefundRequestType.CustomerCancellation && rr.RefundRequestResult != null && (rr.RefundRequestResult.RequestResultType == RequestResultType.IssueRefund || rr.RefundRequestResult.RequestResultType == RequestResultType.IssueGiftCertificate)); if (refundRequest != null) { notesVieModel.Add(new NotesViewModel() { Note = refundRequest.RefundRequestResult.Notes }); } } } } } pcBasicmodels[index].Notes = notesVieModel; if (sourceCode != null) { pcBasicmodels[index].SourceCode = sourceCode.CouponCode; } if (prospectCustomer.ContactedBy.HasValue) { pcBasicmodels[index].ContactedBy = idNamePairs.Where(nip => nip.FirstValue == prospectCustomer.ContactedBy.Value).Select(nip => nip.SecondValue).SingleOrDefault(); } index++; } model.Collection = pcBasicmodels; } return(model); }
public ListModelBase <ConfirmationReportViewModel, ConfirmationReportFilter> GetConfirmationReport(int pageNumber, int pageSize, ModelFilterBase filter, out int totalRecords) { var confirmationReportFilter = filter as ConfirmationReportFilter ?? new ConfirmationReportFilter(); var confirmationQueueCustomers = _callQueueCustomerRepository.GetForConfirmationReport(confirmationReportFilter, pageNumber, pageSize, out totalRecords); var collection = new List <ConfirmationReportViewModel>(); if (confirmationQueueCustomers.IsNullOrEmpty()) { return(new ConfirmationReportListModel { Collection = new List <ConfirmationReportViewModel>(), Filter = confirmationReportFilter }); } var customerIds = confirmationQueueCustomers.Select(x => x.CustomerId.Value).ToArray(); var customers = _customerRepository.GetCustomers(customerIds); var callQueueCustomerCalls = _callQueueCustomerCallRepository.GetByCallQueueCustomerIds(confirmationQueueCustomers.Select(x => x.Id)); var calls = _callCenterCallRepository.GetCallByCustomerIdAndCallQueue(customerIds, HealthPlanCallQueueCategory.AppointmentConfirmation); var eventIds = confirmationQueueCustomers.Where(x => x.EventId.HasValue && x.EventId.Value > 0).Select(x => x.EventId.Value).ToArray(); var events = _eventService.GetEventBasicInfoEventIds(eventIds); var eventCustomerIds = confirmationQueueCustomers.Where(x => x.EventCustomerId.HasValue).Select(x => x.EventCustomerId.Value).ToArray(); var eventCustomers = _eventCustomerRepository.GetByIds(eventCustomerIds); var eventCustomersByEventIdsAndCustomerIds = _eventCustomerRepository.GetEventCustomersByEventIdsCustomerIds(eventIds, customerIds); if (!eventCustomersByEventIdsAndCustomerIds.IsNullOrEmpty()) { eventCustomersByEventIdsAndCustomerIds = eventCustomersByEventIdsAndCustomerIds.Where(x => !eventCustomerIds.Contains(x.Id)).ToArray(); eventCustomers = eventCustomers.Concat(eventCustomersByEventIdsAndCustomerIds); } var appointments = _appointmentRepository.GetByIds(eventCustomers.Where(ec => ec.AppointmentId.HasValue).Select(ec => ec.AppointmentId.Value).ToList()); var healthPlanIds = confirmationQueueCustomers.Where(x => x.HealthPlanId.HasValue).Select(x => x.HealthPlanId.Value).ToArray(); var healthPlans = _corporateAccountRepository.GetByIds(healthPlanIds); var restrictionIdNamePairs = _corporateAccountRepository.GetRestrictionIdNamePairs(healthPlanIds); var calledByAgentIds = calls.Select(x => x.CreatedByOrgRoleUserId).Distinct().ToArray(); var calledByAgentNameIdPairs = _organizationRoleUserRepository.GetNameIdPairofUsers(calledByAgentIds).ToArray(); var confirmedByAgentIds = eventCustomers.Where(x => x.ConfirmedBy.HasValue).Select(x => x.ConfirmedBy.Value).ToArray(); var confirmedByAgentNameIdPairs = _organizationRoleUserRepository.GetNameIdPairofUsers(confirmedByAgentIds).ToArray(); collection = _confirmationReportingFactory.Create(confirmationQueueCustomers, customers, events, calls, eventCustomers, appointments, healthPlans, restrictionIdNamePairs, confirmedByAgentNameIdPairs, calledByAgentNameIdPairs, callQueueCustomerCalls).ToList(); return(new ConfirmationReportListModel { Collection = collection, Filter = confirmationReportFilter }); }
public ListModelBase <GmsCallQueueCustomerViewModel, OutboundCallQueueFilter> GetGmsCallQueueCustomersReport(int pageNumber, int pageSize, ModelFilterBase filter, out int totalRecords) { var callQueueFilter = filter as OutboundCallQueueFilter; callQueueFilter = callQueueFilter ?? new OutboundCallQueueFilter(); if (!callQueueFilter.CustomTags.IsNullOrEmpty()) { callQueueFilter.CustomCorporateTag = string.Join(",", callQueueFilter.CustomTags); } var criteria = _callQueueCriteriaRepository.GetById(callQueueFilter.CriteriaId); var collection = new List <GmsCallQueueCustomerViewModel>(); if (criteria.IsQueueGenerated) { var callQueue = _callQueueRepository.GetById(callQueueFilter.CallQueueId); var customersInQueueList = _callQueueCustomerRepository.GetMailRoundCustomersForGms(callQueueFilter, pageNumber, pageSize, callQueueFilter.CriteriaId, callQueue, out totalRecords); var callqueueCustomers = customersInQueueList == null ? new List <CallQueueCustomer>() : customersInQueueList.ToList(); if (!callqueueCustomers.IsNullOrEmpty()) { var customerIds = callqueueCustomers.Where(x => x.CustomerId.HasValue).Select(x => x.CustomerId.Value).ToArray(); var customers = _customerRepository.GetCustomers(customerIds); var events = _eventReportingService.GetFutureHealthPlanEvents(callQueueFilter.HealthPlanId, DateTime.Today); var hosts = _hostRepository.GetHostsForFutureHealthPlanEvents(callQueueFilter.HealthPlanId, DateTime.Today); var healthPlan = ((IUniqueItemRepository <CorporateAccount>)_corporateAccountRepository).GetById(callQueueFilter.HealthPlanId); var organization = _organizationRepository.GetOrganizationbyId(callQueueFilter.HealthPlanId); var customerIdCheckoutNumberPairList = _customerAccountGlocomNumberService.GetGlocomNumberForGmsReport(organization.Id, customers); var setAdditionalField = !string.IsNullOrEmpty(callQueueFilter.CustomCorporateTag); collection = _gmsCallQueueCustomerModelFactory.Create(callqueueCustomers, customers, events, hosts, healthPlan, organization, customerIdCheckoutNumberPairList, setAdditionalField).ToList(); } } else { totalRecords = 0; } return(new GmsCallQueueCustomerListModel { Collection = collection }); }
public ListModelBase <ExportableReportsQueueViewModel, ExportableReportsQueueFilter> GetExportableReportQueue(int pageNumber, int pageSize, ModelFilterBase filter, out int totalRecords) { var exportableReports = _exportableReportsQueueRepository.GetExportableReportsQueue(pageNumber, pageSize, filter as ExportableReportsQueueFilter, out totalRecords); if (exportableReports.IsNullOrEmpty()) { return(null); } var fileIds = exportableReports.Where(x => x.FileId.HasValue).Select(x => x.FileId.Value).ToArray(); var mediaLocation = _mediaRepository.GetExportToCsvMediaFileLocation(); var files = _fileRepository.GetByIds(fileIds); return(_exportableReportsQueueFactory.Create(exportableReports, mediaLocation, files)); }
public ListModelBase <CallQueueCustomersReportModel, OutboundCallQueueFilter> GetCallQueueCustomers(int pageNumber, int pageSize, ModelFilterBase filter, out int totalRecords) { var callQueueFilter = filter as OutboundCallQueueFilter; callQueueFilter = callQueueFilter ?? new OutboundCallQueueFilter(); if (!callQueueFilter.CustomTags.IsNullOrEmpty()) { callQueueFilter.CustomCorporateTag = string.Join(",", callQueueFilter.CustomTags); } var criteria = _callQueueCriteriaRepository.GetById(callQueueFilter.CriteriaId); var callQueueId = callQueueFilter.CallQueueId; callQueueFilter.CallQueueId = criteria.CallQueueId; callQueueFilter.GmsAccountIds = _settings.GmsAccountIds; //callQueueFilter.NumberOfDays = _settings.CustomerReturnInCallQueue; _healthPlanOutboundCallQueueService.GetAccountCallQueueSettingForCallQueue(callQueueFilter); var callQueue = _callQueueRepository.GetById(callQueueFilter.CallQueueId); var callqueueCustomersList = new List <CallQueueCustomer>(); totalRecords = 0; if (criteria.IsQueueGenerated) { if (callQueue.Category == HealthPlanCallQueueCategory.CallRound) { var customersInQueueList = _callQueueCustomerRepository.GetOutboundCallRoundCallQueue(callQueueFilter, pageNumber, pageSize, callQueue, callQueueFilter.CriteriaId, out totalRecords); callqueueCustomersList = customersInQueueList == null ? new List <CallQueueCustomer>() : customersInQueueList.ToList(); } else if (callQueue.Category == HealthPlanCallQueueCategory.FillEventsHealthPlan) { var customersInQueueList = _callQueueCustomerRepository.GetCallQueueCustomerForHealthPlanFillEvents(callQueueFilter, pageNumber, pageSize, callQueueFilter.CriteriaId, callQueue, out totalRecords); callqueueCustomersList = customersInQueueList == null ? new List <CallQueueCustomer>() : customersInQueueList.ToList(); } else if (callQueue.Category == HealthPlanCallQueueCategory.LanguageBarrier) { var customersInQueueList = _callQueueCustomerRepository.GetLanguageBarrierCallQueueCustomer(callQueueFilter, pageNumber, pageSize, callQueueFilter.CriteriaId, callQueue, out totalRecords); callqueueCustomersList = customersInQueueList == null ? new List <CallQueueCustomer>() : customersInQueueList.ToList(); } else if (callQueue.Category == HealthPlanCallQueueCategory.UncontactedCustomers) { var customersInQueueList = _callQueueCustomerRepository.GetUncontactedCallQueueCustomers(callQueueFilter, pageNumber, pageSize, callQueueFilter.CriteriaId, _settings.NeverBeenCalledInDays, _settings.NoPastAppointmentInDaysUncontactedCustomers, out totalRecords); callqueueCustomersList = customersInQueueList == null ? new List <CallQueueCustomer>() : customersInQueueList.ToList(); } else if (callQueue.Category == HealthPlanCallQueueCategory.NoShows) { var customersInQueueList = _callQueueCustomerRepository.GetNoShowCallQueueCustomer(callQueueFilter, pageNumber, pageSize, callQueueFilter.CriteriaId, out totalRecords); callqueueCustomersList = customersInQueueList == null ? new List <CallQueueCustomer>() : customersInQueueList.ToList(); } else if (callQueue.Category == HealthPlanCallQueueCategory.MailRound) { var customersInQueueList = _callQueueCustomerRepository.GetMailRoundCallqueueCustomer(callQueueFilter, pageNumber, pageSize, callQueueFilter.CriteriaId, callQueue, out totalRecords); callqueueCustomersList = customersInQueueList == null ? new List <CallQueueCustomer>() : customersInQueueList.ToList(); } } var organization = _organizationRepository.GetOrganizationbyId(callQueueFilter.HealthPlanId); var rejectedCustomersStats = _excludedCustomerRepository.GetExcludedCustomers(callQueueFilter, callQueue); CallQueueCustomersReportModelListModel model = null; var criteriaModel = _healthPlanCallQueueCriteriaService.GetSystemGeneratedCallQueueCriteria(callQueueFilter.CallQueueId, callQueueFilter.HealthPlanId, null, callQueueFilter.CampaignId.HasValue ? callQueueFilter.CampaignId.Value : 0, callQueueFilter.CriteriaId); callQueueFilter.CallQueueId = callQueueId; if (!callqueueCustomersList.IsNullOrEmpty()) { var customerIds = callqueueCustomersList.Select(x => x.CustomerId.Value); var customers = _customerRepository.GetCustomers(customerIds.ToArray()); var corporateAccount = ((IUniqueItemRepository <CorporateAccount>)_corporateAccountRepository).GetById(callQueueFilter.HealthPlanId); var corporateCustomTags = _corporateCustomerCustomTagRepository.GetByCustomerIds(customerIds); model = _callQueueCustomerReportFactory.GetCallQueueCustomersList(callqueueCustomersList, customers, corporateCustomTags, corporateAccount, criteria.IsQueueGenerated, criteriaModel); } model = model ?? new CallQueueCustomersReportModelListModel(); model.CallQueueCriteria = criteriaModel; model.IsQueueGenerated = criteria.IsQueueGenerated; model.RejectedCustomersStats = rejectedCustomersStats ?? new CallQueueCustomersStatsViewModel(); model.HealthPlanName = organization.Name; model.CallQueueCategory = callQueue.Category; model.CallQueueName = callQueue.Name; model.Filter = callQueueFilter; return(model); }
public ListModelBase <CallCenterTeamViewModel, CallCenterTeamListModelFilter> GetCallCenterTeams(int pageNumber, int pageSize, ModelFilterBase filter, out int totalRecords) { var callCenterTeams = _callCenterTeamRepository.GetByFilter(pageNumber, pageSize, filter as CallCenterTeamListModelFilter, out totalRecords); if (callCenterTeams.IsNullOrEmpty()) { return(null); } var teamIds = callCenterTeams.Select(c => c.Id).ToArray(); var orgRoleUserIds = new List <long>(); orgRoleUserIds.AddRange(callCenterTeams.Select(c => c.DataRecorderMetaData.DataRecorderCreator.Id).ToArray()); var modifiedByOrgRoleUserIds = callCenterTeams.Where(c => c.DataRecorderMetaData.DataRecorderModifier != null && c.DataRecorderMetaData.DataRecorderModifier.Id > 0) .Select(c => c.DataRecorderMetaData.DataRecorderModifier.Id).ToArray(); if (!modifiedByOrgRoleUserIds.IsNullOrEmpty()) { orgRoleUserIds.AddRange(modifiedByOrgRoleUserIds); } var teamIdAgentIdPairs = _callCenterTeamRepository.GetTeamIdAgentIdOrderedPairsByTeamIds(teamIds); orgRoleUserIds.AddRange(teamIdAgentIdPairs.Select(x => x.SecondValue).ToArray()); orgRoleUserIds = orgRoleUserIds.Distinct().ToList(); var idNamePairs = _organizationRoleUserRepository.GetNameIdPairofUsers(orgRoleUserIds.ToArray()); return(_callCenterTeamListModelFactory.Create(callCenterTeams, teamIdAgentIdPairs, idNamePairs)); }
public ListModelBase <PcpSummaryLogReportModel, PcpSummaryLogReportModelFilter> GetPcpSummaryLogReport(int pageNumber, int pageSize, ModelFilterBase filter, out int totalRecords) { var shippingOption = _shippingOptionRepository.GetShippingOptionByProductId((long)Product.UltraSoundImages, true); var shippingDetails = _shippingDetailRepository.GetEventCustomerShippingDetailForFilter(pageNumber, pageSize, filter as PcpSummaryLogReportModelFilter, new[] { shippingOption.Id }, out totalRecords); if (shippingDetails.IsNullOrEmpty()) { return(null); } var shippingDetailIdEventCustomerIdPairs = _shippingDetailRepository.GetShippingDetailIdEventCustomerIdPairs(shippingDetails.Select(sd => sd.Id).ToArray()); var eventCustomers = _eventCustomerRepository.GetByIds(shippingDetailIdEventCustomerIdPairs.Select(sdec => sdec.SecondValue).ToArray()); var customerIds = eventCustomers.Select(ec => ec.CustomerId).Distinct().ToArray(); var customers = _customerRepository.GetCustomers(customerIds); var primaryCarePhysicians = _primaryCarePhysicianRepository.GetByCustomerIds(customerIds); var eventids = eventCustomers.Select(e => e.EventId).Distinct().ToArray(); var eventCollection = ((IUniqueItemRepository <Event>)_eventRepository).GetByIds(eventids); return(_pcpSummaryLogReportListModelFactory.Create(shippingDetails, shippingDetailIdEventCustomerIdPairs, eventCustomers, customers, primaryCarePhysicians, eventCollection)); }
public ListModelBase <StaffEventSchedulingModel, EventStaffAssignmentListModelFilter> GetStaffScheduleForCsvExport(int pageNumber, int pageSize, ModelFilterBase staffEventScheduleModelFilter, out int totalRecords) { bool isCurrentRoleTechnician = (staffEventScheduleModelFilter as EventStaffAssignmentListModelFilter).UserSessionModel.CurrentOrganizationRole.RoleId == (long)Roles.Technician; var eventStaffAssignmentListModel = _eventStaffAssignmentService.GetforStaffCalendar(isCurrentRoleTechnician, staffEventScheduleModelFilter as EventStaffAssignmentListModelFilter); var filter = eventStaffAssignmentListModel.Filter; filter.PageNumber = pageNumber; filter.PageSize = pageSize; var data = _eventService.GetEventStaff(filter, true); var eventIdSponsorPair = GetEventIdSponsorPair(data); totalRecords = filter.TotalRecords; return(GetStaffEventScheduleCsvModel(data.StaffEventAssignments, eventIdSponsorPair)); }
public ListModelBase <CdImageStatusModel, CdImageStatusModelFilter> GetCdImageStatusmodel(int pageNumber, int pageSize, ModelFilterBase filter, out int totalRecords) { var eventCustomers = _eventCustomerRepository.GetEventCustomerswithCdPurchase(pageNumber, pageSize, filter as CdImageStatusModelFilter, out totalRecords); if (eventCustomers.IsNullOrEmpty()) { return(null); } var orderShippingStatus = _orderDetailRepository.GetCdImageShippingStatusfortheEventCustomers(eventCustomers.Select(ec => ec.Id).ToArray()); var events = _eventRepository.GetByIds(eventCustomers.Select(ec => ec.EventId).ToArray()); var customers = _customerRepository.GetCustomers(eventCustomers.Select(ec => ec.CustomerId).ToArray()); return(_cdImageStatusModelFactory.Create(eventCustomers, orderShippingStatus, customers, events)); }