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));
        }
Ejemplo n.º 2
0
        public void GetOrganizationRoleUsersReturnsUsers()
        {
            var organizationRoleUserIds = new List <long> {
                1, 2, 3
            };
            List <OrganizationRoleUser> organizationRoleUsers = _organizationRoleUserRepository.
                                                                GetOrganizationRoleUsers(organizationRoleUserIds);

            Assert.IsNotNull(organizationRoleUsers, "Null collection of Organization Role Users returned.");
            Assert.IsNotEmpty(organizationRoleUsers, "Empty collection of Organization Role Users returned.");
        }
Ejemplo n.º 3
0
        public ListModelBase <CallQueueExcludedCustomerReportModel, CallQueueExcludedCustomerReportModelFilter> GetCallQueueExcludedCustomerReport(int pageNumber, int pageSize, ModelFilterBase filter, out int totalRecords)
        {
            var callQueueFilter = filter as CallQueueExcludedCustomerReportModelFilter;
            var customers       = _customerRepository.GetCallQueueExcludedCustomers(callQueueFilter, pageNumber, pageSize, out totalRecords);

            if (customers == null || !customers.Any())
            {
                return(null);
            }

            var customerIds = customers.Select(c => c.CustomerId).ToArray();

            var customerEligibilities = _customerEligibilityRepository.GetCustomerEligibilityByCustomerIdsAndYear(customerIds, DateTime.Today.Year);

            if (customerEligibilities.IsNullOrEmpty())
            {
                customerEligibilities = new List <CustomerEligibility>();
            }

            var customTags = _corporateCustomerCustomTagRepository.GetByCustomerIds(customerIds);

            var prospectCustomers = _prospectCustomerRepository.GetProspectCustomersByCustomerIds(customerIds);

            var eventCustomers = _eventCustomerRepository.GetByCustomerIds(customerIds);

            eventCustomers = eventCustomers.Where(x => x.AppointmentId.HasValue && x.NoShow == false);

            var eventIds = eventCustomers.Select(x => x.EventId).ToArray();

            var events = _eventRepository.GetEvents(eventIds);

            var orgRoleUsers = _organizationRoleUserRepository.GetOrganizationRoleUsers(customerIds);

            var userIds = orgRoleUsers.Select(x => x.UserId).ToList();

            var users = _userRepository.GetUsers(userIds);

            var targetedCustomers = _customerTargetedRepository.GetCustomerTargetedByCustomerIdsAndYear(customerIds, DateTime.Today.Year);

            if (callQueueFilter.CampaignId > 0)
            {
                var zipIds             = _callQueueCustomerRepository.GetAccountZip(callQueueFilter.HealthPlanId);
                var callQueueCustomers = _callQueueCustomerRepository.GetCallQueueCustomersForRejectedList(customerIds, callQueueFilter.CampaignId, callQueueFilter.HealthPlanId);
                var account            = ((IUniqueItemRepository <CorporateAccount>)_corporateAccountRepository).GetById(callQueueFilter.HealthPlanId);

                var criterias = _healthPlanCallQueueCriteriaRepository.GetByCampaignId(callQueueFilter.CampaignId);
                var criteria  = criterias.First();

                var accountCallQueueSetting = (_callQueueSettingRepository.GetByAccountIdAndCallQueueId(callQueueFilter.HealthPlanId, criteria.CallQueueId));
                return(_callQueueExcludedCustomerReportListModelFactory.Create(customers, customTags, prospectCustomers, eventCustomers, events, orgRoleUsers, users, callQueueCustomers, zipIds, account, accountCallQueueSetting, customerEligibilities, targetedCustomers));
            }

            return(_callQueueExcludedCustomerReportListModelFactory.Create(customers, customTags, prospectCustomers, eventCustomers, events, orgRoleUsers, users, null, null, null, null, customerEligibilities, targetedCustomers));
        }
Ejemplo n.º 4
0
        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 void PollforDirectMailNotification()
        {
            try
            {
                var activityDate = DateTime.Now;

                var campaignActivities = _campaignActivityRepository.GetActivitiesByDateTypeId(activityDate.Date, (long)CampaignActivityType.DirectMail);

                if (campaignActivities != null && campaignActivities.Any())
                {
                    _logger.Info(string.Format("Activities Count  {0} Found for Today  {1}: ", campaignActivities.Count(), activityDate.Date));

                    foreach (var campaignActivity in campaignActivities)
                    {
                        var campaignActivityAssignments = _campaignActivityAssignmentRepository.GetByCampaignActivityId(campaignActivity.Id);
                        if (campaignActivityAssignments != null && campaignActivities.Any())
                        {
                            var orgRolesUsers = _organizationRoleUserRepository.GetOrganizationRoleUsers(campaignActivityAssignments.Select(x => x.AssignedToOrgRoleUserId));

                            var users    = _userRepository.GetUsers(orgRolesUsers.Select(x => x.UserId).Distinct().ToList());
                            var campaign = _campaignRepository.GetById(campaignActivity.CampaignId);

                            var healthPlan = _organizationRepository.GetOrganizationbyId(campaign.AccountId);

                            foreach (var user in users)
                            {
                                if (user.Email == null || string.IsNullOrEmpty(user.Email.ToString()))
                                {
                                    _logger.Info("No Email Found For User " + user.NameAsString);
                                    continue;
                                }

                                _logger.Info("Sending Direct Mail to Email Id : " + user.Email);

                                var createdByOrgRoleUser = orgRolesUsers.First(x => x.UserId == user.Id);
                                var model = _emailNotificationModelsFactory.GetDirectMailActivityNotificationViewModel(user.NameAsString, campaign.Name, healthPlan.Name, campaign.CustomTags);

                                _notifier.NotifySubscribersViaEmail(NotificationTypeAlias.DirectMailActivityNotification, EmailTemplateAlias.DirectMailActivityEmailReminder, model, new string[] { user.Email.ToString() }, user.Id, createdByOrgRoleUser.Id, "Direct Mail Activity Reminder");
                            }
                        }
                        else
                        {
                            _logger.Info("No Assignment Found for Activity " + campaignActivity.Id);
                        }
                    }
                }
                else
                {
                    _logger.Info("No Activity scheduled for Today Date: " + activityDate.ToShortDateString());
                }
            }
            catch (Exception ex) { _logger.Error("Exception Message: " + ex.Message + " Stack Trace" + ex.StackTrace); }
        }
