public ActionResult CreateAlert(JobAlert alert)
        {
            var query = HttpUtility.ParseQueryString(Request.Url.Query);

            if (ModelState.IsValid)
            {
                var converter  = new JobSearchQueryConverter(ConfigurationManager.AppSettings["TranslateObsoleteJobTypes"]?.ToUpperInvariant() == "TRUE");
                var encoder    = new JobAlertIdEncoder(converter);
                var alertsRepo = new AzureTableStorageAlertsRepository(converter, ConfigurationManager.ConnectionStrings["Escc.EastSussexGovUK.Umbraco.AzureStorage"].ConnectionString);
                alert.Query   = converter.ToQuery(query);
                alert.AlertId = encoder.GenerateId(alert);
                alertsRepo.SaveAlert(alert);

                var jobAlertsSettings = new JobAlertsSettingsFromUmbraco(Umbraco).GetJobAlertsSettings(alert.JobsSet);
                if (jobAlertsSettings != null && !String.IsNullOrEmpty(jobAlertsSettings.NewAlertEmailSubject))
                {
                    var emailService = ServiceContainer.LoadService <IEmailSender>(new ConfigurationServiceRegistry(), new HttpContextCacheStrategy());
                    var sender       = new JobAlertsByEmailSender(jobAlertsSettings, new HtmlJobAlertFormatter(jobAlertsSettings, encoder), emailService);

                    sender.SendNewAlertConfirmation(alert);
                }

                query.Add("subscribed", "1");
            }
            return(new RedirectToUmbracoPageResult(CurrentPage, query));
        }
示例#2
0
        private void BreachCheckAlert()
        {
            try
            {
                while (alertWatchDogCancellationtoken.IsCancellationRequested != true)
                {
                    JobAlert.Wait(alertSpan, alertWatchDogCancellationtoken);
                    try
                    {
                        if (watchRecovery != null)
                        {
                            watchRecovery.Wait();
                        }

                        Notify(LogEventType.ThresholdBreachCheckEvent);
                    }
                    catch (Exception)
                    {
                    }
                }
            }
            catch (OperationCanceledException)
            {
                //   watchDogThread.
            }
        }
示例#3
0
文件: TaskWarn.cs 项目: aligeng/aps
        /// <summary>
        /// 获取 异常事件提醒的统计数据<br/>
        /// 返回数据说明:
        /// DeliveryDelay:生产单交期延误个数
        /// ProgressDelay :生产计划开工期延后个数
        /// StartDelay 生产计划开工期延后个数
        /// MatDelay 物料未按生产计划到货个数
        /// EventDelay 关键事件未按生产计划完成个数
        /// ScheduleNotMaintain  n天内未维护生产日进度的生产计划个数
        /// </summary>
        /// <returns> </returns>
        public DataTable GetUserDelayAlertCount()
        {
            string jobCodes = "DeliveryDelay,ProgressDelay,StartDelay,MatDelay,EventDelay,ScheduleNotMaintain";

            AMOData.Users user = new AMOData.Users();
            user.ID = 22;

            return(JobAlert.GetUserDelayAlertCount(jobCodes, user));
        }
        private async Task LookupJobsForAlert(IJobsDataProvider jobsData, JobAlert alert, IList <int> jobsSentForThisAlert)
        {
            alert.Query.ClosingDateFrom = DateTime.Today;
            _log.Info($"Requesting {alert.Query.ToString()}");
            var jobs = await jobsData.ReadJobs(alert.Query);

            foreach (var job in jobs.Jobs)
            {
                if (!jobsSentForThisAlert.Contains(job.Id))
                {
                    alert.MatchingJobs.Add(job);
                }
            }
        }
        public void GeneratedIdIsConsistent()
        {
            var converter = new FakeSearchQueryConverter();
            var encoder   = new JobAlertIdEncoder(converter);
            var alert     = new JobAlert()
            {
                Email = "*****@*****.**", Query = new JobSearchQuery()
                {
                    Keywords = "test"
                }
            };

            var id1 = encoder.GenerateId(alert);
            var id2 = encoder.GenerateId(alert);

            Assert.AreEqual(id1, id2);
        }
        public async Task <ActionResult> ReplaceAlert(JobSearchQuery searchQuery)
        {
            if (ModelState.IsValid)
            {
                var converter = new JobSearchQueryConverter(ConfigurationManager.AppSettings["TranslateObsoleteJobTypes"]?.ToUpperInvariant() == "TRUE");
                var encoder   = new JobAlertIdEncoder(converter);
                var alertId   = encoder.ParseIdFromUrl(new Uri(Request.Url, Request.RawUrl));
                var repo      = new AzureTableStorageAlertsRepository(converter, ConfigurationManager.ConnectionStrings["Escc.EastSussexGovUK.Umbraco.AzureStorage"].ConnectionString);
                var oldAlert  = repo.GetAlertById(alertId);

                var newAlert = new JobAlert()
                {
                    Query     = searchQuery,
                    Email     = oldAlert.Email,
                    Frequency = searchQuery.Frequency,
                    JobsSet   = searchQuery.JobsSet
                };
                newAlert.AlertId = encoder.GenerateId(newAlert);

                if (oldAlert.AlertId == newAlert.AlertId)
                {
                    // The alert id didn't change but the frequency may have, so update the existing alert
                    await repo.SaveAlert(newAlert);
                }
                else
                {
                    // The alert id, and therefore the criteria, changed, so save the new alert and delete the old one
                    await repo.SaveAlert(newAlert);

                    await repo.CancelAlert(oldAlert.AlertId);
                }

                var urlWithoutQueryString = new Uri(Request.Url, new Uri(Request.Url, Request.RawUrl).AbsolutePath);
                var urlWithoutAlertId     = encoder.RemoveIdFromUrl(urlWithoutQueryString);
                var urlWithAlertId        = encoder.AddIdToUrl(urlWithoutAlertId, newAlert.AlertId);

                return(new RedirectResult(urlWithAlertId + "?updated=1"));
            }
            else
            {
                return(new RedirectResult(Request.RawUrl));
            }
        }
示例#7
0
 private void ReportAlert()
 {
     try
     {
         while (alertWatchDogCancellationtoken.IsCancellationRequested != true)
         {
             JobAlert.Wait(alertSpan, alertWatchDogCancellationtoken);
             try
             {
                 Notify(LogEventType.LogReportGenerateEvent);
             }
             catch (Exception)
             {
             }
         }
     }
     catch (OperationCanceledException)
     {
         //   job cancelled
     }
 }
        public void GeneratedIdVariesByCriteria()
        {
            var converter = new FakeSearchQueryConverter();
            var encoder   = new JobAlertIdEncoder(converter);
            var alert1    = new JobAlert()
            {
                Email = "*****@*****.**", Query = new JobSearchQuery()
                {
                    Keywords = "test1"
                }
            };
            var alert2 = new JobAlert()
            {
                Email = "*****@*****.**", Query = new JobSearchQuery()
                {
                    Keywords = "test2"
                }
            };

            var id1 = encoder.GenerateId(alert1);
            var id2 = encoder.GenerateId(alert2);

            Assert.AreNotEqual(id1, id2);
        }
 public string FormatNewAlertConfirmation(JobAlert alert)
 {
     throw new NotImplementedException();
 }
 public void SaveAlert(JobAlert alert)
 {
     throw new NotImplementedException();
 }