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 <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 <ResponseVendorReportViewModel, ResponseVendorReportFilter> GetResponseVendorReportList(int pageNumber, int pageSize, ModelFilterBase filter, out int totalRecords) { filter = filter ?? new ResponseVendorReportFilter(); var responseVendorReportFilter = filter as ResponseVendorReportFilter ?? new ResponseVendorReportFilter(); var customerIds = _customerRepository.GetCustomersByCustomTag(filter as ResponseVendorReportFilter, pageNumber, pageSize, out totalRecords); //var customerIds = _callRepository.GetForResponseVendorReport(filter as ResponseVendorReportFilter, pageNumber, pageSize, out totalRecords); if (customerIds.IsNullOrEmpty()) { return(null); } var customerEligibilities = _customerEligibilityRepository.GetCustomerEligibilityByCustomerIdsAndYear(customerIds, DateTime.Today.Year); if (customerEligibilities.IsNullOrEmpty()) { customerEligibilities = new List <CustomerEligibility>(); } var corporateAccount = _corporateAccountRepository.GetById(((ResponseVendorReportFilter)filter).AccountId); var calls = _callRepository.GetCallsForResponseVendorReport(filter as ResponseVendorReportFilter, customerIds); var customers = customerIds.Any() ? _customerRepository.GetCustomers(customerIds.ToArray()) : new List <Customer>(); var eventCustomers = _eventCustomerRepository.GetByEventIdsOrCustomerIds(responseVendorReportFilter.StartDate, customerIds) ?? new List <EventCustomer>(); var eventIds = eventCustomers.Select(x => x.EventId).ToArray(); var events = _eventRepository.GetByIds(eventIds); var languages = _languageRepository.GetAll(); var appointmentIds = eventCustomers.Where(x => x.AppointmentId.HasValue).Select(x => x.AppointmentId.Value); var appointments = _appointmentRepository.GetByIds(appointmentIds); var eventCustomerIds = eventCustomers.Select(x => x.Id); var pcpAppointments = _pcpAppointmentRepository.GetByEventCustomerIds(eventCustomerIds); var pcpDispositions = _pcpDispositionRepository.GetByEventCustomerIds(eventCustomerIds); var eventCustomerBarriers = _barrierRepository.GetCustomerBarrierByEventCustomerIds(eventCustomerIds); var barrierIds = eventCustomerBarriers.Select(x => x.BarrierId).ToArray(); var barriers = _barrierRepository.GetByIds(barrierIds); 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 campaignTypeIds = chaseCampaigns.Select(x => x.ChaseCampaignTypeId).ToArray(); var campaignTypes = _chaseCampaignTypeRepository.GetByIds(campaignTypeIds); var eventAppointmentCancellatonLogs = _eventAppointmentCancellationLogRepository.GetByEventCustomerIds(eventCustomerIds); var resultPostedToPlanFileName = Path.Combine(_settings.ResultPostedToPlanPath, string.Format("resultPostedto_{0}.xml", corporateAccount.Tag)); var resultPosted = _resultPdfPostedSerializer.Deserialize(resultPostedToPlanFileName); var resultPostedCustomers = resultPosted != null ? resultPosted.Customer : new List <CustomerInfo>(); return(_responseVendorReportFactory.Create(customers, languages, eventCustomers, appointments, events, calls, pcpAppointments, pcpDispositions, eventCustomerBarriers, barriers, chaseOutbounds, customerChaseCampaigns, chaseCampaigns, campaignTypes, eventAppointmentCancellatonLogs, resultPostedCustomers, customerEligibilities)); }