Пример #1
0
        public void PollForCallQueue()
        {
            try
            {
                _logger.Info("Entering Single Health Plan Fill Event Polling Agent");
                var callQueue = _callQueueRepository.GetCallQueueByCategory(HealthPlanCallQueueCategory.FillEventsHealthPlan);
                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("Single Health Plan Fill Event Polling Agent");
                        _healthPlanCallQueueAssignmentRepository.DeleteByCriteriaId(criteria.Id);

                        _healthPlanFillEventCallQueueRepository.DeleteByCriteriaId(criteria.Id);

                        if (criteria.HealthPlanId.HasValue)
                        {
                            var healthPlan = healthPlans.First(x => x.Id == criteria.HealthPlanId.Value);
                            _healthPlanCallRoundService.SaveHealthPlanFillEventCallQueueCustomers(healthPlan, criteria, callQueue, _logger);
                        }

                        criteria.IsQueueGenerated       = true;
                        criteria.LastQueueGeneratedDate = DateTime.Now;

                        _healthPlanCallQueueCriteriaService.Save(criteria);
                    }
                    catch (Exception exception)
                    {
                        _logger.Error(string.Format("Error while generating call queue 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 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));
            }
        }