public IActionResult ScheduledReportIndex() { var userRecurringJobs = RecurringJobManager.GetUserRecurringJobs(); var viewModels = new List <ScheduledReportViewModel>(); foreach (var job in userRecurringJobs) { var communication = Rdb.Communications.FirstOrDefault(x => x.CommunicationSettings.RecurringJobId == job.Id); if (communication != null) { var viewModel = new ScheduledReportViewModel { Communication = communication, RecurringJob = job }; //Throwing errors when trying to create title friendly string in view viewModel.Communication.CommunicationSettings.ReportName = viewModel.Communication .CommunicationSettings.ReportName.ToTitleFriendlyString(); viewModels.Add(viewModel); } } return(View(viewModels)); }
public IActionResult ScheduledReportDetail(int id) { var communication = Rdb.Communications.FirstOrDefault(x => x.CommunicationId == id); var recurringJob = RecurringJobManager.GetRecurringJobById(communication.CommunicationSettings.RecurringJobId); var viewModel = new ScheduledReportViewModel { Communication = communication, RecurringJob = recurringJob }; SetHeroLayoutViewData(communication.CommunicationId, communication.CampaignName, PageKeys.ScheduledReportDetails); return(View(viewModel)); }
public async Task <ActionResult> Schedule(int id) { var result = await this.db.ScheduledReports .Include(s => s.Query) .Include(s => s.Query.DatabaseConnection) .FirstOrDefaultAsync(m => m.ScheduleID == id); ScheduledReportViewModel model = null; if (result == null) { return(Json(new ScheduledReportViewModel())); } else if (CanUserAccessDatabase(result.Query.DatabaseConnection)) { model = new ScheduledReportViewModel(result); return(Json(model)); } return(NotFound()); }
public async Task <ActionResult> Schedule([FromBody] ScheduledReportViewModel model) { var query = this.db.Queries .Include(q => q.DatabaseConnection) .FirstOrDefault(q => q.QueryID == model.QueryID); if (query != null && CanUserAccessDatabase(query.DatabaseConnection)) { if (model.FrequencyScheduled == FrequencyScheduled.None) { // Remove schedule var schedule = await this.db.ScheduledReports.FirstOrDefaultAsync(m => m.ScheduleID == model.QueryID); if (schedule != null) { this.db.ScheduledReports.Remove(schedule); await this.db.SaveChangesAsync(); } // Remove schedule job this.RemoveScheduleJob(model.QueryID.ToString()); return(StatusCode((int)HttpStatusCode.OK)); } if (model.FrequencyScheduled == FrequencyScheduled.Monthly && (!model.DayOfMonth.HasValue || model.DayOfMonth < 1 || model.DayOfMonth > 32)) { return(BadRequest("Select the correct Day of the Month")); } DateTime dateValue; if (!DateTime.TryParseExact(model.Time, "h:mm tt", CultureInfo.InvariantCulture, DateTimeStyles.None, out dateValue)) { return(BadRequest("Select the correct Time")); } Regex regex = new Regex(@"^(?!.*<[^>]+>).*"); if (!regex.IsMatch(model.Recipients)) { return(BadRequest("No html tags allowed")); } var recipients = this.RecipientsValidation(model.Recipients); if (string.IsNullOrEmpty(recipients)) { return(BadRequest("Wrong 'Recipients' format. Only e-mails are separated by comma")); } ScheduledReport scheduleReport = await this.db.ScheduledReports.FirstOrDefaultAsync(m => m.ScheduleID == model.QueryID); if (scheduleReport == null) { scheduleReport = new ScheduledReport { FrequencyScheduled = model.FrequencyScheduled, Time = dateValue.TimeOfDay, DayOfWeek = model.DayOfWeek, DayOfMonth = model.DayOfMonth, Recipients = recipients, Query = query }; this.db.ScheduledReports.Add(scheduleReport); } else { scheduleReport.FrequencyScheduled = model.FrequencyScheduled; scheduleReport.Time = dateValue.TimeOfDay; scheduleReport.DayOfWeek = model.DayOfWeek; scheduleReport.DayOfMonth = model.DayOfMonth; scheduleReport.Recipients = recipients; this.db.Entry(scheduleReport).State = EntityState.Modified; } await this.db.SaveChangesAsync(); this.AddOrUpdateScheduleTask(scheduleReport); return(StatusCode((int)HttpStatusCode.OK)); } return(NotFound()); }