public void PollForHealthPlanUncontactedCustomer() { try { _logger.Info("Entering Health Plan Uncontacted Customers Polling Agent For 24 hrs"); var callQueue = _callQueueRepository.GetCallQueueByCategory(HealthPlanCallQueueCategory.UncontactedCustomers); var healthPlans = _corporateAccountRepository.GetAllHealthPlan(); if (callQueue != null) { // _callQueueCustomerRepository.DeleteCallQueueCustomersHasNotBeenCalled(callQueue.Id); var criteria = _healthPlanCallQueueCriteria.GetQueueCriteriasByQueueId(callQueue.Id); criteria = criteria.Where(x => x.IsQueueGenerated); foreach (var queueCriteria in criteria) { try { _healthPlanCallQueueAssignmentRepository.DeleteByCriteriaId(queueCriteria.Id); //if (queueCriteria.IsDefault) //{ // foreach (var corporateAccount in healthPlans) // { // _healthPlanCallRoundService.SaveHealthPlanUncontactedCustomerCallQueue(corporateAccount, queueCriteria, callQueue, _logger); // } //} //else if (queueCriteria.HealthPlanId.HasValue && !healthPlans.IsNullOrEmpty()) { var corporateAccount = healthPlans.First(x => x.Id == queueCriteria.HealthPlanId.Value); _healthPlanCallRoundService.SaveHealthPlanUncontactedCustomerCallQueue(corporateAccount, queueCriteria, callQueue, _logger); } queueCriteria.IsQueueGenerated = true; queueCriteria.LastQueueGeneratedDate = DateTime.Now; _healthPlanCallQueueCriteria.Save(queueCriteria); } catch (Exception exception) { _logger.Error("call Queue Id " + callQueue.Id); _logger.Error("criteria Id " + queueCriteria.Id); _logger.Error("Message " + exception.Message); _logger.Error("Stack Trace " + exception.StackTrace); } } } } catch (Exception exception) { _logger.Error(string.Format("Message {0} stack trace: {1} ", exception.Message, exception.StackTrace)); } }
public void PollForCallQueue() { try { _logger.Info("Entering Single Health Plan NoShows Polling Agent"); var callQueue = _callQueueRepository.GetCallQueueByCategory(HealthPlanCallQueueCategory.NoShows); var criterias = _healthPlanCallQueueCriteriaService.GetHealthPlanCallQueueCriteriaNotGenerated(callQueue.Id); var healthPlanIds = criterias.Where(x => x.HealthPlanId != null).Select(x => x.HealthPlanId.Value).ToArray(); var healthPlans = _corporateAccountRepository.GetByIds(healthPlanIds); foreach (var criteria in criterias) { try { _logger.Info(string.Format("Generating single No Show call queue.")); _healthPlanCallQueueAssignmentRepository.DeleteByCriteriaId(criteria.Id); if (criteria.HealthPlanId.HasValue) { var healthPlan = healthPlans.First(x => x.Id == criteria.HealthPlanId.Value); _healthPlanCallRoundService.SaveNoShowCallQueueCustomers(healthPlan, criteria, callQueue, _logger); } _logger.Info(string.Format("Completed single No Show call queue.")); criteria.IsQueueGenerated = true; criteria.LastQueueGeneratedDate = DateTime.Now; _healthPlanCallQueueCriteriaService.Save(criteria); } catch (Exception exception) { _logger.Error(string.Format("Error while generating call queue No show customer data for Criteria Id: {0} \n message: {1} stack trace {2}", criteria.Id, exception.Message, exception.StackTrace)); } } callQueue.IsQueueGenerated = true; callQueue.LastQueueGeneratedDate = DateTime.Now; _callQueueRepository.Save(callQueue); } catch (Exception ex) { _logger.Error(string.Format("Error while pulling single call round call queue. Message {0} \n Stack Trace {1}", ex.Message, ex.StackTrace)); } }
public void PollForQueueGeneration() { try { _logger.Info("Entering Health Plan Confirmation Queue Polling Agent For 24 hrs."); var callQueue = _callQueueRepository.GetCallQueueByCategory(HealthPlanCallQueueCategory.AppointmentConfirmation); var criterias = _healthPlanCallQueueCriteriaRepository.GetQueueCriteriasByQueueId(callQueue.Id); var healthPlans = _corporateAccountRepository.GetAllHealthPlan(); foreach (var criteria in criterias) { try { _healthPlanCallQueueAssignmentRepository.DeleteByCriteriaId(criteria.Id); if (criteria.HealthPlanId.HasValue) { var healthPlan = healthPlans.FirstOrDefault(x => x.Id == criteria.HealthPlanId); if (healthPlan != null) { _healthPlanCallRoundService.SaveHealthPlanConfirmationCustomerCallQueue(healthPlan, criteria, callQueue, _logger); } criteria.IsQueueGenerated = true; criteria.LastQueueGeneratedDate = DateTime.Now; _healthPlanCallQueueCriteriaRepository.Save(criteria); } } catch (Exception ex) { _logger.Error(string.Format("Error generating confirmation queue for HealthPlanId: {0} CallQueueId: {1} CriteriaId : {2}", criteria.HealthPlanId, callQueue.Id, criteria.Id)); _logger.Error(string.Format("Message : {0} \nStack Trace : {1}", ex.Message, ex.StackTrace)); } } _logger.Info("Completed Health Plan Confirmation Queue Polling Agent For 24 hrs."); } catch (Exception ex) { _logger.Error(string.Format("Message {0} stack trace: {1} ", ex.Message, ex.StackTrace)); } }
public void PollforRegenerateLanguageBarrierCallQueue() { try { _logger.Info("Entering Single Health Plan Language Barrier Polling Agent"); var callQueue = _callQueueRepository.GetCallQueueByCategory(HealthPlanCallQueueCategory.LanguageBarrier); var healthPlans = _corporateAccountRepository.GetAllHealthPlan(); if (callQueue != null) { var criteria = _healthPlanCallQueueCriteria.GetQueueCriteriasByQueueId(callQueue.Id); criteria = criteria.Where(x => !x.IsQueueGenerated && !x.IsDefault); foreach (var queueCriteria in criteria) { _healthPlanCallQueueAssignmentRepository.DeleteByCriteriaId(queueCriteria.Id); if (queueCriteria.HealthPlanId.HasValue && !healthPlans.IsNullOrEmpty()) { var corporateAccount = healthPlans.First(x => x.Id == queueCriteria.HealthPlanId.Value); _healthPlanCallRoundService.SaveHealthPlanLanguageBarrierCustomerCallQueue(corporateAccount, queueCriteria, callQueue, _logger); } queueCriteria.IsQueueGenerated = true; queueCriteria.LastQueueGeneratedDate = DateTime.Now; _healthPlanCallQueueCriteria.Save(queueCriteria); } } _logger.Info("Completing Single Health Plan Language Barrier Polling Agent"); } catch (Exception exception) { _logger.Error("Error while regenration"); _logger.Error(string.Format("Message {0} stack trace: {1} ", exception.Message, exception.StackTrace)); } }
public void PollForHealthPlanMailRoundCallQueue() { try { var callDate = DateTime.Now; var campaigns = new List <Campaign>(); var campaignByCallDate = _campaignRepository.GeCotporateCampaignForCallQueue(callDate); if (!campaignByCallDate.IsNullOrEmpty()) { campaigns.AddRange(campaignByCallDate); } var campaignsNotGenerated = _campaignRepository.GetCotporateCampaignForNotGenerated(); if (!campaignsNotGenerated.IsNullOrEmpty()) { var campaigIds = campaigns.Select(x => x.Id).ToArray(); if (!campaigIds.IsNullOrEmpty()) { campaignsNotGenerated = campaignsNotGenerated.Where(x => !campaigIds.Contains(x.Id)).ToArray(); if (!campaignsNotGenerated.IsNullOrEmpty()) { campaigns.AddRange(campaignsNotGenerated); } } else { campaigns.AddRange(campaignsNotGenerated); } } if (campaigns.IsNullOrEmpty()) { _logger.Info("No Campaigns found for call queue generation."); return; } var healthPlanIds = campaigns.Select(x => x.AccountId).ToArray(); var healthPlans = _corporateAccountRepository.GetByIds(healthPlanIds); foreach (var campaign in campaigns) { try { _logger.Info("Started creating Mail Round call queue for campaign: " + campaign.Name); var campaignActivites = _campaignActivityRepository.GetByCampaignId(campaign.Id); var outboundCallAcivity = campaignActivites.FirstOrDefault(ca => ca.TypeId == (long)CampaignActivityType.OutboundCall && ca.ActivityDate.Date == callDate.Date); if (outboundCallAcivity == null) { outboundCallAcivity = campaignActivites.Where(ca => ca.TypeId == (long)CampaignActivityType.OutboundCall).OrderByDescending(x => x.ActivityDate).FirstOrDefault(); } if (outboundCallAcivity == null) { continue; } var firstDirectMailActivity = campaignActivites.Where(ca => ca.TypeId == (long)CampaignActivityType.DirectMail && ca.ActivityDate <= outboundCallAcivity.ActivityDate).OrderBy(ca => ca.ActivityDate).FirstOrDefault(); if (firstDirectMailActivity == null) { _logger.Info("No Direct mail activity before outbound call."); _logger.Info("Completed creating Mail Round call queue for campaign: " + campaign.Name); continue; } var criterias = _healthPlanCallQueueCriteriaRepository.GetByCampaignId(campaign.Id); if (criterias.IsNullOrEmpty()) { _logger.Info("No Criteria has been created."); _logger.Info("Completed creating Mail Round call queue for campaign: " + campaign.Name); continue; } foreach (var campaingnCriteria in criterias) { try { if (campaingnCriteria.IsQueueGenerated && campaingnCriteria.LastQueueGeneratedDate.HasValue && campaingnCriteria.LastQueueGeneratedDate.Value.Date == callDate.Date) { _logger.Info("Call queue has been already generated for the campaign."); _logger.Info("Completed creating Mail Round call queue for campaign: " + campaign.Name); continue; } _healthPlanCallQueueAssignmentRepository.DeleteByCriteriaId(campaingnCriteria.Id); var healthPlan = healthPlans.Single(x => x.Id == campaign.AccountId); var callQueue = _callQueueRepository.GetCallQueueByCategory(HealthPlanCallQueueCategory.MailRound); _healthPlanCallRoundService.SaveMailRoundCallQueueCustomers(healthPlan, campaingnCriteria, callQueue, _logger, campaign); campaingnCriteria.IsQueueGenerated = true; campaingnCriteria.LastQueueGeneratedDate = DateTime.Now; _healthPlanCallQueueCriteriaRepository.Save(campaingnCriteria); } catch (Exception ex) { _logger.Error("Some Error Occurred While Generating Campaign Criteria Data: " + campaign.Name); _logger.Error("Message: " + ex.Message); _logger.Error("Stack Trace: " + ex.StackTrace); } } _logger.Info("Completed creating Mail Round call queue for campaign: " + campaign.Name); } catch (Exception ex) { _logger.Error("Error while Creating Mail Round call queue for campaign: " + campaign.Name); _logger.Error("Message : " + ex.Message); _logger.Error("Stack Trace : " + ex.StackTrace); } } } catch (Exception ex) { _logger.Error("Error while Polling Mail Round call queue"); _logger.Error("Message : " + ex.Message); _logger.Error("Stack Trace : " + ex.StackTrace); } }
public void PollForHealthPlanCallQueue() { try { var callQueue = _callQueueRepository.GetCallQueueByCategory(HealthPlanCallQueueCategory.FillEventsHealthPlan); var healthPlans = _corporateAccountRepository.GetAllHealthPlan(); _logger.Info("Started Healthfair Fill Event call Queue For Generated Call Queues For 24 hrs"); if (callQueue != null) { try { var criteria = _healthPlanCallQueueCriteria.GetQueueCriteriasByQueueId(callQueue.Id); criteria = criteria.Where(x => x.IsQueueGenerated).OrderByDescending(x => x.Id); foreach (var queueCriteria in criteria) { try { _healthPlanCallQueueAssignment.DeleteByCriteriaId(queueCriteria.Id); _healthPlanFillEventCallQueueRepository.DeleteByCriteriaId(queueCriteria.Id); //if (queueCriteria.IsDefault) //{ // foreach (var corporateAccount in healthPlans) // { // _healthPlanCallRoundService.SaveHealthPlanFillEventCallQueueCustomers(corporateAccount, queueCriteria, callQueue, _logger); // } //} //else if (queueCriteria.HealthPlanId.HasValue && !healthPlans.IsNullOrEmpty()) { var corporateAccount = healthPlans.First(x => x.Id == queueCriteria.HealthPlanId.Value); _healthPlanCallRoundService.SaveHealthPlanFillEventCallQueueCustomers(corporateAccount, queueCriteria, callQueue, _logger); } queueCriteria.IsQueueGenerated = true; queueCriteria.LastQueueGeneratedDate = DateTime.Now; _healthPlanCallQueueCriteria.Save(queueCriteria); } catch (Exception ex) { _logger.Error(string.Format("error health plan call queue. callQueueId: {0} CriteriaId {1} ", callQueue.Id, queueCriteria.Id)); _logger.Error(string.Format("Message {0} stack trace: {1} ", ex.Message, ex.StackTrace)); } } } catch (Exception exception) { _logger.Error(string.Format("error health plan call queue. callQueueId: {0} ", callQueue.Id)); _logger.Error(string.Format("Message {0} stack trace: {1} ", exception.Message, exception.StackTrace)); } callQueue.IsQueueGenerated = true; callQueue.LastQueueGeneratedDate = DateTime.Now; _callQueueRepository.Save(callQueue); } } catch (Exception exception) { _logger.Error(string.Format("error health plan call queue.")); _logger.Error(string.Format("Message {0} stack trace: {1} ", exception.Message, exception.StackTrace)); } }
public void PollForHealthPlanCallQueue() { try { _logger.Info("Entering Health Plan Polling Agent To Generate Call Queue For CallRound, NoShows and ZipRadius"); var callQueues = _callQueueRepository.GetAll(false, true); var healthPlans = _corporateAccountRepository.GetAllHealthPlan(); if (!callQueues.IsNullOrEmpty()) { callQueues = callQueues.Where(x => x.Category != HealthPlanCallQueueCategory.FillEventsHealthPlan && x.Category != HealthPlanCallQueueCategory.UncontactedCustomers && x.Category != HealthPlanCallQueueCategory.MailRound); foreach (var callQueue in callQueues) { try { var criteria = _healthPlanCallQueueCriteria.GetQueueCriteriasByQueueId(callQueue.Id); criteria = criteria.Where(x => x.IsQueueGenerated); switch (callQueue.Category) { case HealthPlanCallQueueCategory.CallRound: { foreach (var queueCriteria in criteria) { try { _healthPlanCallQueueAssignment.DeleteByCriteriaId(queueCriteria.Id); if (queueCriteria.HealthPlanId.HasValue && !healthPlans.IsNullOrEmpty()) { var corporateAccount = healthPlans.First(x => x.Id == queueCriteria.HealthPlanId.Value); _healthPlanCallRoundService.SaveCallRoundCallQueueCustomers(corporateAccount, queueCriteria, callQueue, _logger); } queueCriteria.IsQueueGenerated = true; queueCriteria.LastQueueGeneratedDate = DateTime.Now; _healthPlanCallQueueCriteria.Save(queueCriteria); } catch (Exception exception) { _logger.Error("call Queue Id " + callQueue.Id); _logger.Error("criteria Id " + queueCriteria.Id); _logger.Error("Message " + exception.Message); _logger.Error("Stack Trace " + exception.StackTrace); } } } break; //case HealthPlanCallQueueCategory.NoShows: // { // foreach (var queueCriteria in criteria) // { // try // { // _healthPlanCallQueueAssignment.DeleteByCriteriaId(queueCriteria.Id); // if (queueCriteria.HealthPlanId.HasValue && !healthPlans.IsNullOrEmpty()) // { // var corporateAccount = healthPlans.First(x => x.Id == queueCriteria.HealthPlanId.Value); // _healthPlanCallRoundService.SaveNoShowCallQueueCustomers(corporateAccount, queueCriteria, callQueue, _logger); // } // queueCriteria.IsQueueGenerated = true; // queueCriteria.LastQueueGeneratedDate = DateTime.Now; // _healthPlanCallQueueCriteria.Save(queueCriteria); // } // catch (Exception exception) // { // _logger.Error("call Queue Id " + callQueue.Id); // _logger.Error("criteira Id " + queueCriteria.Id); // _logger.Error("Message " + exception.Message); // _logger.Error("Stack Trace " + exception.StackTrace); // } // } // } // break; //case HealthPlanCallQueueCategory.ZipRadius: // { // foreach (var queueCriteria in criteria) // { // _healthPlanCallQueueAssignment.DeleteByCriteriaId(queueCriteria.Id); // if (queueCriteria.IsDefault) // { // foreach (var corporateAccount in healthPlans) // { // _healthPlanCallRoundService.SaveHealthPlanZipRadiusCallQueueCustomers(corporateAccount, queueCriteria, callQueue, _logger); // } // } // else if (queueCriteria.HealthPlanId.HasValue && !healthPlans.IsNullOrEmpty()) // { // var corporateAccount = healthPlans.First(x => x.Id == queueCriteria.HealthPlanId.Value); // _healthPlanCallRoundService.SaveHealthPlanZipRadiusCallQueueCustomers(corporateAccount, queueCriteria, callQueue, _logger); // } // queueCriteria.IsQueueGenerated = true; // queueCriteria.LastQueueGeneratedDate = DateTime.Now; // _healthPlanCallQueueCriteria.Save(queueCriteria); // } // } // break; } } catch (Exception exception) { _logger.Error(string.Format("error health plan call queue. callQueueId: {0} ", callQueue.Id)); _logger.Error(string.Format("Message {0} stack trace: {1} ", exception.Message, exception.StackTrace)); } callQueue.IsQueueGenerated = true; callQueue.LastQueueGeneratedDate = DateTime.Now; _callQueueRepository.Save(callQueue); } } } catch (Exception exception) { _logger.Error(string.Format("error health plan call queue.")); _logger.Error(string.Format("Message {0} stack trace: {1} ", exception.Message, exception.StackTrace)); } }