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)); }
// This method gets called by the runtime. Use this method to add services to the container. public void ConfigureServices(IServiceCollection services) { var devMachineNames = Configuration.GetSection("DevMachineNames").Get <List <string> >(); var relays = Configuration.GetSection("Relays").Get <List <Relay> >(); var relayOptions = new RelayClientOptions { Relays = relays }; var sensors = Configuration.GetSection("Sensors").Get <List <Sensor> >(); var sensorOptions = new SensorClientOptions { Sensors = sensors }; var humidifierJobOptions = Configuration.GetSection("HumidifierJobOptions") .Get <HumidifierPressureAltitudeTemperatureJobOptions>(); var fanJobOptions = Configuration.GetSection("FanJobOptions") .Get <FanJobOptions>(); JobStateHelper.AddOrUpdateJobState(new JobState() { JobOptions = humidifierJobOptions }, "HumidifierPressureAltitudeTemperatureJob"); JobStateHelper.AddOrUpdateJobState(new JobState() { JobOptions = fanJobOptions }, "FanJob"); //TODO: use a real logger eventually var loggerFactory = new LoggerFactory(); services.AddTransient(provider => loggerFactory); if (devMachineNames.Contains(Environment.MachineName)) { services.AddSingleton <IGpioController, MockGpioDriver>(); } else { services.AddSingleton <IGpioController, GpioController>(); } services.AddSingleton <HumidifierPressureAltitudeTemperatureJobOptions>(provider => humidifierJobOptions); services.AddSingleton <FanJobOptions>(provider => fanJobOptions); services.AddSingleton <IRelayClientOptions>(provider => relayOptions); services.AddSingleton <ISensorClientOptions>(provider => sensorOptions); services.AddTransient <ISensorReadingClientFactory, SensorReadingClientFactory>(); services.AddSingleton <IRelayClient, RelayClient.RelayClient>(); services.AddSingleton <ISensorClient, SensorClient.SensorClient>(); services.AddTransient <IProcessorFactory, ProcessorFactory>(); services.AddSingleton <IHostedService, HumidifierPressureAltitudeTemperatureJob>(); services.AddSingleton <IHostedService, FanJob>(); services.AddMvc() .SetCompatibilityVersion(CompatibilityVersion.Version_2_2); }