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)); }
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 ActionResult CustomerCallNotes(long customerId, long eventId = 0) { var customerCallNotes = _customerCallNotesRepository.GetCustomerNotes(customerId, true); customerCallNotes = customerCallNotes.Where(m => (m.NotesType == CustomerRegistrationNotesType.CancellationNote || m.NotesType == CustomerRegistrationNotesType.LeftWithoutScreeningNotes) || !string.IsNullOrWhiteSpace(m.Notes)); var cancelledCustomerNotes = customerCallNotes.Where(m => m.NotesType == CustomerRegistrationNotesType.CancellationNote); var eventCustomers = _eventCustomerRepository.GetbyCustomerId(customerId); var cancellationLogByEventCustomers = _eventAppointmentCancellationLogRepository.GetByEventCustomerIds(eventCustomers.Select(x => x.Id)); if (cancelledCustomerNotes.Any()) { foreach (var customerCallNote in cancelledCustomerNotes) { var cancellationNote = cancellationLogByEventCustomers.FirstOrDefault(x => x.NoteId == customerCallNote.Id); customerCallNote.ReasonName = cancellationNote != null ? ((CancelAppointmentReason)cancellationNote.ReasonId).GetDescription() : "N/A"; //var createdBy = customerCallNote.DataRecorderMetaData != null && customerCallNote.DataRecorderMetaData.DataRecorderCreator != null ? // orgRoleUsers.FirstOrDefault(x => x.FirstValue == customerCallNote.DataRecorderMetaData.DataRecorderCreator.Id) : null; //customerCallNote.CreatedBy = createdBy != null ? createdBy.SecondValue : string.Empty; } } if (eventId > 0) { customerCallNotes = customerCallNotes.Where(ccn => !ccn.EventId.HasValue || (ccn.EventId.HasValue && ccn.EventId.Value == eventId)).ToArray(); } var orders = _orderRepository.GetAllOrdersForCustomer(customerId); if (orders != null && orders.Any()) { var refundRequests = _refundRequestRepository.GeRefundRequestByOrderIds(orders.Select(oec => oec.Id).ToArray(), RefundRequestType.CustomerCancellation); if (refundRequests != null && refundRequests.Any()) { var refundRequestNotes = new List <CustomerCallNotes>(); foreach (var refundRequest in refundRequests) { var cancellationLog = cancellationLogByEventCustomers.FirstOrDefault(x => x.RefundRequestId.HasValue && x.RefundRequestId.Value == refundRequest.Id); refundRequestNotes.Add(new CustomerCallNotes { CustomerId = customerId, Notes = refundRequest.Reason, EventId = cancellationLog != null ? cancellationLog.EventId : (long?)null, ReasonName = cancellationLog != null ? ((CancelAppointmentReason)cancellationLog.ReasonId).GetDescription() : string.Empty, NotesType = CustomerRegistrationNotesType.CancellationNote, DataRecorderMetaData = new DataRecorderMetaData(refundRequest.RequestedByOrgRoleUserId, refundRequest.RequestedOn, null), }); } customerCallNotes = customerCallNotes.Concat(refundRequestNotes); } } cancellationLogByEventCustomers = cancellationLogByEventCustomers.Where(x => x.NoteId == null && x.RefundRequestId == null); if (cancellationLogByEventCustomers != null && cancellationLogByEventCustomers.Any()) { var cancellationNotesLog = new List <CustomerCallNotes>(); foreach (var cancellationLog in cancellationLogByEventCustomers) { cancellationNotesLog.Add(new CustomerCallNotes { CustomerId = customerId, EventId = cancellationLog.EventId, Notes = string.Empty, NotesType = CustomerRegistrationNotesType.CancellationNote, ReasonName = ((CancelAppointmentReason)cancellationLog.ReasonId).GetDescription(), DataRecorderMetaData = new DataRecorderMetaData(cancellationLog.CreatedBy, cancellationLog.DateCreated, null), }); } customerCallNotes = customerCallNotes.Concat(cancellationNotesLog); } if (!customerCallNotes.IsNullOrEmpty()) { customerCallNotes = customerCallNotes.OrderByDescending(x => x.DataRecorderMetaData.DateCreated); } var patientLeftNotes = customerCallNotes.Where(x => x.NotesType == CustomerRegistrationNotesType.LeftWithoutScreeningNotes); if (!patientLeftNotes.IsNullOrEmpty()) { foreach (var patientLeftNote in patientLeftNotes) { patientLeftNote.ReasonName = patientLeftNote.ReasonId.HasValue ? ((LeftWithoutScreeningReason)patientLeftNote.ReasonId.Value).GetDescription() : ""; //var createdBy = patientLeftNote.DataRecorderMetaData != null && patientLeftNote.DataRecorderMetaData.DataRecorderCreator != null ? // orgRoleUsers.FirstOrDefault(x => x.FirstValue == patientLeftNote.DataRecorderMetaData.DataRecorderCreator.Id) : null; //patientLeftNote.CreatedBy = createdBy != null ? createdBy.SecondValue : string.Empty; } } var orgRoleUserIds = customerCallNotes.Where(x => x.DataRecorderMetaData != null && x.DataRecorderMetaData.DataRecorderCreator != null).Select(x => x.DataRecorderMetaData.DataRecorderCreator.Id).ToArray(); var orgRoleUsers = _organizationRoleUserRepository.GetNameIdPairofUsers(orgRoleUserIds); foreach (var customerCallNote in customerCallNotes) { var createdBy = customerCallNote.DataRecorderMetaData != null && customerCallNote.DataRecorderMetaData.DataRecorderCreator != null? orgRoleUsers.FirstOrDefault(x => x.FirstValue == customerCallNote.DataRecorderMetaData.DataRecorderCreator.Id) : null; customerCallNote.CreatedBy = createdBy != null ? createdBy.SecondValue : string.Empty; } return(View(customerCallNotes)); }
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)); }