public IHttpActionResult Post([FromBody] Schedule schedule) { SetScheduleEvent scheduleEvent = new SetScheduleEvent(schedule.Hour, schedule.Minute, schedule.ActiveState); TemperatureWatcherExecutorCallback(scheduleEvent); return(Ok()); }
/// <summary> /// Callback method for WebApi calls /// </summary> /// <param name="request">The request sent to the webapi</param> /// <returns>Returns different responses depending on request, or null if no response is required by the specific operation</returns> public IWebApiResponse ReceiveWebApiCall(IWebApiEvent request) { Trace.WriteLine("[TemperatureWatcher][Execution][Executor][ReceiveWebApiCall] Received WebApi call of type: " + request.GetType().Name); //Gets the executing status if (typeof(GetExecutingStateEvent) == request.GetType()) { return(new GetExecutingStateResponse( _executableHandler.IsExecuting, _scheduleHandler.Hour, _scheduleHandler.Minute, _scheduleHandler.IsActive)); } //Update schedule else if (typeof(SetScheduleEvent) == request.GetType()) { SetScheduleEvent scheduleEvent = (SetScheduleEvent)request; if (scheduleEvent.IsActive) { _scheduleHandler.UpdateSchedule(scheduleEvent.Hour, scheduleEvent.Minute, DateTime.Now); } else { _scheduleHandler.Inactivate(); } lock (_locker) { //Update the file source if using file if (Settings.TimeToLeave.FileSource.Enabled) { using (StreamWriter sw = new StreamWriter(Executor.Settings.TimeToLeave.FileSource.Path, false)) { sw.WriteLine(string.Format("{0}:{1};{2}", scheduleEvent.Hour, scheduleEvent.Minute, scheduleEvent.IsActive.ToString().ToLower())); } } } } //Instant run of executable else if (typeof(ControlExecutableEvent) == request.GetType()) { ControlExecutableEvent controlExecutableEvent = (ControlExecutableEvent)request; if (controlExecutableEvent.SendOnFlags) { if (controlExecutableEvent.MinutesToKeepRunning > 0) { _executableHandler.TurnOnExecutable( DateTime.Now.AddMinutes(controlExecutableEvent.MinutesToKeepRunning)); } else { _executableHandler.TurnOnExecutable(); } } else { _executableHandler.TurnOffExecutable(); _scheduleHandler.ResetTimer(true); } } //Get the current temperature else if (typeof(GetCurrentTemperatureEvent) == request.GetType()) { return(new GetCurrentTemperatureResponse(_scheduleHandler.CurrentTemperature, _scheduleHandler.CurrentTemperatureUpdated)); } //Throw exception if no recognized event else { throw new ArgumentException("Invalid web api event"); } //Return null as default since all events does not return return data return(null); }