public IActionResult Create([FromBody] PoombaItem poombaItem) { if (poombaItem == null) { return(BadRequest()); } if (poombaItem.WakeUpTime == DateTime.MinValue) { poombaItem.WakeUpTime = _context.PoombaItems.Last().WakeUpTime; } if (poombaItem.SleepTime == DateTime.MinValue) { poombaItem.SleepTime = _context.PoombaItems.Last().SleepTime; } _context.PoombaItems.Add(poombaItem); _context.SaveChanges(); new DebugWriter().Write(string.Format("Created Poombaitem with ID: {0}", poombaItem.Id)); try { _hub.Clients.All.InvokeAsync("UpdateSpecific", "Poomba", poombaItem.Command, poombaItem); } catch (Exception e) { new DebugWriter().Write(e.Message); } return(CreatedAtRoute("GetPoomba", new { id = poombaItem.Id }, poombaItem)); }
///////////////////////////////////////////////// /// Handler function for when the Web Api requests /// to set the timers on Poomba ///////////////////////////////////////////////// private static void UpdateTime(string message) { Console.WriteLine("Poomba: Asked to update timers"); WebApiConnector connector = new WebApiConnector(); //Get latest PoombaObject from database string json = connector.GetItem("Poomba/Newest"); PoombaItem poomba = JsonConvert.DeserializeObject <PoombaItem>(json); //Find time for next sleep time TimeSpan timeToTurnOff = poomba.SleepTime - DateTime.Now; TimeSpan timeToTurnOn = poomba.WakeUpTime - DateTime.Now; // Increment TimeSpan by one day until the day matches with current day while (timeToTurnOff < TimeSpan.Zero) { timeToTurnOff = timeToTurnOff + TimeSpan.FromDays(1); } while (timeToTurnOn < TimeSpan.Zero) { timeToTurnOn = timeToTurnOn + TimeSpan.FromDays(1); } Console.WriteLine("Poomba: Timer for wakeup is now in: {0} hours", timeToTurnOn.TotalHours); Console.WriteLine("Poomba: Timer for sleep is now in: {0} hours", timeToTurnOff.TotalHours); //Set up timer for automatic sleep _sleepTimer?.Dispose(); _wakeUpTimer?.Dispose(); _sleepTimer = new System.Timers.Timer(timeToTurnOff.TotalMilliseconds); _sleepTimer.Elapsed += Sleep; _sleepTimer.AutoReset = false; _sleepTimer.Start(); _wakeUpTimer = new System.Timers.Timer(timeToTurnOn.TotalMilliseconds); _wakeUpTimer.Elapsed += WakeUp; _wakeUpTimer.AutoReset = false; _wakeUpTimer.Start(); }
public void SetUp() { _stubRoom = new Room() { RoomName = "Room" }; _command = "What"; _isRun = true; _rooms = new List <Room>() { _stubRoom }; _cleaningTime = DateTime.Parse("2018-03-04 22:46:23"); _uut = new PoombaItem() { CleaningTime = _cleaningTime, Command = _command, IsRun = _isRun, Rooms = _rooms }; }