public ListModelBase <CallQueueViewModel, CallQueueListModelFilter> GetCallQueueList(int pageNumber, int pageSize, ModelFilterBase filter, out int totalRecords) { var callQueues = _callQueueRepository.GetCallQueueList(filter as CallQueueListModelFilter, pageNumber, pageSize, out totalRecords); if (callQueues.IsNullOrEmpty()) { return(null); } var callQueueIds = callQueues.Select(cq => cq.Id).ToArray(); var callQueueCriterias = _callQueueCriteriaRepository.GetByCallQueueIds(callQueueIds); var criterias = _criteriaRepository.GetAll(); var callQueueAssignments = _callQueueAssignmentRepository.GetByCallQueueIds(callQueueIds); var idNamePairs = _organizationRoleUserRepository.GetNameIdPairofUsers(callQueueAssignments.Select(a => a.AssignedOrgRoleUserId).ToArray()); var callQueueIdTotalCustomersInQueuePairs = _callQueueCustomerRepository.GetQueueIdTotalCustomersInQueuePairs(callQueueIds); var callQueueIdTotalCustomersPairs = _callQueueCustomerRepository.GetQueueIdTotalCustomersPairs(callQueueIds); var callQueueIdTotalCustomersContactedPairs = _callQueueCustomerRepository.GetQueueIdTotalCustomersContactedPairs(callQueueIds); return(_callQueueListModelFactory.Create(callQueues, callQueueCriterias, criterias, callQueueAssignments, idNamePairs, callQueueIdTotalCustomersInQueuePairs, callQueueIdTotalCustomersPairs, callQueueIdTotalCustomersContactedPairs)); }