public IActionResult UpdateDeviceSchedule([FromBody] DeviceSchedule deviceSchedule) { try { _logger.LogInformation($"POST /v1/Device/Update called"); var updatedDeviceSchedule = _aquariumService.UpdateDeviceSchedule(deviceSchedule); return(new OkObjectResult(updatedDeviceSchedule)); } catch (Exception ex) { _logger.LogError($"POST /v1/Schedule/Update endpoint caught exception: { ex.Message } Details: { ex.ToString() }"); return(NotFound()); } }
public IActionResult AddDeviceSchedule([FromBody] DeviceSchedule deviceSchedule) { try { deviceSchedule.AuthorId = _accountService.GetCurrentUserId(); _logger.LogInformation($"POST /v1/Schedule/Add called"); var newDeviceSchedule = _aquariumService.AddDeviceSchedule(deviceSchedule); return(CreatedAtAction(nameof(UpdateDeviceSchedule), new { id = newDeviceSchedule.Id }, newDeviceSchedule)); } catch (Exception ex) { _logger.LogError($"POST /v1/Device/Add endpoint caught exception: { ex.Message } Details: { ex.ToString() }"); return(NotFound()); } }
public void GivenSchedule_ExpandSchedule_CreatesExpandedTasks() { DeviceSchedule schedule = new DeviceSchedule() { Tasks = new List <DeviceScheduleTask>() { new DeviceScheduleTask() { TaskId = ScheduleTaskTypes.Snapshot, Interval = 20, StartTime = DateTime.Now } } }; var scheduledTasks = schedule.ExpandTasks(); Assert.Equal(24 * 3, scheduledTasks.Count); }
public DeviceSchedule UpdateDeviceSchedule(DeviceSchedule deviceSchedule) { var updatedSchedule = _aquariumDao.UpdateDeviceSchedule(deviceSchedule); var affectedDevices = _aquariumDao.GetDevicesInUseBySchedule(updatedSchedule.Id); affectedDevices.ForEach(device => { try { var d = _aquariumDao.GetAquariumDeviceById(device.Id); _deviceClient.Configure(d); _deviceClient.ApplyUpdatedDevice(d); } catch (Exception e) { //todo could not update schedule assignment (pi is offline maybe) } }); return(updatedSchedule); }
public ActionResult EditStatus(string macaddress, int status, string start = null, string end = null) { DeviceSchedule schedule = null; if (status == 2) { var startSuccess = DateTime.TryParseExact(start, "H:mm:ss", null, System.Globalization.DateTimeStyles.None, out var startTime); var endSuccess = DateTime.TryParseExact(end, "H:mm:ss", null, System.Globalization.DateTimeStyles.None, out var endTime); if (!startSuccess || !endSuccess) { TempData["error"] = "Invalid start or end time format (must have format H:mm:ss)."; return(RedirectToAction("Index")); } else if ((endTime - startTime).TotalMinutes % TimeSpan.FromHours(24).TotalMinutes < 1) { TempData["error"] = "The range from start time to end time must be greater than 1 minute."; return(RedirectToAction("Index")); } else { schedule = new DeviceSchedule() { StartTime = startTime.ToString("HH:mm:ss"), EndTime = endTime.ToString("HH:mm:ss") }; } } var repo = new TempRepo(); var device = repo.GetDevice(d => d.MacAddress, macaddress).Result; if (device.UserId == Session["UID"] as int?) { repo.UpdateDeviceStatus("mac_address", macaddress, status, schedule).Wait(); } return(RedirectToAction("Index")); }
public DeviceSchedule AddDeviceSchedule(DeviceSchedule deviceSchedule) { return(_aquariumDao.AddDeviceSchedule(deviceSchedule)); }
public async Task UpdateDeviceStatus(string searchCol, string searchVal, int status, DeviceSchedule schedule = null) { await _connection.OpenAsync(); using (var cmd = _connection.CreateCommand()) { cmd.CommandText = "UPDATE Devices SET status = @status, schedule = @schedule WHERE " + searchCol + " = @searchVal"; cmd.Parameters.AddWithValue("@status", status); cmd.Parameters.AddWithValue("@schedule", schedule == null ? null : JsonConvert.SerializeObject(schedule)); cmd.Parameters.AddWithValue("@searchVal", searchVal); await cmd.ExecuteNonQueryAsync(); } await _connection.CloseAsync(); }