public override IValidationResult IsValid(UpdateFanTaskProcessorRequestVersionOne record) { var existingRelays = _relayClient.GetRelays(); var jobExists = JobStateHelper.GetJobByName(record.JobName) != null; if (record?.RelayGpioPin != null && !existingRelays.Any(r => r.GpioPin == record.RelayGpioPin)) { return(new ValidationResult { Message = $"Could not find a relay with the gpio pin: {record.RelayGpioPin}", StatusCode = System.Net.HttpStatusCode.NotFound }); } if (!jobExists) { return(new ValidationResult { Message = $"Could not find any jobs with the name: {record.JobName}", StatusCode = System.Net.HttpStatusCode.NotFound }); } return(null); }
public override IActionResult ProcessRequest(GetTaskByNameProcessorRequestVersionOne record) { var task = JobStateHelper.GetJobByName(record.TaskName); if (task == null) { return(new NotFoundObjectResult(record)); } return(new OkObjectResult(task)); }
public override IActionResult ProcessRequest(UpdateFanTaskProcessorRequestVersionOne record) { var jobToUpdate = JobStateHelper.GetJobByName(record.JobName); var currentJobOptions = (FanJobOptions)jobToUpdate.JobOptions; var newJobState = new JobState() { JobOptions = new FanJobOptions { RunInterval = record?.RunInterval ?? currentJobOptions.RunInterval, RunDuration = record?.RunDuration ?? currentJobOptions.RunDuration, RelayGpioPin = record?.RelayGpioPin ?? currentJobOptions.RelayGpioPin }, LastRunTime = jobToUpdate.LastRunTime, NextRunTime = jobToUpdate.NextRunTime }; JobStateHelper.AddOrUpdateJobState(newJobState, record.JobName); return(new OkObjectResult(newJobState)); }
public override IActionResult ProcessRequest(UpdateHumidifierTaskProcessorRequestVersionOne record) { var jobToUpdate = JobStateHelper.GetJobByName(record.JobName); var currentJobOptions = (HumidifierPressureAltitudeTemperatureJobOptions)jobToUpdate.JobOptions; var newJobState = new JobState() { JobOptions = new HumidifierPressureAltitudeTemperatureJobOptions { CheckInterval = record?.CheckInterval ?? currentJobOptions.CheckInterval, HumiditySensorGpio = record?.HumiditySensorGpio ?? currentJobOptions.HumiditySensorGpio, TargetHumidity = record?.TargetHumidity ?? currentJobOptions.TargetHumidity, RelayGpio = record?.RelayGpio ?? currentJobOptions.RelayGpio }, LastRunTime = jobToUpdate.LastRunTime, NextRunTime = jobToUpdate.NextRunTime }; JobStateHelper.AddOrUpdateJobState(newJobState, record.JobName); return(new OkObjectResult(newJobState)); }