private HttpRequestMessage HandleMessage(RequestSchedule request) { var relativeUri = $"sports/{request.Language.Code}/schedules/{request.Date:yyyy-MM-dd}/schedule.xml"; var message = new HttpRequestMessage(HttpMethod.Get, new Uri(options.Uri, relativeUri)); return(message); }
public void ActivateLegacyRequestSchedule(Guid userID, Guid requestID, string cronExpression) { //Ensure a job with the same ID doesn't already exist Hangfire.RecurringJob.RemoveIfExists(requestID.ToString()); //Ensure the request exists and it is not deleted if (DataContext.Requests.Any(p => p.ID == requestID) == false || DataContext.Requests.Any(p => p.ID == requestID && p.Deleted == true)) { DeleteRequestSchedules(requestID); return; } //Add the recurring job Hangfire.RecurringJob.AddOrUpdate <LegacyRequestsController>(requestID.ToString(), (x) => x.OnSubmitSchedulerRequest(userID, requestID), cronExpression); //Add the job details to the request schedule if it isn't defined already if (!DataContext.RequestSchedules.Any(p => p.RequestID == requestID && p.ScheduleID == requestID.ToString() && p.ScheduleType == RequestScheduleTypes.Recurring)) { RequestSchedule requestSchedule = new RequestSchedule(); requestSchedule.RequestID = requestID; requestSchedule.ID = Guid.NewGuid(); requestSchedule.ScheduleID = requestID.ToString(); requestSchedule.ScheduleType = RequestScheduleTypes.Recurring; DataContext.RequestSchedules.Add(requestSchedule); DataContext.SaveChanges(); } }
private void Btn_requestSchedule_Click(object sender, RoutedEventArgs e) { try { RequestSchedule requestSchedule = new RequestSchedule(); DB.TodoListGrid temp = Grid_todoList.SelectedItem as DB.TodoListGrid; TodoList todoList = mainWindow.DB.GetTodoByID(temp.WorkID); requestSchedule.Owner = mainWindow; requestSchedule.todolist = todoList; mainWindow.Opacity = 0.5; requestSchedule.WindowStartupLocation = WindowStartupLocation.CenterOwner; requestSchedule.ShowDialog(); } catch (Exception ex) { DB.AddLog(new Log { error_page = "uctodolist", error_text = ex.Message, log_user = User.id }); } }
public async Task <HttpResponseMessage> ScheduleLegacyRequest(LegacySchedulerRequestDTO dto) { if (dto.IsNull() || dto.ScheduleJSON.IsNullOrEmpty()) { throw new HttpResponseException(Request.CreateErrorResponse(HttpStatusCode.BadRequest, "The Request Schedule is not defined.")); } try { //Delete the recurring job, if it exists Hangfire.RecurringJob.RemoveIfExists(dto.RequestID.ToString()); //Check if any additional schedule jobs exist if (DataContext.RequestSchedules.Any(p => p.RequestID == dto.RequestID)) { var schedules = await DataContext.RequestSchedules.Where(p => p.RequestID == dto.RequestID).ToListAsync(); foreach (var item in schedules) { if (item.ScheduleType == RequestScheduleTypes.Recurring) { Hangfire.RecurringJob.RemoveIfExists(item.ScheduleID); } else { Hangfire.BackgroundJob.Delete(item.ScheduleID); } } DataContext.RequestSchedules.RemoveRange(schedules); await DataContext.SaveChangesAsync(); } RequestScheduleModel scheduleModel = Newtonsoft.Json.JsonConvert.DeserializeObject <RequestScheduleModel>(dto.ScheduleJSON); if (scheduleModel.PauseJob) { //Do not schedule anything if the user has paused the schedule. return(new HttpResponseMessage(HttpStatusCode.OK)); } string cronExpression = ScheduleManager.GetCronExpression(scheduleModel); var schedule = NCrontab.CrontabSchedule.Parse(cronExpression); if (scheduleModel.StartDate <= DateTime.Now) { Hangfire.RecurringJob.AddOrUpdate <LegacyRequestsController>(dto.RequestID.ToString(), (x) => x.OnSubmitSchedulerRequest(Identity.ID, dto.RequestID.Value), cronExpression); //LegacyRequests.ActivateLegacyRequestSchedule(Identity.ID, requestID, cronExpression); RequestSchedule requestSchedule = new RequestSchedule(); requestSchedule.RequestID = dto.RequestID.Value; requestSchedule.ID = Guid.NewGuid(); requestSchedule.ScheduleID = dto.RequestID.ToString(); requestSchedule.ScheduleType = RequestScheduleTypes.Recurring; DataContext.RequestSchedules.Add(requestSchedule); } else { var jobID = Hangfire.BackgroundJob.Schedule <LegacyRequestsController>((x) => x.ActivateLegacyRequestSchedule(Identity.ID, dto.RequestID.Value, cronExpression), scheduleModel.StartDate); RequestSchedule requestSchedule = new RequestSchedule(); requestSchedule.RequestID = dto.RequestID.Value; requestSchedule.ID = Guid.NewGuid(); requestSchedule.ScheduleID = jobID; requestSchedule.ScheduleType = RequestScheduleTypes.Activate; DataContext.RequestSchedules.Add(requestSchedule); } if (scheduleModel.EndDate.HasValue) { var jobID = Hangfire.BackgroundJob.Schedule <LegacyRequestsController>((x) => x.DeactivateLegacyRequestSchedule(dto.RequestID.Value), scheduleModel.EndDate.Value); RequestSchedule requestSchedule = new RequestSchedule(); requestSchedule.RequestID = dto.RequestID.Value; requestSchedule.ID = Guid.NewGuid(); requestSchedule.ScheduleID = jobID; requestSchedule.ScheduleType = RequestScheduleTypes.Deactivate; DataContext.RequestSchedules.Add(requestSchedule); } await DataContext.SaveChangesAsync(); return(new HttpResponseMessage(HttpStatusCode.OK)); } catch (Exception ex) { throw new HttpResponseException(Request.CreateErrorResponse(HttpStatusCode.BadRequest, "Could not schedule request. Details: " + ex.Message)); } }