Ejemplo n.º 6
0
        public ListModelBase <CustomAppointmentsBookedModel, CustomAppointmentsBookedListModelFilter> GetCustomAppointmentsBooked(int pageNumber, int pageSize, ModelFilterBase filter, out int totalRecords)
        {
            var customFilter = filter as CustomAppointmentsBookedListModelFilter;

            customFilter = customFilter ?? new CustomAppointmentsBookedListModelFilter();

            var appFilter = new AppointmentsBookedListModelFilter
            {
                AccountId = customFilter.AccountId,
                FromDate  = customFilter.FromDate,
                ToDate    = customFilter.ToDate,
                Tag       = customFilter.Tag
            };
            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 eventPackages = _eventPackageRepository.GetbyEventIds(eventIds);
            var eventTests    = _eventTestRepository.GetByEventIds(eventIds);


            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 primaryCarePhysicians = _primaryCarePhysicianRepository.GetByCustomerIds(eventCustomers.Select(ec => ec.CustomerId).Distinct().ToArray());
            var languages             = _languageRepository.GetAll();

            return(_customAppointmentsBookedModelFactory.Create(eventCustomers, appointments, orders, model, customers, registeredbyAgent,
                                                                roles, registeredbyAgentNameIdPair, eventAppointmentChangeLogs, primaryCarePhysicians, eventPackages, eventTests, languages));
        }
Ejemplo n.º 7
0
        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));
        }
Ejemplo n.º 8
0
        public OutboundCallQueueListModel GetOutboundCallQueueUpsellAndConfirmation(OutboundCallQueueFilter filter, CallQueue callQueue, int pageSize, long criteriaId, out int totalRecords)
        {
            var callQueueCustomers = _callQueueCustomerRepository.GetCallQueueCustomerForUpsellAndConfirmation(filter, filter.PageNumber, pageSize, callQueue, criteriaId, out totalRecords);

            if (callQueueCustomers.IsNullOrEmpty())
            {
                return(null);
            }

            var eventIds    = callQueueCustomers.Where(x => x.EventId.HasValue).Select(x => x.EventId.Value).Distinct();
            var customerIds = callQueueCustomers.Where(cqc => cqc.CustomerId.HasValue && cqc.CustomerId.Value > 0).Select(cqc => cqc.CustomerId.Value).Distinct().ToArray();

            var eventCustomers = _eventCustomerRepository.GetByEventIds(eventIds);

            eventCustomers = eventCustomers.Where(ec => customerIds.Contains(ec.CustomerId));

            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 appointment = _appointmentRepository.GetByIds(eventCustomers.Where(ec => ec.AppointmentId.HasValue).Select(ec => ec.AppointmentId.Value));

            var events = _eventRepository.GetEventswithPodbyIds(eventIds).ToList();
            var hosts  = _hostRepository.GetEventHosts(eventIds).ToList();
            var pods   = _podRepository.GetPodsForEvents(eventIds);

            IEnumerable <Customer> customers = _customerRepository.GetCustomers(customerIds);

            var callQueueCustomerCalls = _callCenterCallRepository.GetCallForCallQueueCustomerList(customerIds, null);
            IEnumerable <CallCenterNotes> callCenterNotes = null;

            if (callQueueCustomerCalls != null && callQueueCustomerCalls.Any())
            {
                callCenterNotes = _callCenterNotesRepository.GetByCallIds(callQueueCustomerCalls.Select(s => s.CallId));
            }

            return(_outboundCallQueueListModelFactory.CallQueueCustomersForUpsellAndConfimration(callQueueCustomers, customers, callQueueCustomerCalls, callCenterNotes, events, hosts, pods, appointment, eventCustomers, registeredbyAgent, roles));
        }
Ejemplo n.º 9
0
        private SalesRepTerritory GetSalesRepTerritory(TerritoryEntity territoryEntity)
        {
            IEnumerable <long> organizationRoleUserIds = territoryEntity.
                                                         OrganizationRoleUserTerritory.Select(orut => orut.OrganizationRoleUserId);

            List <OrganizationRoleUser> organizationRoleUsers = _organizationRoleUserRepository.
                                                                GetOrganizationRoleUsers(organizationRoleUserIds);

            List <OrderedPair <OrganizationRoleUser, RegistrationMode> > owningUsersAndEventTypes =
                organizationRoleUsers.Select(oru => new OrderedPair <OrganizationRoleUser, RegistrationMode>
                                                 (oru, (RegistrationMode)(territoryEntity.OrganizationRoleUserTerritory.
                                                                          Single(orut => orut.OrganizationRoleUserId == oru.Id).EventTypeSetupPermission))).
                ToList();

            List <OrderedPair <long, long> > userSalesRepId =
                owningUsersAndEventTypes.Select(ouet => _organizationRoleUserRepository.
                                                GetSalesRepUser(ouet.FirstValue)).ToList();

            return(_territoryFactory.CreateSalesRepTerritory(territoryEntity,
                                                             owningUsersAndEventTypes, userSalesRepId));
        }
Ejemplo n.º 10
0
        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));
        }