public HospitalPartnerDashboardViewModel GetHospitalFacilityDashboardModel(long hospitalFacilityId) { var hospitalPartnerId = _hospitalFacilityRepository.GetHospitalPartnerId(hospitalFacilityId); HospitalPartner hospitalPartner = null; if (hospitalPartnerId > 0) { hospitalPartner = _hospitalPartnerRepository.GetHospitalPartnerforaVendor(hospitalPartnerId); } var eventIds = _hospitalFacilityRepository.GetEventIdsForHospitalFacility(hospitalFacilityId); if (eventIds.IsNullOrEmpty()) { return(new HospitalPartnerDashboardViewModel()); } var reccentContactedEventId = _hospitalPartnerCustomerRepository.GetMostRecentContactedEventForHospitalFacility(hospitalFacilityId); var recentMailedEvents = _shippingDetailRepository.GetRecentMailedHospitalFacilityEvents(hospitalFacilityId).ToList(); var recentCriticalCustomers = _eventCustomerResultRepository.GetRecentCriticalAndUrgentCustomersForHospitalFacility(hospitalFacilityId, 1, 8, hospitalPartner != null ? hospitalPartner.CriticalResultValidityPeriod : 0); var getEventIds = recentMailedEvents.Count() > 0 ? recentMailedEvents.Select(me => me.FirstValue).ToList() : new List <long>(); if (reccentContactedEventId > 0) { getEventIds.Add(reccentContactedEventId); } IEnumerable <Customer> customers = null; IEnumerable <Event> events = null; IEnumerable <Host> hosts = null; IEnumerable <CustomerResultStatusViewModel> customerResultStatusViewModels = null; if (recentCriticalCustomers != null && recentCriticalCustomers.Count() > 0) { getEventIds.AddRange(recentCriticalCustomers.Select(rcc => rcc.EventId).ToArray()); customers = _customerRepository.GetCustomers(recentCriticalCustomers.Select(rcc => rcc.CustomerId).ToArray()); customerResultStatusViewModels = _eventCustomerResultRepository.GetTestResultStatus(recentCriticalCustomers.Select(rcc => rcc.Id).ToArray()); } if (getEventIds.Count > 0) { events = _eventRepository.GetEventswithPodbyIds(getEventIds.ToArray()); hosts = _hostRepository.GetEventHosts(events.Select(e => e.Id).ToArray()); } var totalCustomers = _eventRepository.GetCustomersWithAppointmentByHospitalFacilityId(hospitalFacilityId); var customersAttended = _eventRepository.GetAttendedCustomersByHospitalFacilityId(hospitalFacilityId); var normalCustomers = _eventCustomerResultRepository.GetResultSummaryEventIdCustomersCountForHospitalFacility(hospitalFacilityId, ResultInterpretation.Normal, true, hospitalPartner != null ? hospitalPartner.NormalResultValidityPeriod : 0); var abnormalCustomers = _eventCustomerResultRepository.GetResultSummaryEventIdCustomersCountForHospitalFacility(hospitalFacilityId, ResultInterpretation.Abnormal, true, hospitalPartner != null ? hospitalPartner.AbnormalResultValidityPeriod : 0); var criticalCustomers = _eventCustomerResultRepository.GetCriticalEventIdCustomersCountForHospitalFacility(hospitalFacilityId, ResultInterpretation.Critical, true, hospitalPartner != null ? hospitalPartner.CriticalResultValidityPeriod : 0); var urgentCustomers = _eventCustomerResultRepository.GetResultSummaryEventIdCustomersCountForHospitalFacility(hospitalFacilityId, ResultInterpretation.Urgent, true, hospitalPartner != null ? hospitalPartner.CriticalResultValidityPeriod : 0); var mailedDate = _shippingDetailRepository.MailedDateForEvent(reccentContactedEventId, hospitalFacilityId); return(_hospitalPartnerViewModelFactory.Create(eventIds.Count(), totalCustomers, customersAttended, criticalCustomers, normalCustomers, abnormalCustomers, events, hosts, reccentContactedEventId, recentMailedEvents, mailedDate, recentCriticalCustomers, customers, customerResultStatusViewModels, urgentCustomers)); }