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)); }
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. } }
/// <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)); } }
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(); }