Ejemplo n.º 1
0
        private OutboundCallQueueListModel OutboundCallQueueListModel(IEnumerable <CallQueueCustomer> callQueueCustomers, string customerTags)
        {
            var customerIds = callQueueCustomers.Where(cqc => cqc.CustomerId.HasValue && cqc.CustomerId.Value > 0).Select(cqc => cqc.CustomerId.Value).ToArray();
            IEnumerable <Customer> customers = null;

            if (customerIds.Any())
            {
                customerIds = customerIds.Distinct().ToArray();
                customers   = _customerRepository.GetCustomers(customerIds);
            }

            var prospectCustomers = _prospectCustomerRepository.GetProspectCustomersByCustomerIds(customerIds);

            var callQueueCustomerCalls = _callCenterCallRepository.GetCallForHealtPlanCallQueueCustomer(customerIds, customerTags);

            IEnumerable <CallCenterNotes> callCenterNotes = null;

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

            var corporateCustomTags = _corporateCustomerCustomTagRepository.GetByCustomerIds(customerIds);

            return(_outboundCallQueueListModelFactory.SystemGeneratedCallQueueCustomers(callQueueCustomers, customers, prospectCustomers, callQueueCustomerCalls, callCenterNotes, null, null, corporateCustomTags));
        }
Ejemplo n.º 2
0
        public OutboundCallQueueListModel GetOutboundCallQueueList(long callQueueId, long assignedToOrgRoleUserId, int pageNumber, int pageSize, out int totalRecords)
        {
            var callQueueCustomers = _callQueueCustomerRepository.GetCallQueueCustomers(callQueueId, assignedToOrgRoleUserId, pageNumber, pageSize, out totalRecords);

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

            var customerIds = callQueueCustomers.Where(cqc => cqc.CustomerId.HasValue && cqc.CustomerId.Value > 0).Select(cqc => cqc.CustomerId.Value).ToArray();
            IEnumerable <Customer> customers = null;

            if (customerIds.Any())
            {
                customers = _customerRepository.GetCustomers(customerIds);
            }

            var prospectCustomerIds = callQueueCustomers.Where(cqc => cqc.ProspectCustomerId.HasValue && cqc.ProspectCustomerId.Value > 0).Select(cqc => cqc.ProspectCustomerId.Value).ToArray();//&& !cqc.CustomerId.HasValue

            var prospectCustomers = _prospectCustomerRepository.GetProspectCustomers(prospectCustomerIds);


            var prospectCustomerNotes = _customerCallNotesRepository.GetProspectCustomerNotes(prospectCustomers.Select(pc => pc.Id).ToArray());

            var callQueueCriterias = _callQueueCriteriaRepository.GetAllByCallQueueId(callQueueId);
            var criterias          = _criteriaRepository.GetAll();


            var callQueueCustomerCalls                    = _callQueueCustomerCallRepository.GetByCallQueueCustomerIds(callQueueCustomers.Select(cqc => cqc.Id).ToArray());
            IEnumerable <Call>            calls           = null;
            IEnumerable <CallCenterNotes> callCenterNotes = null;

            if (callQueueCustomerCalls != null && callQueueCustomerCalls.Any())
            {
                var callIds = callQueueCustomerCalls.Select(cqcc => cqcc.CallId).ToArray();
                calls           = _callCenterCallRepository.GetByIds(callIds);
                callCenterNotes = _callCenterNotesRepository.GetByCallIds(callIds);
            }
            var idNamePair = GetIdNamePairs(prospectCustomerNotes);

            return(_outboundCallQueueListModelFactory.Create(callQueueCustomers, customers, prospectCustomers, callQueueCriterias, criterias, callQueueCustomerCalls, calls, callCenterNotes, prospectCustomerNotes, idNamePair));
        }
Ejemplo n.º 3
0
        public ListModelBase <HourlyOutreachCallReportModel, HourlyOutreachCallReportModelFilter> GetOutreachCallReport(int pageNumber, int pageSize, ModelFilterBase filter, out int totalRecords)
        {
            var calls = _callCenterCallRepository.GetOutreachCallQueueCustomer(filter as OutreachCallReportModelFilter, pageNumber, pageSize, out totalRecords);

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

            var customerIds = calls.Select(c => c.CalledCustomerId).ToArray();

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

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

            var callQueueIds = calls.Where(x => x.CallQueueId.HasValue).Select(x => x.CallQueueId.Value).ToArray();

            var callQueues = _callQueueRepository.GetByIds(callQueueIds, false, true);

            var customers = _customerRepository.GetCustomers(customerIds);

            var customerTags = _corporateCustomerCustomTagRepository.GetByCustomerIds(customerIds);

            var eventIds = calls.Where(x => x.EventId > 0).Select(x => x.EventId);

            var events = _eventRepository.GetEventswithPodbyIds(eventIds);

            var organisationRoleIds = calls.Select(c => c.CreatedByOrgRoleUserId).ToArray();

            var callIds = calls.Select(c => c.Id).ToArray();

            EventBasicInfoListModel eventBasicInfoListModel = null;
            List <EventCustomer>    eventCusomters          = null;
            List <Appointment>      appointments            = null;
            IEnumerable <OrderedPair <long, string> > registeredbyAgentNameIdPair = null;

            if (events != null)
            {
                eventBasicInfoListModel = _eventBasicInfoListHelper.EventBasicInfoListForCallQueue(events);
            }

            if (events != null && !customerIds.IsNullOrEmpty())
            {
                eventCusomters = _eventCustomerRepository.GetByCustomerIds(customerIds).Where(s => eventIds.Contains(s.EventId)).ToList();
            }

            if (!eventCusomters.IsNullOrEmpty())
            {
                var appointmentIds = eventCusomters.Where(x => x.AppointmentId.HasValue).Select(x => x.AppointmentId.Value);
                appointments = _appointmentRepository.GetByIds(appointmentIds).ToList();
            }

            if (organisationRoleIds != null && !organisationRoleIds.IsNullOrEmpty())
            {
                registeredbyAgentNameIdPair = _organizationRoleUserRepository.GetNameIdPairofUsers(organisationRoleIds).ToArray();
            }

            var dispositionNotes = _callCenterNotesRepository.GetByCallIds(callIds.ToArray());

            var orderedPairsCustomersShippingDetails = _shippingDetailRepository.GetShippingDetailsIdCustomerId(customerIds);

            var customersShippingDetails   = _shippingDetailRepository.GetShippingDetailsForCustomerIds(customerIds);
            var customerShippingAddressIds = customersShippingDetails.Select(x => x.ShippingAddress.Id).ToList();
            var customerAddress            = _addressRepository.GetAddresses(customerShippingAddressIds);

            return(_outreachCallReportListModelFactory.CreateHourlyModel(customers, customerTags, calls, eventCusomters, eventBasicInfoListModel, appointments, registeredbyAgentNameIdPair, dispositionNotes, orderedPairsCustomersShippingDetails,
                                                                         customersShippingDetails, customerAddress, callQueues, customerEligibilities));
        }