public async Task <IActionResult> RunNow([FromBody] RunNowViewModel request) { try { ParametersViewModel.VerifyParameterNameAvailability(request.JobParameters); Guid AutomationId = request.AutomationId; Guid AgentId = request.AgentId; Guid AgentGroupId = request.AgentGroupId; Schedule schedule = new Schedule(); schedule.AgentId = AgentId; schedule.AgentGroupId = AgentGroupId; schedule.CRONExpression = ""; schedule.LastExecution = DateTime.UtcNow; schedule.NextExecution = DateTime.UtcNow; schedule.IsDisabled = false; schedule.ProjectId = null; schedule.StartingType = "RunNow"; schedule.Status = "New"; schedule.ExpiryDate = DateTime.UtcNow.AddDays(1); schedule.StartDate = DateTime.UtcNow; schedule.AutomationId = AutomationId; schedule.CreatedOn = DateTime.UtcNow; schedule.CreatedBy = applicationUser?.UserName; var jsonScheduleObj = JsonSerializer.Serialize <Schedule>(schedule); _hubManager.ExecuteJob(jsonScheduleObj, request.JobParameters); return(Ok()); } catch (Exception ex) { return(ex.GetActionResult()); } }
public async Task <IActionResult> Put(string id, [FromBody] CreateScheduleViewModel request) { try { ParametersViewModel.VerifyParameterNameAvailability(request.Parameters); //validate the cron expression if (!string.IsNullOrWhiteSpace(request.CRONExpression)) { try { CronExpression expression = CronExpression.Parse(request.CRONExpression, CronFormat.Standard); } catch (Exception ex) { ModelState.AddModelError("Save", string.Concat("Invalid cron expression, ", ex.Message)); return(BadRequest(ModelState)); } } Guid entityId = new Guid(id); var existingSchedule = repository.GetOne(entityId); if (existingSchedule == null) { return(NotFound()); } existingSchedule.Name = request.Name; existingSchedule.AgentId = request.AgentId; existingSchedule.AgentGroupId = request.AgentGroupId; existingSchedule.CRONExpression = request.CRONExpression; existingSchedule.LastExecution = request.LastExecution; existingSchedule.NextExecution = request.NextExecution; existingSchedule.IsDisabled = request.IsDisabled; existingSchedule.ProjectId = request.ProjectId; existingSchedule.StartingType = request.StartingType; existingSchedule.Status = request.Status; existingSchedule.ExpiryDate = request.ExpiryDate; existingSchedule.StartDate = request.StartDate; existingSchedule.AutomationId = request.AutomationId; var response = await base.PutEntity(id, existingSchedule); _manager.DeleteExistingParameters(entityId); var set = new HashSet <string>(); foreach (var parameter in request.Parameters ?? Enumerable.Empty <ParametersViewModel>()) { if (!set.Add(parameter.Name)) { ModelState.AddModelError("ScheduleParameter", "ScheduleParameter Name Already Exists"); return(BadRequest(ModelState)); } ScheduleParameter scheduleParameter = new ScheduleParameter { Name = parameter.Name, DataType = parameter.DataType, Value = parameter.Value, ScheduleId = entityId, CreatedBy = applicationUser?.UserName, CreatedOn = DateTime.UtcNow, Id = Guid.NewGuid() }; _scheduleParameterRepository.Add(scheduleParameter); } _recurringJobManager.RemoveIfExists(existingSchedule.Id?.ToString()); if (request.IsDisabled == false && !request.StartingType.ToLower().Equals("manual")) { var jsonScheduleObj = JsonSerializer.Serialize <Schedule>(existingSchedule); _backgroundJobClient.Schedule(() => _hubManager.ScheduleNewJob(jsonScheduleObj), new DateTimeOffset(existingSchedule.StartDate.Value)); } return(response); } catch (Exception ex) { return(ex.GetActionResult()); } }
public async Task <IActionResult> Post([FromBody] CreateScheduleViewModel request) { ParametersViewModel.VerifyParameterNameAvailability(request.Parameters); if (request == null) { ModelState.AddModelError("Save", "No data passed"); return(BadRequest(ModelState)); } //validate the cron expression if (!string.IsNullOrWhiteSpace(request.CRONExpression)) { try { CronExpression expression = CronExpression.Parse(request.CRONExpression, CronFormat.Standard); } catch (Exception ex) { ModelState.AddModelError("Save", string.Concat("Invalid cron expression, ", ex.Message)); return(BadRequest(ModelState)); } } Guid entityId = Guid.NewGuid(); if (request.Id == null || !request.Id.HasValue || request.Id.Equals(Guid.Empty)) { request.Id = entityId; } try { Schedule requestObj = request.Map(request); //assign request to schedule entity foreach (var parameter in request.Parameters ?? Enumerable.Empty <ParametersViewModel>()) { ScheduleParameter scheduleParameter = new ScheduleParameter { Name = parameter.Name, DataType = parameter.DataType, Value = parameter.Value, ScheduleId = entityId, CreatedBy = applicationUser?.UserName, CreatedOn = DateTime.UtcNow, Id = Guid.NewGuid() }; _scheduleParameterRepository.Add(scheduleParameter); } var response = await base.PostEntity(requestObj); _recurringJobManager.RemoveIfExists(requestObj.Id?.ToString()); if (request.IsDisabled == false && !request.StartingType.ToLower().Equals("manual")) { var jsonScheduleObj = JsonSerializer.Serialize <Schedule>(requestObj); _backgroundJobClient.Schedule(() => _hubManager.ScheduleNewJob(jsonScheduleObj), new DateTimeOffset(requestObj.StartDate.Value)); } return(response); } catch (Exception ex) { return(ex.GetActionResult()); } }