public async Task <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); if (ConfigurationManager.ConnectionStrings["Escc.EastSussexGovUK.Umbraco.AzureStorage"] == null || String.IsNullOrEmpty(ConfigurationManager.ConnectionStrings["Escc.EastSussexGovUK.Umbraco.AzureStorage"].ConnectionString)) { var error = new ConfigurationErrorsException("The Escc.EastSussexGovUK.Umbraco.AzureStorage connection string is missing from web.config"); LogHelper.Error <JobAlertsController>(error.Message, error); error.ToExceptionless().Submit(); } else { var alertsRepo = new AzureTableStorageAlertsRepository(converter, ConfigurationManager.ConnectionStrings["Escc.EastSussexGovUK.Umbraco.AzureStorage"].ConnectionString); alert.Query = converter.ToQuery(query); alert.AlertId = encoder.GenerateId(alert); await 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)); }