public void PollForSendNotification()
        {
            try
            {
                _logger.Info("Starting the Polling Agent to Send Notification to Nurse Practitioner after evaluation.");

                var eventCustomerResults = _eventCustomerResultRepository.GetEventCustomerResultByResultState((int)NewTestResultStateNumber.Evaluated, false, _settings.ResultFlowChangeDate);
                if (eventCustomerResults.IsNullOrEmpty())
                {
                    _logger.Info("No record found to send notification."); return;
                }

                var cryptographyService = new DigitalDeliveryCryptographyService();
                _logger.Info("Total Customer: " + eventCustomerResults.Count());

                var appUrl         = _settings.AppUrl;
                var medicareAppUrl = _settings.MedicareAppUrl;

                foreach (var eventCustomerResult in eventCustomerResults)
                {
                    try
                    {
                        _logger.Info("sending Notification to Np customer Id: " + eventCustomerResult.CustomerId + "event Id: " + eventCustomerResult.EventId);

                        var eventCustomer = _eventCustomerRepository.GetRegisteredEventForUser(eventCustomerResult.CustomerId, eventCustomerResult.EventId);
                        if (eventCustomer.AwvVisitId.HasValue)
                        {
                            var model = new EhrReadyForReEvaluation
                            {
                                EventId              = eventCustomerResult.EventId,
                                HfCustomerId         = eventCustomerResult.CustomerId,
                                Message              = "",
                                ReadyForReEvaluation = true
                            };

                            _logger.Info(string.Format("Sending for Sync ready for Reevaluation to HRA for NursePractitionerId: {0} for CustomerId: {1} and EventId: {2}", eventCustomerResult.SignedOffBy.Value, eventCustomerResult.CustomerId, eventCustomerResult.EventId));

                            var isSynced = _newResultFlowStateService.SyncReadyForEvaluation(model, eventCustomerResult.DataRecorderMetaData.DataRecorderModifier.Id, "Calling from polling agent PollForSendNotification");

                            if (isSynced)
                            {
                                _logger.Info(string.Format(" Synced Notification send To NP and HRA has been updated NursePractitionerId: {0} for CustomerId: {1} and EventId: {2}", eventCustomerResult.SignedOffBy.Value, eventCustomerResult.CustomerId, eventCustomerResult.EventId));

                                var orgRoleUser = _organizationRoleUserRepository.GetOrganizationRoleUser(eventCustomerResult.SignedOffBy.Value);

                                var urlTestDocumentation            = appUrl + string.Format("/App/Common/Results.aspx?key={0}", cryptographyService.Encrypt(eventCustomerResult.EventId + "~" + eventCustomerResult.CustomerId));
                                var urlUnlockAssessment             = medicareAppUrl + string.Format("/mailauth/{0}", eventCustomer.AwvVisitId);
                                var urlTriggersReadyForCodingStatus = ""; // need to write code for this url variables

                                var notificationModel = _emailNotificationModelsFactory.GetNPfordiagnosingwithlinkNotificationViewModel(eventCustomerResult.CustomerId, eventCustomerResult.EventId, urlTestDocumentation, urlUnlockAssessment, urlTriggersReadyForCodingStatus);

                                _notifier.NotifySubscribersViaEmail(NotificationTypeAlias.NPfordiagnosingwithlinkNotification, EmailTemplateAlias.NPfordiagnosingwithlinkNotification, notificationModel, orgRoleUser.UserId, _RequestedByOrgRoleUserId, "SendNotiificationToNursePractitionerPollingAgent");

                                _logger.Info(string.Format("Notification sent to NursePractitionerId: {0} for CustomerId: {1} and EventId: {2}", eventCustomerResult.SignedOffBy.Value, eventCustomerResult.CustomerId, eventCustomerResult.EventId));

                                _testResultService.SetResultstoState(eventCustomerResult.EventId, eventCustomerResult.CustomerId, (int)NewTestResultStateNumber.NpNotificationSent, false, eventCustomerResult.DataRecorderMetaData.DataRecorderModifier.Id);
                                _logger.Info(string.Format(" Result State has been update for CustomerId: {0} and EventId: {1}", eventCustomerResult.CustomerId, eventCustomerResult.EventId));
                            }

                            _logger.Info(string.Format("Synced To NP and HRA NursePractitionerId: {0} for CustomerId: {1} and EventId: {2} and hra Result {3}", eventCustomerResult.SignedOffBy.Value, eventCustomerResult.CustomerId, eventCustomerResult.EventId, isSynced));
                        }
                        else
                        {
                            _logger.Error(string.Format("AwvVisitId is null for CustomerId: {0} and EventId: {1}", eventCustomerResult.CustomerId, eventCustomerResult.EventId));
                        }
                    }
                    catch (Exception ex)
                    {
                        _logger.Error(string.Format("System failure: For NursePractitionerId: {0}, CustomerId: {1} and EventId: {2}", eventCustomerResult.SignedOffBy.Value, eventCustomerResult.CustomerId, eventCustomerResult.EventId));
                        _logger.Error("Error Message: " + ex.Message);
                    }
                }
            }
            catch (Exception ex)
            {
                _logger.Error("Exception occurred on execution of SendNotiificationToNursePractitionerPollingAgent.");
                _logger.Error("Error Message: " + ex.Message);
            }
        }