コード例 #1
0
        public IActionResult Post([FromBody] ACState state) //manually on/off ACDevice
        {
            try
            {
                try
                {
                    _acStateControlService.SetCurrentState(state);
                }

                catch (CurrentACDeviceNotSetException ex)
                {
                    _logger.LogError(ex, "400: Bad request");
                    return(BadRequest("Current ACDevice not set"));
                }

                catch (ArgumentException ex)
                {
                    _logger.LogError(ex, "400: Bad request");
                    return(BadRequest(ex.Message));
                }
                return(Ok());
            }

            catch (Exception ex)
            {
                _logger.LogError(ex, "500: Internal Server Error");
                return(StatusCode(StatusCodes.Status500InternalServerError));
            }
        }
コード例 #2
0
        private void ChangeACSettings(object arg)
        {
            switch (arg)
            {
            case IACSetting setting:
                _acStateControlService.ChangeACSetting(setting);
                return;

            case true:
                _acStateControlService.SetCurrentState(_turnOffState);
                return;

            case Tuple <IACSchedule, bool> tuple:       //ScheduleType.DayOfWeek
                var schedule  = tuple.Item1;
                var isTurnOff = tuple.Item2;

                if (!schedule.ScheduleType.Equals(ScheduleType.EveryDayOfWeek))
                {
                    throw new ArgumentException("ScheduleType should be EveryDayOfWeek");
                }

                var startTimeDayOfWeek = schedule.StartTime.DayOfWeek;
                var endTimeDayOfWeek   = schedule.EndTime.DayOfWeek;

                if (isTurnOff)
                {
                    if (endTimeDayOfWeek.Equals(DateTime.Now.DayOfWeek))
                    {
                        _acStateControlService.SetCurrentState(_turnOffState);
                    }
                    return;
                }

                if (startTimeDayOfWeek.Equals(DateTime.Now.DayOfWeek))
                {
                    var acSetting = _currentAcDevice.AvailableSettings.Single(x => x.UniqueId.Equals(schedule.ACSettingGuid));
                    _acStateControlService.ChangeACSetting(acSetting);
                }

                break;

            default:
                throw new ArgumentException("ChangeACSettings: argument is not of IACSetting type");
            }
        }