public IEnumerable <TestUnabletoScreenViewModel> GetUnabletoScreenView(IEnumerable <long> eventCustomerResultIds) { using (var adapter = PersistenceLayer.GetDataAccessAdapter()) { var linqMetaData = new LinqMetaData(adapter); var entities = (from cest in linqMetaData.CustomerEventScreeningTests join ceus in linqMetaData.CustomerEventUnableScreenReason on cest.CustomerEventScreeningTestId equals ceus.CustomerEventScreeningTestId join cets in linqMetaData.CustomerEventTestState on cest.CustomerEventScreeningTestId equals cets.CustomerEventScreeningTestId where eventCustomerResultIds.Contains(cest.EventCustomerResultId) select new { cest.EventCustomerResultId, cest.TestId, cets.TechnicianNotes, cets.ConductedByOrgRoleUserId, ceus.TestUnableScreenReasonId }).ToArray(); var orgRoleUserIds = entities.Where(e => e.ConductedByOrgRoleUserId.HasValue).Select(e => e.ConductedByOrgRoleUserId.Value).ToArray(); var userNameIdpairs = _organizationRoleUserRepository.GetNameIdPairofUsers(orgRoleUserIds); var unableToScreenReasons = (from tus in linqMetaData.TestUnableScreenReason join l in linqMetaData.Lookup on tus.UnableScreenReasonId equals l.LookupId select new { tus.TestUnableScreenReasonId, l.DisplayName }).ToArray(); return(entities.Select(e => new TestUnabletoScreenViewModel { EventCustomerResultId = e.EventCustomerResultId, TechnicianNotes = e.TechnicianNotes, TestId = e.TestId, ConductedBy = e.ConductedByOrgRoleUserId.HasValue ? userNameIdpairs.Where(p => p.FirstValue == e.ConductedByOrgRoleUserId.Value).Select(p => p.SecondValue).Single() : "", Reason = e.TestUnableScreenReasonId.HasValue ? unableToScreenReasons.Where(usr => usr.TestUnableScreenReasonId == e.TestUnableScreenReasonId).Select(usr => usr.DisplayName).Single() : "" })); } }
//Should this method be part of IEventReportingService. private EventVolumeListModel GetEventVolumeModel(IEnumerable <Event> events) { if (events.IsNullOrEmpty()) { return(null); } var eventIds = events.Select(e => e.Id).ToList(); var hosts = _hostRepository.GetEventHosts(eventIds); var eventAppointmentStatsModels = _eventAppointmentStatsService.Get(events); var pods = _podRepository.GetPodsForEvents(eventIds); var primaryPhysicians = _physicianEventAssignmentRepository.GetPrimaryPhysicianForEvents(eventIds); var overReadPhysicians = _physicianEventAssignmentRepository.GetOverReadPhysicianForEvents(eventIds); var eventIdHospitalPartnerIdPairs = _hospitalPartnerRepository.GetEventAndHospitalPartnerOrderedPair(eventIds); //var eventIdCorporateAccountPairs = _corporateAccountRepository.GetEventIdCorporateAccountPairForSponsoredBy(eventIds); var organizationIds = new List <long>(); organizationIds.AddRange(eventIdHospitalPartnerIdPairs.Select(ehp => ehp.SecondValue).Distinct().ToArray()); //organizationIds.AddRange(eventIdCorporateAccountPairs.Select(ehp => ehp.SecondValue).Distinct().ToArray()); var organizations = _organizationRepository.GetOrganizations(organizationIds.ToArray()); var eventIdHospitalPartnerNamePairs = (from ehp in eventIdHospitalPartnerIdPairs join org in organizations on ehp.SecondValue equals org.Id select new OrderedPair <long, string>(ehp.FirstValue, org.Name)).ToArray(); var eventIdCorporateNamePairs = _corporateAccountRepository.GetEventIdCorporateAccountNamePair(eventIds); var customersAttended = _eventRepository.GetAttendedCustomers(eventIds); var eventStaffCollection = _eventStaffAssignmentRepository.GetForEvents(eventIds); IEnumerable <OrderedPair <long, string> > staffIdNamePairs = null; if (eventStaffCollection != null && eventStaffCollection.Any()) { var orgRoleUserIds = eventStaffCollection.Select(esc => (esc.ActualStaffOrgRoleUserId != null ? esc.ActualStaffOrgRoleUserId.Value : esc.ScheduledStaffOrgRoleUserId)).ToArray(); staffIdNamePairs = _organizationRoleUserRepository.GetNameIdPairofUsers(orgRoleUserIds); } return(_eventVolumeFactory.Create(events, hosts, pods, eventAppointmentStatsModels, primaryPhysicians, overReadPhysicians, eventIdHospitalPartnerNamePairs, customersAttended, eventIdCorporateNamePairs, eventStaffCollection, staffIdNamePairs)); }
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)); }
private IEnumerable <CampaignActivityAssignmentEditModel> GetActivityAssignment(IEnumerable <CampaignActivityAssignment> activityAssignments, IEnumerable <CampaignActivityAssignment> campaignActivityAssignment, CampaignActivity activity) { var activityAssigmentList = new List <CampaignActivityAssignmentEditModel>(); if (activityAssignments != null && campaignActivityAssignment.Any()) { var assignedUserNamePair = _organizationRoleUserRepository.GetNameIdPairofUsers( activityAssignments.Select(x => x.AssignedToOrgRoleUserId).ToArray()); activityAssigmentList.AddRange(assignedUserNamePair.Select(assignment => new CampaignActivityAssignmentEditModel { AssignedOrgRoleUserId = assignment.FirstValue, Name = assignment.SecondValue, CampaignActivityId = activity.Id })); } return(activityAssigmentList); }
private IEnumerable <EventStaffBasicInfoModel> GetStaffBasicModels(IEnumerable <OrderedPair <long, long> > orgRoleUserIdEventRoles, IEnumerable <StaffEventRole> eventRoles, long podId) { IEnumerable <OrderedPair <long, string> > nameIdPairs = _organizationRoleUserRepository.GetNameIdPairofUsers(orgRoleUserIdEventRoles.Select(x => x.FirstValue).ToArray()); IEnumerable <OrderedPair <long, string> > idEmployeeIdPairs = _systemUserInfoRepository.GetIdEmployeeIdPairofUsers(orgRoleUserIdEventRoles.Select(x => x.FirstValue).ToArray()); return(orgRoleUserIdEventRoles.Select(oru => { var fullName = nameIdPairs.Where(x => x.FirstValue == oru.FirstValue).First().SecondValue; var idEmployeeIdPair = idEmployeeIdPairs.FirstOrDefault(x => x.FirstValue == oru.FirstValue); return new EventStaffBasicInfoModel { PodId = podId, ScheduledStaffOrgRoleUserId = oru.FirstValue, FullName = fullName, EventRoleId = oru.SecondValue, EventRole = eventRoles.Where(er => er.Id == oru.SecondValue).Select(er => er.Name).First(), EmployeeId = idEmployeeIdPair != null ? idEmployeeIdPair.SecondValue : "" }; }).ToArray()); }
public ActionResult Edit(long id) { Session[RefundRequest.ProcessRequestId] = null; // Used for gift certificate var request = ((IRefundRequestRepository)_repository).Get(id); var model = Mapper.Map <RefundRequest, RefundRequestResultEditModel>(request); var order = _orderRepository.GetOrder(request.OrderId); var productsInOrder = _electronicProductRepository.GetProductIdsForOrderItems(order.OrderDetails .Where(od => od.OrderItemStatus.OrderStatusState == OrderStatusState.FinalSuccess && od.DetailType == OrderItemType.ProductItem) .Select(od => od.OrderItemId).ToArray()); var cancellationReason = "N/A"; if (model.RefundType == RefundRequestType.CustomerCancellation) { var appointmentCancellationLogs = _eventAppointmentCancellationLogRepository.GetByEventIdCustomerId(model.EventId, model.CustomerId); if (!appointmentCancellationLogs.IsNullOrEmpty()) { var appointmentCancellationLog = appointmentCancellationLogs.FirstOrDefault(x => x.DateCreated > request.RequestedOn.AddMinutes(-3) && x.DateCreated < request.RequestedOn.AddMinutes(3)); if (appointmentCancellationLog != null) { cancellationReason = ((CancelAppointmentReason)appointmentCancellationLog.ReasonId).GetDescription(); } } } model.CancellationReason = cancellationReason; var products = _electronicProductRepository.GetAllProducts(); model.OfferFreeProduct = Mapper.Map <IEnumerable <Product>, IEnumerable <ProductstoOfferModel> >(products); if (productsInOrder != null && productsInOrder.Count() > 0) { foreach (var product in productsInOrder) { var temp = model.OfferFreeProduct.Where(p => p.ProductId == product.SecondValue).FirstOrDefault(); var orderDetail = order.OrderDetails.Where(od => od.OrderItemId == product.FirstValue).FirstOrDefault(); temp.ProductPriceinOrder = orderDetail.Price; temp.OrderItemId = orderDetail.OrderItemId; } } CompleteEditModel(model, request.CustomerId); model.PaymentEditModel.Amount = model.RequestedRefundAmount; var nameIdpair = _orgRoleUserRepository.GetNameIdPairofUsers(new[] { request.RequestedByOrgRoleUserId }).FirstOrDefault(); model.RequestedBy = nameIdpair != null ? nameIdpair.SecondValue : string.Empty; return(View(model)); }
public ListModelBase <CustomAppointmentsBookedModel, CustomAppointmentsBookedListModelFilter> GetCustomAppointmentsBooked(int pageNumber, int pageSize, ModelFilterBase filter, out int totalRecords) { var customFilter = filter as CustomAppointmentsBookedListModelFilter; customFilter = customFilter ?? new CustomAppointmentsBookedListModelFilter(); var appFilter = new AppointmentsBookedListModelFilter { AccountId = customFilter.AccountId, FromDate = customFilter.FromDate, ToDate = customFilter.ToDate, Tag = customFilter.Tag }; 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 eventPackages = _eventPackageRepository.GetbyEventIds(eventIds); var eventTests = _eventTestRepository.GetByEventIds(eventIds); 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 primaryCarePhysicians = _primaryCarePhysicianRepository.GetByCustomerIds(eventCustomers.Select(ec => ec.CustomerId).Distinct().ToArray()); var languages = _languageRepository.GetAll(); return(_customAppointmentsBookedModelFactory.Create(eventCustomers, appointments, orders, model, customers, registeredbyAgent, roles, registeredbyAgentNameIdPair, eventAppointmentChangeLogs, primaryCarePhysicians, eventPackages, eventTests, languages)); }
public ListModelBase <CallQueueSchedulingReportModel, CallQueueSchedulingReportFilter> GetHealthPlanCallQueueReport(int pageNumber, int pageSize, ModelFilterBase filter, out int totalRecords) { var callDetails = _callQueueCustomerCallRepository.GetHealthPlanCallQueueCallReports(filter as CallQueueSchedulingReportFilter, pageNumber, pageSize, out totalRecords); if (callDetails == null || !callDetails.Any()) { return(null); } var customerIds = callDetails.Select(c => c.CalledCustomerId).ToArray(); var customers = _customerRepository.GetCustomers(customerIds); var customerTags = _corporateCustomerCustomTagRepository.GetByCustomerIds(customerIds); var eventIds = callDetails.Where(x => x.EventId > 0).Select(x => x.EventId); var events = _eventRepository.GetEventswithPodbyIds(eventIds); var organisationRoleIds = callDetails.Select(c => c.CreatedByOrgRoleUserId).ToArray(); IEnumerable <OrderedPair <long, string> > registeredbyAgentNameIdPair = null; if (organisationRoleIds != null && !organisationRoleIds.IsNullOrEmpty()) { registeredbyAgentNameIdPair = _organizationRoleUserRepository.GetNameIdPairofUsers(organisationRoleIds).ToArray(); } var healthPlanIds = callDetails.Select(x => x.HealthPlanId).ToArray(); var organizations = _organizationRepository.GetOrganizations(healthPlanIds); var callQueue = _callQueueRepository.GetByIds(callDetails.Select(x => x.CallQueueId), isManual: false, isHealthPlan: true); return(_healthPlanCallQueueReportListModelFactory.Create(callDetails, customers, customerTags, registeredbyAgentNameIdPair, events, organizations, callQueue)); }
public ListModelBase <KynCustomerModel, KynCustomerModelFilter> GetKynCustomerReport(int pageNumber, int pageSize, ModelFilterBase filter, out int totalRecords) { var kynfilter = filter as KynCustomerModelFilter; var eventCustomers = _eventCustomerRepository.GetKynEventCustomers(pageNumber, pageSize, kynfilter, out totalRecords); if (eventCustomers.IsNullOrEmpty()) { return(new KynCustomerListModel()); } var eventIds = eventCustomers.Select(ec => ec.EventId).Distinct().ToArray(); var eventCustomerIds = eventCustomers.Select(ec => ec.Id).Distinct().ToArray(); var healthAssessments = _healthAssessmentRepository.GetCustomerHealthInfoByEventCustomerIds(eventCustomerIds); var healthAssessmentsOrgRoleUserIds = healthAssessments.Where(ha => ha.DataRecorderMetaData != null && ha.DataRecorderMetaData.DataRecorderCreator != null).Select(ha => ha.DataRecorderMetaData.DataRecorderCreator.Id).ToList(); var healthAssessmentsbyAgentNameIdPair = _organizationRoleUserRepository.GetNameIdPairofUsers(healthAssessmentsOrgRoleUserIds.ToArray()).ToArray(); var healthAssessmentModifiedByAgent = _organizationRoleUserRepository.GetOrganizationRoleUsers(healthAssessmentsOrgRoleUserIds.ToArray()).ToArray(); var customers = _customerRepository.GetCustomers(eventCustomers.Select(ec => ec.CustomerId).Distinct().ToArray()); var events = _eventRepository.GetEventswithPodbyIds(eventIds); var pods = _podRepository.GetPodsForEvents(eventIds); var appointments = _appointmentRepository.GetAppointmentsForEvents(eventIds); var showKyn = kynfilter != null && kynfilter.ShowOnlyKyn; var orgRoleUserIds = eventCustomers.Where(ec => ec.DataRecorderMetaData != null && ec.DataRecorderMetaData.DataRecorderCreator != null).Select(ec => ec.DataRecorderMetaData.DataRecorderCreator.Id).ToList(); var registeredbyAgent = _organizationRoleUserRepository.GetOrganizationRoleUsers(orgRoleUserIds); var roles = _roleRepository.GetAll(); var registeredbyAgentNameIdPair = _organizationRoleUserRepository.GetNameIdPairofUsers(orgRoleUserIds.ToArray()).ToArray(); var customerIds = customers.Select(c => c.CustomerId).ToArray(); var customTags = _customTagRepository.GetByCustomerIds(customerIds); var corporateAccountNames = _corporateAccountRepository.GetEventIdCorporateAccountNamePair(eventIds); var hospitalPartnerNames = _hospitalPartnerRepository.GetEventIdHospitalPartnerNamePair(eventIds); return(_kynCustomerReportingFactory.Create(eventCustomers, events, customers, appointments, pods, showKyn, registeredbyAgent, roles, registeredbyAgentNameIdPair, customTags, corporateAccountNames, hospitalPartnerNames, healthAssessments, healthAssessmentsbyAgentNameIdPair, healthAssessmentModifiedByAgent)); }
public IEnumerable <ShippingDetailViewModel> GetShippingDetailsForPopup(long orderDetailId) { var shippingDetails = _shippingDetailRepository.GetShippingDetailsForOrder(orderDetailId); var nameOrgRoleUserIdPairForShippedByName = _organizationRoleUserRepository.GetNameIdPairofUsers(shippingDetails.Where(x => x.ShippedByOrgRoleUserId.HasValue).Select(x => x.ShippedByOrgRoleUserId.Value).ToArray()); return((from shippingDetail in shippingDetails let shippedByName = nameOrgRoleUserIdPairForShippedByName.FirstOrDefault(x => x.FirstValue == shippingDetail.ShippedByOrgRoleUserId) select new ShippingDetailViewModel { Status = shippingDetail.Status, ShipmentDate = shippingDetail.ShipmentDate, ActualPrice = shippingDetail.ActualPrice, ShippingOption = shippingDetail.ShippingOption, ShippedByName = shippedByName == null ? null : shippedByName.SecondValue }).ToList()); }
public ActionResult EditHospitalPartnerCustomer(long eventId, long customerId) { var customerName = _organizationRoleUserRepository.GetNameIdPairofUsers(new[] { customerId }).First().SecondValue; var model = new HospitalPartnerCustomerEditModel { CustomerName = customerName, CustomerId = customerId, EventId = eventId }; var pcp = _primaryCarePhysicianRepository.Get(customerId); if (pcp != null) { model.PrimaryCarePhysicianName = pcp.Name.FullName; } return(View(model)); }
public IEnumerable <MedicationUploadViewModel> GetUploadList(int pageNumber, int pageSize, MedicationUploadListModelFilter filter, out int totalRecords) { var list = _medicationUploadRepository.GetUploadList(pageNumber, pageSize, filter, out totalRecords).ToArray(); var uploadByIds = list.Select(c => c.UploadedBy).Distinct().ToArray(); IEnumerable <OrderedPair <long, string> > uploadedbyAgentNameIdPair = null; if (uploadByIds != null && uploadByIds.Any()) { uploadedbyAgentNameIdPair = _organizationRoleUserRepository.GetNameIdPairofUsers(uploadByIds).ToArray(); } foreach (var rapsUploadModel in list) { if (uploadedbyAgentNameIdPair != null && uploadedbyAgentNameIdPair.Any()) { rapsUploadModel.UploadedName = uploadedbyAgentNameIdPair.Single(ap => ap.FirstValue == rapsUploadModel.UploadedBy).SecondValue; } } return(list); }
public PayPeriodListModel Get(PayPeriodFilter filter, int pageNumber, int pageSize, out int totalRecords) { var payPeriod = _payPeriodRepository.GetByFilter(filter, pageNumber, pageSize, out totalRecords); var payPeriodCritirieas = _payPeriodCriteriaRepository.GetByPayPeriodId(payPeriod.Select(x => x.Id).ToArray()); var list = new List <long>(); list.AddRange(payPeriod.Select(x => x.CreatedBy)); list.AddRange(payPeriod.Where(x => x.ModifiedBy.HasValue).Select(x => x.ModifiedBy.Value)); var userNamePair = _organizationRoleUserRepository.GetNameIdPairofUsers(list.ToArray()); var listModel = new PayPeriodListModel(); var collection = _payPeriodFactory.CreateViewModel(payPeriod, payPeriodCritirieas, userNamePair); collection = SetActivePayPeriod(collection); listModel.Collection = collection; listModel.Filter = filter; return(listModel); }
public ListModelBase <EventArchiveStatsViewModel, EventArchiveStatsFilter> GetEventArchiveStats(int pageNumber, int pageSize, ModelFilterBase filter, out int totalRecords) { filter = filter ?? new EventArchiveStatsFilter(); var resultArchives = _resultArchiveUploadRepository.GetForEventArchiveStatsReport(filter as EventArchiveStatsFilter, pageNumber, pageSize, out totalRecords); if (resultArchives == null || !resultArchives.Any()) { return(null); } var fileIds = resultArchives.Where(r => r.FileId.HasValue).Select(r => r.FileId.Value).ToArray(); var files = _fileRepository.GetByIds(fileIds); var events = _eventRepository.GetEventswithPodbyIds(resultArchives.Select(r => r.EventId).ToArray()); var orgRoleUserIds = resultArchives.Select(r => r.UploadedByOrgRoleUserId).ToArray(); var userIdNamePairs = _organizationRoleUserRepository.GetNameIdPairofUsers(orgRoleUserIds); var pods = _podRepository.GetPodsForEvents(events.Select(e => e.Id).ToArray()); return(_eventArchiveStatsFactory.Create(resultArchives, events, files, pods, userIdNamePairs)); }
public CallUploadListModel GetCallUploadDetails(int pageNumber, int pageSize, CallUploadListModelFilter filter, out int totalRecords) { var callUploads = _callUploadRepository.GetByFilter(pageNumber, pageSize, filter, out totalRecords); if (callUploads == null || !callUploads.Any()) { return(null); } var successfileIds = callUploads.Select(s => s.FileId).ToArray(); var failedfileIds = callUploads.Where(x => x.LogFileId.HasValue).Select(s => s.LogFileId.Value).ToArray(); var fileIds = successfileIds.Concat(failedfileIds).ToArray(); IEnumerable <FileModel> fileModels = null; if (fileIds != null && fileIds.Any()) { var files = _fileRepository.GetByIds(fileIds); if (files != null && files.Any()) { fileModels = GetFileModelFromFile(files, _mediaRepository.GetCallUploadMediaFileLocation()); } } var callUploadByIds = callUploads.Select(c => c.UploadedBy).ToArray(); IEnumerable <OrderedPair <long, string> > uploadedbyAgentNameIdPair = null; if (callUploadByIds != null && callUploadByIds.Any()) { uploadedbyAgentNameIdPair = _organizationRoleUserRepository.GetNameIdPairofUsers(callUploadByIds).ToArray(); } return(_callUploadListModelFactory.Create(fileModels, callUploads, uploadedbyAgentNameIdPair)); }
public ListModelBase <HealthPlanCallQueueViewModel, HealthPlanCallQueueListModelFilter> GetHealthPlanCallQueueList(int pageNumber, int pageSize, ModelFilterBase filter, out int totalRecords) { var assignmentFilter = filter as HealthPlanCallQueueListModelFilter ?? new HealthPlanCallQueueListModelFilter(); var healthPlanCallQueuesCriteria = _healthPlanCallQueueCriteriaRepository.GetHealthPlanCallQueueCriteria(filter as HealthPlanCallQueueListModelFilter, pageNumber, pageSize, out totalRecords); if (healthPlanCallQueuesCriteria == null && !healthPlanCallQueuesCriteria.Any()) { totalRecords = 0; return(null); } var callQueueIds = healthPlanCallQueuesCriteria.Select(cq => cq.CallQueueId).ToArray(); var healthPlanIds = healthPlanCallQueuesCriteria.Where(x => x.HealthPlanId.HasValue).Select(s => s.HealthPlanId.Value).ToArray(); IEnumerable <CorporateAccount> healthPlans = null; if (healthPlanIds != null && healthPlanIds.Any()) { healthPlans = _corporateAccountRepository.GetByIds(healthPlanIds); } IEnumerable <CallQueue> healthPlanCallQueues = null; if (callQueueIds != null && callQueueIds.Any()) { healthPlanCallQueues = _callQueueRepository.GetByIds(callQueueIds, false, true); } var assignOrgRoleIds = healthPlanCallQueuesCriteria.Select(a => a.DataRecorderMetaData.DataRecorderCreator.Id).Distinct().ToArray(); var modifiedBy = healthPlanCallQueuesCriteria.Where(x => x.DataRecorderMetaData.DataRecorderModifier != null).Select(a => a.DataRecorderMetaData.DataRecorderModifier.Id).Distinct().ToArray(); if (modifiedBy != null && modifiedBy.Any()) { assignOrgRoleIds = assignOrgRoleIds.Concat(modifiedBy).ToArray(); } var criteriaIds = healthPlanCallQueuesCriteria.Select(s => s.Id).ToArray(); IEnumerable <HealthPlanCriteriaAssignment> healthPlanCriteriaAssignment = null; IEnumerable <HealthPlanCriteriaTeamAssignment> healthPlanCriteriaTeamAssignment = null; var campaignIds = healthPlanCallQueuesCriteria.Where(s => s.CampaignId.HasValue).Select(x => x.CampaignId.Value).ToArray(); var campaigns = _campaignRepository.GetByIds(campaignIds); if (criteriaIds != null && criteriaIds.Any()) { healthPlanCriteriaAssignment = _healthPlanCriteriaAssignmentRepository.GetByCriteriaIds(criteriaIds); healthPlanCriteriaTeamAssignment = _healthPlanCriteriaTeamAssignmentRepository.GetByCriteriaIds(criteriaIds); if (healthPlanCriteriaAssignment != null && healthPlanCriteriaAssignment.Any()) { var assignAssignmentRoleUserIds = healthPlanCriteriaAssignment.Select(s => s.AssignedToOrgRoleUserId).Distinct().ToArray(); if (assignAssignmentRoleUserIds != null && assignAssignmentRoleUserIds.Any()) { assignOrgRoleIds = assignOrgRoleIds.Concat(assignAssignmentRoleUserIds).ToArray(); } var assignmentBy = healthPlanCriteriaAssignment.Select(s => s.CreatedBy).Distinct().ToArray(); if (assignmentBy.Any()) { assignOrgRoleIds = assignOrgRoleIds.Concat(assignmentBy).ToArray(); } } } IEnumerable <OrderedPair <long, string> > teamIdNamePairs = null; if (!healthPlanCriteriaTeamAssignment.IsNullOrEmpty()) { teamIdNamePairs = _callCenterTeamRepository.GetIdNamePairOfTeams(healthPlanCriteriaTeamAssignment.Select(x => x.TeamId).ToArray()); var assignmentBy = healthPlanCriteriaTeamAssignment.Select(s => s.CreatedBy).Distinct().ToArray(); if (assignmentBy.Any()) { assignOrgRoleIds = assignOrgRoleIds.Concat(assignmentBy).ToArray(); } } assignOrgRoleIds = assignOrgRoleIds.Distinct().ToArray(); var agentIdNamePairs = _organizationRoleUserRepository.GetNameIdPairofUsers(assignOrgRoleIds); var criteriaCustomerCountPairs = new List <OrderedPair <long, long> >(); if (assignmentFilter.ShowAssignmentMetaData) { foreach (var criteria in healthPlanCallQueuesCriteria) { var count = _customerCallQueueCallAttemptService.CustomerCountForHealthPlanCriteria(criteria, healthPlanCallQueues); criteriaCustomerCountPairs.Add(new OrderedPair <long, long>(criteria.Id, count)); } } var criteriaDirectMailDates = _healthPlanCriteriaDirectMailService.GetDirectMailDatesByCriteriaIds(criteriaIds); return(_callQueueListModelFactory.CreateHealthPlanCallQueueList(healthPlanCallQueuesCriteria, agentIdNamePairs, healthPlanCallQueues, healthPlans, healthPlanCriteriaAssignment, campaigns, healthPlanCriteriaTeamAssignment, teamIdNamePairs, criteriaCustomerCountPairs, criteriaDirectMailDates, assignmentFilter.ShowAssignmentMetaData)); }
public ActionResult Index(ResultArchiveUploadListModelFilter filter, int pageNumber = 1) { var model = new ResultArchiveUploadListModel(); try { int totalRecords; var resultArchives = _resultArchiveUploadRepository.GetByFilter(filter, pageNumber, _pageSize, out totalRecords); if (resultArchives != null && resultArchives.Count() > 0) { var fileIds = resultArchives.Where(r => r.FileId.HasValue).Select(r => r.FileId.Value).ToArray(); var files = _fileRepository.GetByIds(fileIds); var events = _eventRepository.GetEventswithPodbyIds(resultArchives.Select(r => r.EventId).ToArray()); var orgRoleUserIds = resultArchives.Select(r => r.UploadedByOrgRoleUserId).ToArray(); var userIdNamePairs = _organizationRoleUserRepository.GetNameIdPairofUsers(orgRoleUserIds); var pods = _podRepository.GetPodsForEvents(events.Select(e => e.Id).ToArray()); model.ResultUploads = AutoMapper.Mapper.Map <IEnumerable <ResultArchive>, IEnumerable <ResultArchiveUploadViewModel> >(resultArchives); foreach (var upload in model.ResultUploads) { var theEvent = events.Where(e => e.Id == upload.EventId).SingleOrDefault(); var eventPods = pods.Where(p => theEvent.PodIds.Contains(p.Id)).ToArray(); upload.EventDate = theEvent.EventDate; upload.EventName = theEvent.Name; upload.PodName = string.Join(", ", eventPods.Select(ep => ep.Name)); var userIdNamepair = userIdNamePairs.Where(p => p.FirstValue == resultArchives.Where(r => r.Id == upload.Id).Select(r => r.UploadedByOrgRoleUserId).SingleOrDefault()).SingleOrDefault(); if (userIdNamepair != null) { upload.UploadedBy = userIdNamepair.SecondValue; } if (upload.File == null) { continue; } var file = files.Where(f => f.Id == upload.File.Id).SingleOrDefault(); if (file != null) { upload.File = file; } } } if (filter == null) { filter = new ResultArchiveUploadListModelFilter(); } model.Filter = filter; var currentAction = ControllerContext.RouteData.Values["action"].ToString(); Func <int, string> urlFunc = pn => Url.Action(currentAction, new { pageNumber = pn, filter.EventId, filter.FromEventDate, filter.FromUploadDate, filter.ToEventDate, filter.ToUploadDate, filter.ResultArchiveUploadStatus, filter.UploadedBy, filter.Pod }); model.PagingModel = new PagingModel(pageNumber, _pageSize, totalRecords, urlFunc); return(View(model)); } catch (Exception) { return(View(model)); } }
public ListModelBase <ProspectCustomerBasicInfoModel, ProspectCustomerListModelFilter> GetAbandonedCustomers(int pageNumber, int pageSize, ModelFilterBase filter, out int totalRecords) { var modelFilter = filter as ProspectCustomerListModelFilter; if (modelFilter.AgentOrganizationId > 0 && !modelFilter.FromDate.HasValue && !modelFilter.ToDate.HasValue) { modelFilter.FromDate = DateTime.Today.AddDays(-90); modelFilter.DateType = (int)ProspectCustomerDateTypeFilter.CreatedDate; } var prospectCustomers = _prospectCustomerRepository.GetAbandonedProspectCustomer(pageNumber, pageSize, modelFilter, out totalRecords); var model = new ProspectCustomerListModel(); if (prospectCustomers != null && prospectCustomers.Any()) { var prospectCustomerNotes = _customerCallNotesRepository.GetProspectCustomerNotes(prospectCustomers.Select(pc => pc.Id).ToArray()); var orgRoleUserIds = prospectCustomers.Where(pc => pc.ContactedBy.HasValue).Select(pc => pc.ContactedBy.Value).ToList(); if (prospectCustomerNotes != null && prospectCustomerNotes.Any()) { orgRoleUserIds.AddRange(prospectCustomerNotes.Select(pcn => pcn.DataRecorderMetaData.DataRecorderCreator.Id)); } orgRoleUserIds = orgRoleUserIds.Distinct().ToList(); var idNamePairs = _organizationRoleUserRepository.GetNameIdPairofUsers(orgRoleUserIds.ToArray()); var customerIds = prospectCustomers.Where(x => x.CustomerId.HasValue && x.CustomerId.Value > 0).Select(x => x.CustomerId.Value); var customers = new List <Customer>(); if (!customerIds.IsNullOrEmpty()) { customers = _customerRepository.GetCustomers(customerIds.ToArray()); } var customTags = _corporateCustomerCustomTagRepository.GetByCustomerIds(customerIds); var corportateAccounts = new List <CorporateAccount>(); if (!customers.IsNullOrEmpty()) { var cutomerTags = customers.Where(x => !string.IsNullOrEmpty(x.Tag) && x.Tag.Trim().Length > 1).Select(x => x.Tag); if (customTags.Any()) { corportateAccounts.AddRange(_corporateAccountRepository.GetByTags(cutomerTags.ToArray())); } } var pcBasicmodels = new ProspectCustomerBasicInfoModel[prospectCustomers.Count()]; int index = 0; foreach (var prospectCustomer in prospectCustomers) { SourceCode sourceCode = null; if (prospectCustomer.SourceCodeId.HasValue) { sourceCode = _sourceCodeRepository.GetSourceCodeById(prospectCustomer.SourceCodeId.Value); } pcBasicmodels[index] = Mapper.Map <ProspectCustomer, ProspectCustomerBasicInfoModel>(prospectCustomer); if (prospectCustomer.CustomerId.HasValue) { if (customers.Any()) { var customer = customers.First(x => x.CustomerId == prospectCustomer.CustomerId); pcBasicmodels[index].CorporateTag = string.IsNullOrEmpty(customer.Tag) ? "" : customer.Tag; pcBasicmodels[index].MemberId = string.IsNullOrEmpty(customer.InsuranceId) ? "" : customer.InsuranceId; if (corportateAccounts.Any() && !string.IsNullOrEmpty(customer.Tag)) { var corportateAccount = corportateAccounts.First(x => x.Tag == customer.Tag); pcBasicmodels[index].CorporateSponsor = corportateAccount.Name; } } var corporateCustomTags = string.Empty; if (customTags != null && customTags.Any()) { var customerCustomTags = customTags.Where(ct => ct.CustomerId == prospectCustomer.CustomerId).Select(ct => ct.Tag).ToArray(); if (customerCustomTags.Any()) { corporateCustomTags = string.Join(",", customerCustomTags); } } pcBasicmodels[index].CustomTags = corporateCustomTags; if (!string.IsNullOrEmpty(pcBasicmodels[index].CorporateTag) && string.IsNullOrEmpty(pcBasicmodels[index].CustomTags)) { pcBasicmodels[index].CustomTags = "None"; } } var notesVieModel = new List <NotesViewModel>(); var prospectNotes = _notesViewModelFactory.GetProspectCustomerNotes(prospectCustomer.Id, prospectCustomerNotes, idNamePairs); if (prospectNotes != null) { notesVieModel.AddRange(prospectNotes); } if (prospectCustomer.Tag == ProspectCustomerTag.Cancellation && prospectCustomer.CustomerId.HasValue && _settings.IsRefundQueueEnabled) { var eventCustomers = _eventCustomerRepository.GetbyCustomerId(prospectCustomer.CustomerId.Value); eventCustomers = eventCustomers.Where(ec => !ec.AppointmentId.HasValue); if (eventCustomers.Any()) { var eventCustomerId = eventCustomers.Select(ec => ec.Id).Max(); if (eventCustomerId > 0) { var orderId = _orderRepository.GetOrderIdByEventCustomerId(eventCustomerId); var refundRequests = _refundRequestRepository.GetbyOrderId(orderId, true); if (refundRequests != null && refundRequests.Any() && refundRequests.Count(rr => rr.RefundRequestType == RefundRequestType.CustomerCancellation) > 0) { var refundRequest = refundRequests.LastOrDefault(rr => rr.RefundRequestType == RefundRequestType.CustomerCancellation && rr.RefundRequestResult != null && (rr.RefundRequestResult.RequestResultType == RequestResultType.IssueRefund || rr.RefundRequestResult.RequestResultType == RequestResultType.IssueGiftCertificate)); if (refundRequest != null) { notesVieModel.Add(new NotesViewModel() { Note = refundRequest.RefundRequestResult.Notes }); } } } } } pcBasicmodels[index].Notes = notesVieModel; if (sourceCode != null) { pcBasicmodels[index].SourceCode = sourceCode.CouponCode; } if (prospectCustomer.ContactedBy.HasValue) { pcBasicmodels[index].ContactedBy = idNamePairs.Where(nip => nip.FirstValue == prospectCustomer.ContactedBy.Value).Select(nip => nip.SecondValue).SingleOrDefault(); } index++; } model.Collection = pcBasicmodels; } return(model); }
public ListModelBase <CallSkippedReportViewModel, CallSkippedReportFilter> GetCallSkippedReport(int pageNumber, int pageSize, ModelFilterBase filter, out int totalRecords) { var callSkippedFilter = filter as CallSkippedReportFilter ?? new CallSkippedReportFilter(); var model = (IReadOnlyCollection <CallSkippedReportEditModel>)_customerCallQueueCallAttemptRepository.GetForCallSkippedReport(pageNumber, pageSize, callSkippedFilter, out totalRecords); List <long> orgRoleUserIds = model.Select(x => x.CustomerId).ToList(); orgRoleUserIds.AddRange(model.Select(x => x.AgentId)); var agentAndCustomerDetailsIdNamePair = (IReadOnlyCollection <OrderedPair <long, string> >)_organizationRoleUserRepository.GetNameIdPairofUsers(orgRoleUserIds.ToArray()); var callQueues = (IReadOnlyCollection <CallQueue>)_callQueueRepository.GetAll(isManual: false, isHealthPlan: true); var accounts = (IReadOnlyCollection <CorporateAccount>)_corporateAccountRepository.GetAllHealthPlan(); var collection = _callSkippedReportFactory.Create(agentAndCustomerDetailsIdNamePair, callQueues, accounts, model); return(new CallSkippedReportListModel { Collection = collection, Filter = callSkippedFilter }); }
private HospitalPartnerCustomerListModel GetCustomers(IEnumerable <EventCustomer> eventCustomers, HospitalPartner hospitalPartner) { var eventCustomerIds = eventCustomers.Select(ec => ec.Id).ToArray(); var eventIds = eventCustomers.Select(ec => ec.EventId).Distinct().ToArray(); var customers = _customerRepository.GetCustomers(eventCustomers.Select(ec => ec.CustomerId).ToArray()); var orders = _orderRepository.GetAllOrdersByEventCustomerIds(eventCustomerIds, true); var orderPackageIdNamePair = _eventPackageRepository.GetPackageNamesForOrder(orders.Select(o => o.Id).ToList()); var orderTestIdNamePair = _eventTestRepository.GetTestNamesForOrders(orders.Select(o => o.Id).ToList()); var hospitalPartnerCustomers = _hospitalPartnerCustomerRepository.GetHospitalPartnerCustomers(eventIds); var orgRoleUserIds = new List <long>(); orgRoleUserIds.AddRange(hospitalPartnerCustomers.Select(hpc => hpc.CareCoordinatorOrgRoleUserId).ToArray()); orgRoleUserIds.AddRange(hospitalPartnerCustomers.Select(hpc => hpc.DataRecorderMetaData.DataRecorderCreator.Id).ToArray()); orgRoleUserIds.AddRange(hospitalPartnerCustomers.Where(hpc => hpc.DataRecorderMetaData.DataRecorderModifier != null).Select(hpc => hpc.DataRecorderMetaData.DataRecorderModifier.Id).ToArray()); orgRoleUserIds = orgRoleUserIds.Select(oru => oru).Distinct().ToList(); var idNamePairs = _organizationRoleUserRepository.GetNameIdPairofUsers(orgRoleUserIds.ToArray()); var eventCustomerResults = _eventCustomerResultRepository.GetByIds(eventCustomerIds); eventCustomerResults = eventCustomerResults.Where(ecr => ecr.ResultState >= (long)TestResultStateNumber.Evaluated).ToArray(); var pods = _podRepository.GetPodsForEvents(eventIds); var events = _eventRepository.GetEventswithPodbyIds(eventIds); var shippingDetailIds = orders.SelectMany(o => o.OrderDetails.SelectMany(od => od.ShippingDetailOrderDetails.Select(sdod => sdod.ShippingDetailId))).ToArray(); var resultStatuses = _eventCustomerResultRepository.GetTestResultStatus(eventCustomerIds); var shippingDetails = _shippingDetailRepository.GetByIds(shippingDetailIds); var cdShippingOption = _shippingOptionRepository.GetShippingOptionByProductId((long)Product.UltraSoundImages); //var eventIdHospitalPartnerIdPairs = _hospitalPartnerRepository.GetEventAndHospitalPartnerOrderedPair(eventIds); var eventHospitalPartners = _hospitalPartnerRepository.GetEventHospitalPartnersByEventIds(eventIds).ToArray(); var organizationIds = eventHospitalPartners.Select(ehp => ehp.HospitalPartnerId).Distinct().ToArray(); var hospitalFacilityIds = eventCustomers.Where(ec => ec.HospitalFacilityId.HasValue && ec.HospitalFacilityId.Value > 0).Select(ec => ec.HospitalFacilityId.Value).ToArray(); organizationIds = organizationIds.Concat(hospitalFacilityIds).ToArray(); var organizations = _organizationRepository.GetOrganizations(organizationIds); var eventIdHospitalPartnerNamePairs = (from ehp in eventHospitalPartners join org in organizations on ehp.HospitalPartnerId equals org.Id select new OrderedPair <long, string>(ehp.EventId, org.Name)).ToArray(); var eventIdCorporateAccounrNamePairs = _corporateAccountRepository.GetEventIdCorporateAccountNamePair(eventIds); var primaryCarePhysicians = _primaryCarePhysicianRepository.GetByCustomerIds(eventCustomers.Select(ec => ec.CustomerId).ToArray()); var healthAssessmentQuestions = _healthAssessmentRepository.GetAllQuestions(); var healthAssessmentAnswers = _healthAssessmentRepository.GetByCustomerIds(eventCustomers.Select(ec => ec.CustomerId).ToArray()); var notes = _customerCallNotesRepository.GetNotes(eventCustomers.Select(ec => ec.CustomerId).ToArray(), CustomerRegistrationNotesType.PostScreeningFollowUpNotes); var eventCustomerNotifications = _eventCustomerNotificationRepository.GetByEventCustomerIds(eventCustomerIds, NotificationTypeAlias.CannedMessageNotification); var hospitalFacilities = hospitalFacilityIds.Any() ? _hospitalFacilityRepository.GetByIds(hospitalFacilityIds) : null; var eventCustomerIdHospitalFacilityNamePairs = (from ec in eventCustomers join org in organizations on ec.HospitalFacilityId equals org.Id select new OrderedPair <long, string>(ec.Id, org.Name)).ToArray(); var showScannedDocumentHospitalPartnerIds = _settings.ShowScannedDocumentHospitalPartnerIds; var languages = _languageRepository.GetAll(); return(_hospitalPartnerCustomerViewModelFactory.Create(eventCustomers, orders, customers, orderPackageIdNamePair, orderTestIdNamePair, hospitalPartnerCustomers, idNamePairs, events, shippingDetails, resultStatuses, cdShippingOption, pods, eventIdHospitalPartnerNamePairs, eventIdCorporateAccounrNamePairs, primaryCarePhysicians, healthAssessmentQuestions, healthAssessmentAnswers, eventCustomerResults, hospitalPartner, notes, eventCustomerNotifications, eventHospitalPartners, eventCustomerIdHospitalFacilityNamePairs, hospitalFacilities, showScannedDocumentHospitalPartnerIds, languages)); }
/// <summary> /// This can be rerun any time. The service updates the last run time and will continue /// </summary> public void Sync() { try { if (!_settings.SyncWithHra) { _logger.Info("Syncing with HRA is off "); return; } //get all tags for IsHealthPlan is true var tags = _organizationRepository.GetMedicareSites().Where(x => x.ShowHraQuestionnaire); if (tags != null && tags.Any()) { foreach (var tag in tags) { var newLastTransactionDate = DateTime.Now; // use the time when exporting for this tag starts, as start date for next day. _logger.Info("Medicare CustomerResult Sync for tag : " + tag.Alias); var path = _medicareSyncCustomSettingsPath + "MedicareCustomerResultSync" + tag.Alias + ".xml"; var customSettings = _customSettingManager.Deserialize(path); if (customSettings == null || !customSettings.LastTransactionDate.HasValue) { customSettings = new CustomSettings { LastTransactionDate = DateTime.Now.AddHours(-2) }; } if (customSettings.LastTransactionDate != null) { var exportFromTime = customSettings.LastTransactionDate.Value; var customerIds = _customerRepository.GetRecentResultUpdatedForMedicareSync(exportFromTime, tag.Alias).ToArray(); if (customerIds.Any()) { var events = customerIds.Select(x => x.EventId).Distinct().ToArray(); var eventIdsWithMammogramTest = _customerRepository.GetEventWithTest(events, tag.Alias, (long)TestType.Mammogram).ToArray(); var eventIdsWithEchocardiogram = _customerRepository.GetEventWithTest(events, tag.Alias, (long)TestType.AwvEcho).ToArray(); var eventIdsWithAwvLipid = _customerRepository.GetEventWithTest(events, tag.Alias, (long)TestType.AwvLipid).ToArray(); var eventIdsWithAwvSpiro = _customerRepository.GetEventWithTest(events, tag.Alias, (long)TestType.AwvSpiro).ToArray(); var eventIdsWithDiabeticRetinopathy = _customerRepository.GetEventWithTest(events, tag.Alias, (long)TestType.DiabeticRetinopathy).ToArray(); var eventIdsWithUrineMicroalbumin = _customerRepository.GetEventWithTest(events, tag.Alias, (long)TestType.UrineMicroalbumin).ToArray(); var eventIdsWithAwvEkg = _customerRepository.GetEventWithTest(events, tag.Alias, (long)TestType.AwvEkg).ToArray(); var eventIdsWithAwvHba1C = _customerRepository.GetEventWithTest(events, tag.Alias, (long)TestType.AwvHBA1C).ToArray(); var eventIdsWithAwvAaa = _customerRepository.GetEventWithTest(events, tag.Alias, (long)TestType.AwvAAA).ToArray(); var eventIdsWithAwvAbi = _customerRepository.GetEventWithTest(events, tag.Alias, (long)TestType.AwvABI).ToArray(); var eventIdsWithQuantaFloAbi = _customerRepository.GetEventWithTest(events, tag.Alias, (long)TestType.QuantaFloABI).ToArray(); var eventIdsWithLead = _customerRepository.GetEventWithTest(events, tag.Alias, (long)TestType.Lead).ToArray(); var eventIdsWithBp = _customerRepository.GetEventWithTest(events, tag.Alias, (long)TestType.Hypertension).ToArray(); var eventList = _eventRepository.GetEvents(events).ToArray(); //var eventIdsWithMonoFilament = _customerRepository.GetEventWithTest(events, tag.Alias, (long)TestType.Monofilament).ToArray(); const int pageSize = 25; var totalPages = Math.Ceiling((double)(customerIds.Count()) / pageSize); for (int i = 0; i < totalPages; i++) { var currentList = customerIds.Skip(i * pageSize).Take(pageSize).ToArray(); try { foreach (var medicareResultEditModel in currentList) { var eventData = eventList.First(e => e.Id == medicareResultEditModel.EventId); var isNewResultFlow = eventData.EventDate >= _settings.ResultFlowChangeDate; var evaluatingPhysicians = _physicianEvaluationRepsoitory.GetPhysicianEvaluation(medicareResultEditModel.EventCustomerId); if (evaluatingPhysicians != null) { var primaryEvalRecord = evaluatingPhysicians != null?evaluatingPhysicians.Where(p => p.IsPrimaryEvaluator).OrderByDescending(p => p.EvaluationEndTime ?? p.EvaluationStartTime).FirstOrDefault() : null; var primaryPhysicianId = primaryEvalRecord != null ? primaryEvalRecord.PhysicianId : 0; var overreadPhysicianId = primaryEvalRecord != null?evaluatingPhysicians.Where(p => !p.IsPrimaryEvaluator && p.EvaluationStartTime > primaryEvalRecord.EvaluationStartTime).OrderByDescending( p => p.EvaluationEndTime ?? p.EvaluationStartTime).Select(p => p.PhysicianId).FirstOrDefault() : 0; medicareResultEditModel.PhysicianOruId = overreadPhysicianId > 0 ? overreadPhysicianId : primaryPhysicianId; } if (eventIdsWithBp.Contains(medicareResultEditModel.EventId)) //1 { // Blood Pressure Evaluation Test or Hypertension var testResultRepository = new HypertensionTestRepository(); var aaaTestResult = testResultRepository.GetTestResults(medicareResultEditModel.CustomerId, medicareResultEditModel.EventId, isNewResultFlow); var aaaTest = ((Core.Medical.Domain.HypertensionTestResult)aaaTestResult); if (aaaTest != null && aaaTest.TestNotPerformed == null && aaaTest.UnableScreenReason == null) { medicareResultEditModel.BpReading = new MedicareResultEditModel.Bp(); medicareResultEditModel.BpReading.Systolic = aaaTest.Systolic != null ? aaaTest.Systolic.Reading : null; medicareResultEditModel.BpReading.Diastolic = aaaTest.Diastolic != null ? aaaTest.Diastolic.Reading : null; } } if (eventIdsWithAwvAaa.Contains(medicareResultEditModel.EventId)) //1 { // Update the AAA result var testResultRepository = new AwvAaaTestRepository(); var aaaTestResult = testResultRepository.GetTestResults(medicareResultEditModel.CustomerId, medicareResultEditModel.EventId, isNewResultFlow); var aaaTest = ((Core.Medical.Domain.AwvAaaTestResult)aaaTestResult); if (aaaTest != null && aaaTest.Finding != null && aaaTest.TestNotPerformed == null && aaaTest.UnableScreenReason == null) { medicareResultEditModel.AaaResult = new MedicareResultEditModel.AaaReadings(); medicareResultEditModel.AaaResult.AortaSize = aaaTest.Finding != null ? aaaTest.Finding.Label : null; medicareResultEditModel.AaaResult.AorticDissection = aaaTest.AorticDissection != null && aaaTest.AorticDissection.Reading; medicareResultEditModel.AaaResult.Plaque = aaaTest.Plaque != null && aaaTest.Plaque.Reading; medicareResultEditModel.AaaResult.Thrombus = aaaTest.Thrombus != null && aaaTest.Thrombus.Reading; if (aaaTest.IncidentalFindings != null) { foreach (var standardFinding in aaaTest.IncidentalFindings) { if (standardFinding.Label == "Aortic Stenosis") { medicareResultEditModel.AaaResult.AorticStenosis = true; } } } } } if (eventIdsWithAwvAbi.Contains(medicareResultEditModel.EventId))//2 { // AwvAbi var testResultRepository = new AwvAbiTestRepository(); var padTestResult = testResultRepository.GetTestResults(medicareResultEditModel.CustomerId, medicareResultEditModel.EventId, isNewResultFlow); var aaaTest = ((Core.Medical.Domain.AwvAbiTestResult)padTestResult); if (aaaTest != null && aaaTest.Finding != null && aaaTest.TestNotPerformed == null && aaaTest.UnableScreenReason == null) { medicareResultEditModel.PadReading = new MedicareResultEditModel.PadTestReadings(); medicareResultEditModel.PadReading.Finding = aaaTest.Finding.Label; } } if (eventIdsWithQuantaFloAbi.Contains(medicareResultEditModel.EventId))//3 { // QuantaFlo Abi var testResultRepository = new QuantaFloABITestRepository(); var padTestResult = testResultRepository.GetTestResults(medicareResultEditModel.CustomerId, medicareResultEditModel.EventId, isNewResultFlow); var aaaTest = ((Core.Medical.Domain.QuantaFloABITestResult)padTestResult); if (aaaTest != null && aaaTest.Finding != null && aaaTest.TestNotPerformed == null && aaaTest.UnableScreenReason == null) { medicareResultEditModel.QuantaFloReading = new MedicareResultEditModel.QuantaFloReadings(); medicareResultEditModel.QuantaFloReading.Finding = aaaTest.Finding.Label; } } if (eventIdsWithLead.Contains(medicareResultEditModel.EventId))//5 { // Lead var testResultRepository = new LeadTestRepository(); var leadTestResult = testResultRepository.GetTestResults(medicareResultEditModel.CustomerId, medicareResultEditModel.EventId, isNewResultFlow); var leadTest = ((Core.Medical.Domain.LeadTestResult)leadTestResult); if (leadTest != null && leadTest.TestNotPerformed == null && leadTest.UnableScreenReason == null) { medicareResultEditModel.LeadReading = new MedicareResultEditModel.LeadReadings(); if (leadTest.LeftResultReadings != null) { medicareResultEditModel.LeadReading.LNoVisualPlaque = leadTest.LeftResultReadings.NoVisualPlaque != null && leadTest.LeftResultReadings.NoVisualPlaque.Reading.HasValue && leadTest.LeftResultReadings.NoVisualPlaque.Reading.Value; medicareResultEditModel.LeadReading.LVisuallyDemonstratedPlaque = leadTest.LeftResultReadings.VisuallyDemonstratedPlaque != null && leadTest.LeftResultReadings.VisuallyDemonstratedPlaque.Reading.HasValue && leadTest.LeftResultReadings.VisuallyDemonstratedPlaque.Reading.Value; medicareResultEditModel.LeadReading.LModerateStenosis = leadTest.LeftResultReadings.ModerateStenosis != null && leadTest.LeftResultReadings.ModerateStenosis.Reading.HasValue && leadTest.LeftResultReadings.ModerateStenosis.Reading.Value; medicareResultEditModel.LeadReading.LPossibleOcclusion = leadTest.LeftResultReadings.PossibleOcclusion != null && leadTest.LeftResultReadings.PossibleOcclusion.Reading.HasValue && leadTest.LeftResultReadings.PossibleOcclusion.Reading.Value; } if (leadTest.LowVelocityLeft != null) { medicareResultEditModel.LeadReading.LowVelocityLeft = true; } if (leadTest.RightResultReadings != null) { medicareResultEditModel.LeadReading.RNoVisualPlaque = leadTest.RightResultReadings.NoVisualPlaque != null && leadTest.RightResultReadings.NoVisualPlaque.Reading.HasValue && leadTest.RightResultReadings.NoVisualPlaque.Reading.Value; medicareResultEditModel.LeadReading.RVisuallyDemonstratedPlaque = leadTest.RightResultReadings.VisuallyDemonstratedPlaque != null && leadTest.RightResultReadings.VisuallyDemonstratedPlaque.Reading.HasValue && leadTest.RightResultReadings.VisuallyDemonstratedPlaque.Reading.Value; medicareResultEditModel.LeadReading.RModerateStenosis = leadTest.RightResultReadings.ModerateStenosis != null && leadTest.RightResultReadings.ModerateStenosis.Reading.HasValue && leadTest.RightResultReadings.ModerateStenosis.Reading.Value; medicareResultEditModel.LeadReading.RPossibleOcclusion = leadTest.RightResultReadings.PossibleOcclusion != null && leadTest.RightResultReadings.PossibleOcclusion.Reading.HasValue && leadTest.RightResultReadings.PossibleOcclusion.Reading.Value; } if (leadTest.LowVelocityRight != null) { medicareResultEditModel.LeadReading.LowVelocityRight = true; } } } if (eventIdsWithMammogramTest.Contains(medicareResultEditModel.EventId)) { // Update the mammogram result var testResultRepository = new MammogramTestRepository(); var mammogramTestResult = testResultRepository.GetTestResults(medicareResultEditModel.CustomerId, medicareResultEditModel.EventId, isNewResultFlow); var mamoTest = ((Core.Medical.Domain.MammogramTestResult)mammogramTestResult); if (mamoTest != null && mamoTest.Finding != null && mamoTest.TestNotPerformed == null && mamoTest.UnableScreenReason == null) { medicareResultEditModel.MammogramReading = mamoTest.Finding.Label; } } if (eventIdsWithAwvSpiro.Contains(medicareResultEditModel.EventId)) { var testResultRepository = new AwvSpiroTestRepository(); var awvSpiroTestResult = testResultRepository.GetTestResults(medicareResultEditModel.CustomerId, medicareResultEditModel.EventId, isNewResultFlow); if (awvSpiroTestResult != null && awvSpiroTestResult.TestNotPerformed == null && awvSpiroTestResult.UnableScreenReason == null) { if (awvSpiroTestResult.ResultStatus != null) { medicareResultEditModel.AwvSpiroStateNumber = (int)awvSpiroTestResult.ResultStatus.StateNumber; } var spirotest = ((Core.Medical.Domain.AwvSpiroTestResult)awvSpiroTestResult); if (spirotest.Finding != null) { medicareResultEditModel.AwvSpiroFindingLabel = spirotest.Finding.Label; } if (spirotest.Obstructive != null) { medicareResultEditModel.AwvSpiroObstructiveLabel = spirotest.Obstructive.Label.ToString(); } } } //if (eventIdsWithMonoFilament.Contains(medicareResultEditModel.EventId)) //{ // var testResultRepository = new MonofilamentTestRepository(); // var monoTestResult = testResultRepository.GetTestResults(medicareResultEditModel.CustomerId, medicareResultEditModel.EventId); // if (monoTestResult != null && monoTestResult.ResultStatus != null) // { // medicareResultEditModel.MonoFilamentStateNumber = (int)monoTestResult.ResultStatus.StateNumber; // } //} if (eventIdsWithEchocardiogram.Contains(medicareResultEditModel.EventId)) { var testResultRepository = new AwvEchocardiogramTestRepository(); var awvEchoTestResult = testResultRepository.GetTestResults(medicareResultEditModel.CustomerId, medicareResultEditModel.EventId, isNewResultFlow); if (awvEchoTestResult != null && awvEchoTestResult.TestNotPerformed == null && awvEchoTestResult.UnableScreenReason == null) { try { if (awvEchoTestResult != null && awvEchoTestResult.ResultStatus != null) { medicareResultEditModel.AwvEchoStateNumber = (int)awvEchoTestResult.ResultStatus.StateNumber; } var echocartest = ((Core.Medical.Domain.AwvEchocardiogramTestResult)awvEchoTestResult); medicareResultEditModel.AwvEchoFindingLabel = echocartest.EstimatedEjactionFraction != null ? echocartest.EstimatedEjactionFraction.Label : null; medicareResultEditModel.EchocardiogramReading = new MedicareResultEditModel.EchocardiogramReadings(); if (echocartest.EstimatedEjactionFraction != null) { medicareResultEditModel.EchocardiogramReading.EstimatedEjactionFractionMin = echocartest.EstimatedEjactionFraction.MinValue; medicareResultEditModel.EchocardiogramReading.EstimatedEjactionFractionMax = echocartest.EstimatedEjactionFraction.MaxValue; } //Aortic medicareResultEditModel.EchocardiogramReading.Aortic = echocartest.Aortic != null && echocartest.Aortic.Reading; if (echocartest.AorticMorphology != null) { foreach (var standardFinding in echocartest.AorticMorphology) { if (standardFinding.Label == "Stenosis") { medicareResultEditModel.EchocardiogramReading.AorticStenosis = true; } } } var aorticRegurgitation = echocartest.AorticRegurgitation != null ? echocartest.AorticRegurgitation.Label : null; medicareResultEditModel.EchocardiogramReading.AorticRegurgitation = aorticRegurgitation != null ? (aorticRegurgitation == "Mod" ? "Moderate" : aorticRegurgitation) : null; //Mitral medicareResultEditModel.EchocardiogramReading.Mitral = echocartest.Mitral != null && echocartest.Mitral.Reading; if (echocartest.MitralMorphology != null) { foreach (var standardFinding in echocartest.MitralMorphology) { if (standardFinding.Label == "Stenosis") { medicareResultEditModel.EchocardiogramReading.MitralStenosis = true; } if (standardFinding.Label == "Mitral Prolapse") { medicareResultEditModel.EchocardiogramReading.MitralProlapse = true; } } } var mitralRegurgitation = echocartest.MitralRegurgitation != null ? echocartest.MitralRegurgitation.Label : null; medicareResultEditModel.EchocardiogramReading.MitralRegurgitation = mitralRegurgitation != null ? (mitralRegurgitation == "Mod" ? "Moderate" : mitralRegurgitation) : null; //Pulmonic medicareResultEditModel.EchocardiogramReading.Pulmonic = echocartest.Pulmonic != null && echocartest.Pulmonic.Reading; var pulmonicRegurgitation = echocartest.PulmonicRegurgitation != null ? echocartest.PulmonicRegurgitation.Label : null; medicareResultEditModel.EchocardiogramReading.PulmonicRegurgitation = pulmonicRegurgitation != null ? (pulmonicRegurgitation == "Mod" ? "Moderate" : pulmonicRegurgitation) : null; //Tricuspid medicareResultEditModel.EchocardiogramReading.Tricuspid = echocartest.Tricuspid != null && echocartest.Tricuspid.Reading; medicareResultEditModel.EchocardiogramReading.HighOrGreater = echocartest.MorphologyTricuspidHighOrGreater != null && echocartest.MorphologyTricuspidHighOrGreater.Reading; medicareResultEditModel.EchocardiogramReading.TricuspidPap = echocartest.TricuspidPap != null ? echocartest.TricuspidPap.Reading : null; var tricuspidRegurgitation = echocartest.TricuspidRegurgitation != null ? echocartest.TricuspidRegurgitation.Label : null; medicareResultEditModel.EchocardiogramReading.TricuspidRegurgitation = tricuspidRegurgitation != null ? (tricuspidRegurgitation == "Mod" ? "Moderate" : tricuspidRegurgitation) : null; //DiastolicDysfunction medicareResultEditModel.EchocardiogramReading.DiastolicDysfunction = echocartest.DiastolicDysfunction != null && echocartest.DiastolicDysfunction.Reading; medicareResultEditModel.EchocardiogramReading.DistolicDysfunctionFinding = echocartest.DistolicDysfunctionFinding != null ? echocartest.DistolicDysfunctionFinding.Label : null; medicareResultEditModel.EchocardiogramReading.DiastolicDysfunctionEeRatio = echocartest.DiastolicDysfunctionEeRatio != null ? echocartest.DiastolicDysfunctionEeRatio.Reading : null; medicareResultEditModel.EchocardiogramReading.AorticRoot = echocartest.AorticRoot != null && echocartest.AorticRoot.Reading; medicareResultEditModel.EchocardiogramReading.Sclerotic = echocartest.Sclerotic != null && echocartest.Sclerotic.Reading; medicareResultEditModel.EchocardiogramReading.Atherosclerosis = echocartest.Atherosclerosis != null && echocartest.Atherosclerosis.Reading; medicareResultEditModel.EchocardiogramReading.VentricularHypertrophy = echocartest.VentricularHypertrophy != null && echocartest.VentricularHypertrophy.Reading; medicareResultEditModel.EchocardiogramReading.Arrythmia = echocartest.Arrythmia != null && echocartest.Arrythmia.Reading; medicareResultEditModel.EchocardiogramReading.AFib = echocartest.AFib != null && echocartest.AFib.Reading; medicareResultEditModel.EchocardiogramReading.AFlutter = echocartest.AFlutter != null && echocartest.AFlutter.Reading; } catch (Exception ex) { _logger.Error(" error EchocardiogramReading Customer : " + medicareResultEditModel.CustomerId + " Message: " + ex.Message + "\n stack Trace: " + ex.StackTrace); } } } if (eventIdsWithUrineMicroalbumin.Contains(medicareResultEditModel.EventId)) { var testResultRepository = new UrineMicroalbuminTestRepository(); var awvUrinTestResult = testResultRepository.GetTestResults(medicareResultEditModel.CustomerId, medicareResultEditModel.EventId, isNewResultFlow); if (awvUrinTestResult != null && awvUrinTestResult.ResultStatus != null && awvUrinTestResult.TestNotPerformed == null && awvUrinTestResult.UnableScreenReason == null) { medicareResultEditModel.AwvUrinStateNumber = (int)awvUrinTestResult.ResultStatus.StateNumber; var urintest = ((Core.Medical.Domain.UrineMicroalbuminTestResult)awvUrinTestResult); if (urintest != null && urintest.Finding != null) { medicareResultEditModel.AwvUrinFindingLabel = urintest.Finding.Label; } } } if (eventIdsWithAwvLipid.Contains(medicareResultEditModel.EventId)) { var testResultRepository = new AwvLipidTestRepository(); var awvLipidTestResult = testResultRepository.GetTestResults(medicareResultEditModel.CustomerId, medicareResultEditModel.EventId, isNewResultFlow); if (awvLipidTestResult != null && awvLipidTestResult.ResultStatus != null && awvLipidTestResult.TestNotPerformed == null && awvLipidTestResult.UnableScreenReason == null) { medicareResultEditModel.AwvLipidStateNumber = (int)awvLipidTestResult.ResultStatus.StateNumber; var awvLipid = ((Core.Medical.Domain.AwvLipidTestResult)awvLipidTestResult); if (awvLipid != null) { medicareResultEditModel.LipidReading = new MedicareResultEditModel.Lipid(); if (awvLipid.TotalCholestrol != null && awvLipid.TotalCholestrol.Finding != null) { medicareResultEditModel.AwvLipidTotalCholestrol = awvLipid.TotalCholestrol.Reading; medicareResultEditModel.LipidReading.Tc = awvLipid.TotalCholestrol.Reading; } if (awvLipid.HDL != null && awvLipid.HDL.Finding != null) { medicareResultEditModel.LipidReading.Hdl = awvLipid.HDL.Reading; } if (awvLipid.LDL != null && awvLipid.LDL.Finding != null) { medicareResultEditModel.LipidReading.Ldl = awvLipid.LDL.Reading; } if (awvLipid.TriGlycerides != null && awvLipid.TriGlycerides.Finding != null) { medicareResultEditModel.LipidReading.Trig = awvLipid.TriGlycerides.Reading; } } } } if (eventIdsWithDiabeticRetinopathy.Contains(medicareResultEditModel.EventId)) { var testResultRepository = new DiabeticRetinopathyTestRepository(); var awvDrsTestResult = testResultRepository.GetTestResults(medicareResultEditModel.CustomerId, medicareResultEditModel.EventId, isNewResultFlow); if (awvDrsTestResult != null && awvDrsTestResult.ResultStatus != null && awvDrsTestResult.TestNotPerformed == null && awvDrsTestResult.UnableScreenReason == null) { medicareResultEditModel.AwvDrsStateNumber = (int)awvDrsTestResult.ResultStatus.StateNumber; } } if (eventIdsWithAwvEkg.Contains(medicareResultEditModel.EventId)) { var testResultRepository = new AwvEkgTestRepository(); var awvEkgTestResult = testResultRepository.GetTestResults(medicareResultEditModel.CustomerId, medicareResultEditModel.EventId, isNewResultFlow); if (awvEkgTestResult != null && awvEkgTestResult.ResultStatus != null && awvEkgTestResult.TestNotPerformed == null && awvEkgTestResult.UnableScreenReason == null) { medicareResultEditModel.AwvEkgStateNumber = (int)awvEkgTestResult.ResultStatus.StateNumber; } } if (eventIdsWithAwvHba1C.Contains(medicareResultEditModel.EventId)) { var testResultRepository = new AwvHemaglobinTestRepository(); var awvHba1CTestResult = testResultRepository.GetTestResults(medicareResultEditModel.CustomerId, medicareResultEditModel.EventId, isNewResultFlow); if (awvHba1CTestResult != null && awvHba1CTestResult.ResultStatus != null && awvHba1CTestResult.TestNotPerformed == null && awvHba1CTestResult.UnableScreenReason == null) { medicareResultEditModel.AwvHbA1CStateNumber = (int)awvHba1CTestResult.ResultStatus.StateNumber; } } } _logger.Info("Medicare Customer Sync Starting for tag: " + tag.Alias + " Page : " + (i + 1)); var phyids = currentList.Where(x => x.PhysicianOruId > 0).Select(x => x.PhysicianOruId).ToArray(); var names = _organizationRoleUserRepository.GetNameIdPairofUsers(phyids); if (names.Any()) { foreach (var medicareResultEditModel in currentList.Where(x => x.PhysicianOruId > 0)) { var n = names.FirstOrDefault(x => x.FirstValue == medicareResultEditModel.PhysicianOruId); if (n != null) { medicareResultEditModel.PhysicianName = n.SecondValue; } } } var model = new MedicareResultListmodel { EhrResultEditmodels = currentList.ToList() }; var result = _medicareApiService.PostAnonymous <bool>(_settings.MedicareApiUrl + MedicareApiUrl.UpdateCustomerResult, model); if (result) { _logger.Info("Medicare Customer Sync for tag: " + tag.Alias + " Page : " + (i + 1)); } } catch (Exception exception) { _logger.Error(" error occur Medicare Customer Sync for tag: " + tag.Alias + " Customer : " + (i + 1) + " Message: " + exception.Message + "\n stack Trace: " + exception.StackTrace); } } } var kynCustomerIds = _kyaLabValuesRepository.GetRecentKynLabValuesForMedicareSync(exportFromTime, tag.Alias).ToArray(); if (kynCustomerIds.Any()) { const int pageSize = 25; var totalPages = Math.Ceiling((double)(kynCustomerIds.Count()) / pageSize); for (var i = 0; i < totalPages; i++) { var currentList = kynCustomerIds.Skip(i * pageSize).Take(pageSize).ToArray(); try { _logger.Info("Medicare Customer Sync Starting for tag: " + tag.Alias + " Page : " + (i + 1)); var model = new MedicareKynResultListmodel() { EhrResultEditmodels = currentList.ToList() }; var result = _medicareApiService.PostAnonymous <bool>(_settings.MedicareApiUrl + MedicareApiUrl.UpdateCustomerKynResult, model); if (result) { _logger.Info("Medicare Customer Sync for tag: " + tag.Alias + " Page : " + (i + 1)); } } catch (Exception exception) { _logger.Error(" error occur Medicare Customer Sync for tag: " + tag.Alias + " Customer : " + (i + 1) + " Message: " + exception.Message + "\n stack Trace: " + exception.StackTrace); } } } } _customSettingManager.SerializeandSave(path, new CustomSettings { LastTransactionDate = newLastTransactionDate }); } } } catch (Exception exception) { _logger.Error("Error occurred for SyncCustomerResultPollingAgent Message: " + exception.Message + "\n stack Trace: " + exception.StackTrace); } }
public ActionResult EditTeam(CallCenterTeamEditModel model) { try { model.AgentsMasterList = _organizationRoleUserRepository.GetIdNamePairofUsersByRole(Roles.CallCenterRep).Sort(OrderByDirection.Ascending, x => x.SecondValue); if (!model.Assignments.IsNullOrEmpty()) { model.AgentsMasterList = model.AgentsMasterList.Where(x => !model.Assignments.Select(y => y.FirstValue).Contains(x.FirstValue)).Select(x => x); } #region Validations model.Name = model.Name.Trim(); model.FeedbackMessage = new FeedbackMessageModel(); model.FeedbackMessage.MessageType = UserInterfaceMessageType.Error; if (string.IsNullOrEmpty(model.Name)) { model.FeedbackMessage.MessageType = UserInterfaceMessageType.Warning; model.FeedbackMessage.Message = "Team name cannot be empty."; return(View(model)); } if (model.Name.Trim().Length < 5) { model.FeedbackMessage.MessageType = UserInterfaceMessageType.Warning; model.FeedbackMessage.Message = "Team name must be at least 5 characters long."; return(View(model)); } var domain = _callCenterTeamRepository.GetById(model.Id); if (domain == null) { model.FeedbackMessage.Message = "No such team present in our records"; return(View(model)); } if (!string.Equals(domain.Name.ToLower(), model.Name.ToLower())) { if (!_callCenterTeamRepository.IsTeamNameUnique(model.Name)) { model.FeedbackMessage.Message = "Team name already in use"; return(View(model)); } } if (model.Assignments == null || (model.Assignments != null && !model.Assignments.Any())) { model.FeedbackMessage.Message = "Add some agents to be in team"; return(View(model)); } if (model.TypeId <= 0) { model.FeedbackMessage.Message = "Invalid team type"; return(View(model)); } #endregion #region Save Team Data domain.Name = model.Name; domain.Description = model.Description; domain.TypeId = model.TypeId; domain.DataRecorderMetaData.DataRecorderModifier = new OrganizationRoleUser(_sessionContext.UserSession.CurrentOrganizationRole.OrganizationRoleUserId); domain.DataRecorderMetaData.DateModified = DateTime.Now; _callCenterTeamRepository.Save(domain); #endregion #region Updating CallCenterAgentTeamLog var previousAgentsAssigned = _organizationRoleUserRepository.GetNameIdPairofUsers(_callCenterTeamRepository.GetTeamAgents(model.Id).ToArray()); if (previousAgentsAssigned != null) { var removedAgents = previousAgentsAssigned.Select(x => x.FirstValue).Except(model.Assignments.Select(x => x.FirstValue)); var newAgents = model.Assignments.Select(x => x.FirstValue).Except(previousAgentsAssigned.Select(x => x.FirstValue)); if (removedAgents.Any()) { var removedAgentslog = _callCenterAgentTeamLogRepository.GetAgentTeamLogForTeam(model.Id, removedAgents.ToArray()); foreach (var agent in removedAgentslog) { agent.DateRemoved = DateTime.Now; agent.RemovedByOrgRoleUserId = _sessionContext.UserSession.CurrentOrganizationRole.OrganizationRoleUserId; agent.IsActive = false; } _callCenterAgentTeamLogRepository.SaveAll(removedAgentslog); } if (newAgents.Any()) { var callCenterAgentTeamLogList = newAgents.Select(newAgent => new CallCenterAgentTeamLog { TeamId = domain.Id, AgentId = newAgent, AssignedByOrgRoleUserId = _sessionContext.UserSession.CurrentOrganizationRole.OrganizationRoleUserId, DateAssigned = DateTime.Now, DateRemoved = null, IsActive = true, RemovedByOrgRoleUserId = null }).ToList(); _callCenterAgentTeamLogRepository.SaveAll(callCenterAgentTeamLogList); } } #endregion //Save current team and agent mapping _callCenterTeamRepository.SaveAgentTeamAssignment(domain.Id, model.Assignments.Select(x => x.FirstValue).ToList()); model.FeedbackMessage.MessageType = UserInterfaceMessageType.Success; model.FeedbackMessage.Message = "Team updated successfully"; return(View(model)); } catch (Exception ex) { IoC.Resolve <ILogManager>().GetLogger <Global>().Error(ex.Message); IoC.Resolve <ILogManager>().GetLogger <Global>().Error("Call Center Team EditTeam[Post] Stack Trace :" + ex.StackTrace); model.FeedbackMessage = new FeedbackMessageModel(); model.FeedbackMessage.MessageType = UserInterfaceMessageType.Error; model.FeedbackMessage.Message = ex.Message; return(View(model)); } }
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 <TestNotPerformedViewModel, TestNotPerformedListModelFilter> GetTestNotPerformed(int pageNumber, int pageSize, ModelFilterBase filter, out int totalRecords) { var testNotPerformFilter = filter as TestNotPerformedListModelFilter; var testNotPerformed = _testNotPerformedRepository.GetTestNotPerformedForHealthPlan(testNotPerformFilter, pageNumber, pageSize, out totalRecords); if (testNotPerformed == null || !testNotPerformed.Any()) { return(null); } var customerEventScreeningTestIds = testNotPerformed.Select(x => x.CustomerEventScreeningTestId).ToArray(); var customerEventScreeningTests = _eventCustomerResultRepository.GetCustomerEventScreeningTestsByIds(customerEventScreeningTestIds); var customerEventTestStates = _customerEventTestStateRepository.GetCustomerEventTestState(customerEventScreeningTestIds); var orgRoleUserIds = customerEventTestStates.Where(cets => cets.ConductedByOrgRoleUserId.HasValue).Select(cets => cets.ConductedByOrgRoleUserId.Value).Distinct().ToArray(); var idNamePairs = _organizationRoleUserRepository.GetNameIdPairofUsers(orgRoleUserIds); var eventCustomerResults = _eventCustomerResultRepository.GetByIds(customerEventScreeningTests.Select(ces => ces.EventCustomerResultId).Distinct().ToArray()); var eventIds = eventCustomerResults.Select(ecr => ecr.EventId).Distinct().ToArray(); var events = _eventRepository.GetEventswithPodbyIds(eventIds); var hosts = _hostRepository.GetEventHosts(events.Select(x => x.Id)); IEnumerable <OrderedPair <long, long> > staffOrgRoleUserEventsPair = null; IEnumerable <OrderedPair <long, string> > staffNamePair = null; var npRoles = _eventRoleRepository.GetByName(_awvNpEventStaffRole); if (npRoles != null && npRoles.Any()) { var eventStaffs = _eventStaffAssignmentRepository.GetForEvents(eventIds); var npRoleIds = npRoles.Select(x => x.Id); if (eventStaffs != null && eventStaffs.Any()) { eventStaffs = eventStaffs.Where(x => npRoleIds.Contains(x.StaffEventRoleId)).ToArray(); } staffOrgRoleUserEventsPair = eventStaffs.Select(p => new OrderedPair <long, long>(p.ScheduledStaffOrgRoleUserId, p.EventId)).ToArray(); staffNamePair = _organizationRoleUserRepository.GetNameIdPairofUsers(staffOrgRoleUserEventsPair.Select(x => x.FirstValue).ToArray()); } var customers = _customerRepository.GetCustomers(eventCustomerResults.Select(ecr => ecr.CustomerId).Distinct().ToArray()); //var tags = customers.Select(x => x.Tag).Distinct().ToArray(); //var corporateAccount = _corporateAccountRepository.GetByTags(tags); var accountIds = events.Where(x => x.AccountId.HasValue && x.AccountId > 0).Select(x => x.AccountId.Value).Distinct().ToArray(); var corporateAccount = _corporateAccountRepository.GetByIds(accountIds); if (corporateAccount != null && corporateAccount.Any()) { corporateAccount = corporateAccount.Where(x => x.IsHealthPlan); } var tests = ((IUniqueItemRepository <Test>)_testRepository).GetByIds(customerEventScreeningTests.Select(ces => ces.TestId).Distinct().ToArray()); var customersPreApprovedTest = _preApprovedTestRepository.GetPreApprovedTestIdsByCustomerIds(eventCustomerResults.Select(x => x.Id)); var pods = _podRepository.GetByIds(events.SelectMany(e => e.PodIds).Distinct()); var eventCustomers = _eventCustomerRepository.GetByIds(customerEventScreeningTests.Select(ces => ces.EventCustomerResultId).Distinct().ToArray()); return(_testNotPerformedFactory.Create(testNotPerformed, customerEventScreeningTests, eventCustomerResults, events, customers, tests, customersPreApprovedTest, corporateAccount, pods, customerEventTestStates, idNamePairs, staffOrgRoleUserEventsPair, staffNamePair, hosts, eventCustomers)); }
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 <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)); }