public async Task <ActionResult> SwitchState([FromBody] HueSwitchPutDto statePutDto) { if (statePutDto != null && await this._apiHandler.SwitchGroupState(statePutDto)) { return(this.Ok()); } else { return(this.BadRequest("Lampen Status konnte nicht geändert werden, bitte Logs ansehen")); } }
public Task <bool> SwitchGroupState(HueSwitchPutDto switchPutDto) { return(Task.Run(async() => { try { var currentGroup = await this.GetInfo(switchPutDto.Id) ?? throw new ArgumentException($"Unter der Id {switchPutDto.Id} konnte keine Gruppe gefunden werden"); var content = new GroupStateHandler(this._logger, this._mapper).GetSwtichContent(currentGroup, switchPutDto); if (content.IsNecessary.HasValue && content.IsNecessary.Value) { var response = await this._config["BridgeIP"] .AppendPathSegments("api", this._config["DefaultApiUser"], "groups", switchPutDto.Id, "action") .ToUri() .PutAsJsonAsync(content.content); return this._responseHandler.ResponseContainsErrors(response); } else { if (content.IsNecessary.HasValue) // Status ist schon eingeschalten { this._logger?.LogInformation("Gruppe hat einen ungültigen Status und kann nicht geändert werden"); return true; } else { this._logger?.LogCritical("Serializierung hat nicht funktioniert bitte, Log ansehen"); return false; } } } catch (Exception ex) { this._logger?.LogError(ex, "Während Change State Error"); return false; } })); }
public (bool?IsNecessary, string content) GetSwtichContent(HueGroupDto currentGroup, HueSwitchPutDto switchDto) { var newPutDto = new HueGroupStatePutDto { Id = switchDto.Id, On = !currentGroup.Action.On }; return(this.GetContent(currentGroup, newPutDto, false)); }