public async Task <string> DeviceRequestCommandCustomViewModule(CustomViewModuleRequest customViewModuleRequest) { //identify device object deviceRequested = ConvertCustomViewModuleResquestToObject(customViewModuleRequest); if (deviceRequested == null) { return(FormatterSpeechResponse_CustomViewModule(customViewModuleRequest, $"I'm sorry, {customViewModuleRequest.IdDevice} was not found", false)); } string jsonReturn = string.Empty; if (deviceRequested is SonoffDualR2) { //TODO: use pattern matching SonoffDualR2 sonoffRequest = ((SonoffDualR2)deviceRequested); if (ValidIdDeviceRequested(sonoffRequest.IdDevice)) { switch (sonoffRequest.SonoffModelEnum) { case DeviceEnum.SonoffDualR2: jsonReturn = await SonoffDualR2ExecuteCommand(sonoffRequest); return(FormatterSpeechResponse_CustomViewModule(customViewModuleRequest, jsonReturn, true)); default: break; } } } return(FormatterSpeechResponse_CustomViewModule(customViewModuleRequest, $"I'm sorry, {customViewModuleRequest.IdDevice} was not found", false)); }
private object ConvertCustomViewModuleResquestToObject(CustomViewModuleRequest customViewModuleRequest) { var device = GetInformationDeviceById(customViewModuleRequest); if (device == null || device.Count() <= 0) { return(null); } var objectType = device.Where(x => x.Key.Equals("ModelDevice")).Select(y => y.Value).FirstOrDefault(); //TODO: valid objectType (!=null) //VALID DEVICE AND OBJECTTYPE switch ((DeviceEnum)Enum.Parse(typeof(DeviceEnum), objectType, true)) { case DeviceEnum.SonoffDualR2: { int _channel = 1; //by default we use channel 1 (if is not mentioned in the object in appsettings.json int.TryParse(device.Where(x => x.Key.Equals("Channel")).Select(y => y.Value).FirstOrDefault(), out _channel); return(new SonoffDualR2() { IdDevice = device.Where(x => x.Key.Equals("IP_Address")).Select(y => y.Value).FirstOrDefault(), SonoffChannel = _channel, SonoffRequestCommandEnum = ConvertStringCmdToSonoffRequestCommandEnum(customViewModuleRequest.Command) }); } default: return(null); } }
public async Task <JsonResult> DeviceRequestCommandCustomViewModule(CustomViewModuleRequest customViewModuleRequest) { //TODO (validate command) if (customViewModuleRequest.IdDevice == null || string.IsNullOrEmpty(customViewModuleRequest.IdDevice)) { return(await FormatResposeCustomViewModule("I'm sorry, but I didn't find the device")); } return(await FormatResposeCustomViewModule(await service.DeviceRequestCommandCustomViewModule(customViewModuleRequest))); }
private string FormatterSpeechResponse_CustomViewModule(CustomViewModuleRequest customViewModuleRequest, string response, bool trimResponse) { if (!trimResponse) { return(response); } response = response.Replace("\"", "").Replace("\\", "").Replace("}", "").Split(":")[1].ToLower(); return($"{customViewModuleRequest.IdDevice} was turned {response}"); }
private IEnumerable <IConfigurationSection> GetInformationDeviceById(CustomViewModuleRequest customViewModuleRequest) { return(repository.GetInformationDeviceById(customViewModuleRequest.IdDevice)); }