Пример #1
0
        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"));
            }
        }
Пример #2
0
        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;
                }
            }));
        }
Пример #3
0
        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));
        }