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));
        }
Пример #4
0
        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));
        }