private async Task UpdateCurrentValue(DeviceConfigDto deviceConfigDto) { try { this._loggingService.Info("UpdateCurrentValue in Device Config : " + JsonConvert.SerializeObject(deviceConfigDto), "DeviceConfigRepositoryServiceBase.UpdateCurrentValue"); await this._deviceConfigRepository.UpdateCurrentValue(deviceConfigDto); } catch (Exception ex) { this._loggingService.Error("An Exception has occurred", "DeviceConfigRepositoryServiceBase.UpdateDeviceConfig", ex); } }
public async Task <bool> Upsert(DeviceConfigDto deviceConfigDto) { try { this._transaction.Upsert(new DeviceConfigDto { DeviceTypeParameterID = deviceConfigDto.DeviceTypeParameterID, DeviceParameterAttributeId = deviceConfigDto.DeviceParameterAttributeId, FutureAttributeValue = deviceConfigDto.FutureAttributeValue, FutureAttrEventUTC = deviceConfigDto.FutureAttrEventUTC, RowInsertedUTC = deviceConfigDto.RowInsertedUTC, UpdateUTC = deviceConfigDto.RowUpdatedUTC, AssetUIDString = deviceConfigDto.AssetUIDString, DeviceConfigID = deviceConfigDto.DeviceConfigID }); return(true); } catch (Exception ex) { this._loggingService.Error("Exception occurred while executing query", MethodInfo.GetCurrentMethod().Name, ex); throw ex; } }
protected virtual IList <TOut> BuildResponse <TIn, TOut>(TIn request, IList <DeviceConfigDto> deviceConfigDtos) where TIn : DeviceConfigRequestBase where TOut : DeviceConfigResponseBase, new() { var deviceConfigServiceResponseDetails = new List <TOut>(); var cachedParameterAttributes = this._parameterAttributeCache.Get(request.DeviceType, request.ParameterGroupName).Result; this._loggingService.Info("Building Response objects from DeviceConfigDtos", "DeviceConfigRepositoryServiceBase.BuildResponse"); foreach (var deviceConfigs in deviceConfigDtos.GroupBy(x => x.AssetUIDString)) { this._loggingService.Info("Building Response object for AssetUID : " + deviceConfigs.First().AssetUIDString + " and Group : " + request.ParameterGroupName + " with the Response model : " + typeof(TOut).Name, "DeviceConfigRepositoryServiceBase.BuildResponse"); dynamic result = new TOut(); DeviceConfigDto configDto = null; foreach (var deviceConfig in deviceConfigs) { var propertyName = this._attributeMaps.Values[deviceConfig.ParameterName + "." + deviceConfig.AttributeName]; if (!string.IsNullOrEmpty(propertyName)) { this._loggingService.Info("Assigning property value for name : " + propertyName + " and value : " + deviceConfig.AttributeValue, "DeviceConfigRepositoryServiceBase.BuildResponse"); TimeSpan timeSpan; DateTime dateTime; if (!string.IsNullOrEmpty(deviceConfig.AttributeValue)) { if (deviceConfig.AttributeValue.Contains(":")) { if (TimeSpan.TryParse(deviceConfig.AttributeValue, out timeSpan)) { SetValue(result, propertyName, timeSpan); } else if (DateTime.TryParse(deviceConfig.AttributeValue, out dateTime)) { SetValue(result, propertyName, dateTime); } } else { SetValue(result, propertyName, deviceConfig.AttributeValue); } } } else { this._loggingService.Error("No property mapping available : " + deviceConfig.ParameterName + "." + deviceConfig.AttributeName + " and value : " + deviceConfig.AttributeValue, "DeviceConfigRepositoryServiceBase.BuildResponse", new Exception("No property mapping available : " + deviceConfig.ParameterName + "." + deviceConfig.AttributeName + " and value : " + deviceConfig.AttributeValue)); } if (configDto == null) { configDto = deviceConfig; } } if (configDto != null) { result.AssetUID = Guid.Parse(configDto.AssetUIDString); result.LastUpdatedOn = Convert.ToDateTime(configDto.UpdateUTC); } deviceConfigServiceResponseDetails.Add(result); } return(deviceConfigServiceResponseDetails); }
protected virtual string GetConfigAttributeName(DeviceConfigDto config) { return(config.ParameterName + "." + config.AttributeName); }
protected virtual string GetAttributeNameForConfig(DeviceConfigDto x) { return(x.ParameterName + "." + x.AttributeName); }
protected override IList <TOut> BuildResponse <TIn, TOut>(TIn request, IList <DeviceConfigDto> deviceConfigDtos) { List <TOut> deviceConfigServiceResponseDetails = new List <TOut>(); var attributeIDs = base.GetAttributeIds(request.DeviceType, request.ParameterGroupName).Result; foreach (var deviceConfigs in deviceConfigDtos.GroupBy(x => x.AssetUIDString)) { DeviceConfigReportingScheduleDetails result = new DeviceConfigReportingScheduleDetails(); DeviceConfigDto configDto = null; var deviceConfigLists = deviceConfigs.ToList(); var attributesNotAvailable = attributeIDs.Keys.Except(deviceConfigLists.Select(y => y.AttributeName)); if (attributesNotAvailable != null && attributesNotAvailable.Any()) { deviceConfigLists.AddRange(attributesNotAvailable.Select(x => new DeviceConfigDto { AttributeName = x })); } foreach (var deviceConfig in deviceConfigLists) { switch (deviceConfig.AttributeName) { case "DailyReportingTime": TimeSpan dailyReportingTime; result.DailyReportingTime = new ValueWithPendingFlag <TimeSpan?> { IsPending = deviceConfig.IsPending }; if (!string.IsNullOrEmpty(deviceConfig.AttributeValue) && TimeSpan.TryParse(deviceConfig.AttributeValue, out dailyReportingTime)) { result.DailyReportingTime.Value = dailyReportingTime; } break; case "DailyLocationReportingFrequency": int dailyLocationReportingFrequency; result.DailyLocationReportingFrequency = new ValueWithPendingFlag <int?> { IsPending = deviceConfig.IsPending }; if (!string.IsNullOrEmpty(deviceConfig.AttributeValue) && Int32.TryParse(deviceConfig.AttributeValue, out dailyLocationReportingFrequency)) { result.DailyLocationReportingFrequency.Value = dailyLocationReportingFrequency; } break; case "HourMeterFuelReport": result.HourMeterFuelReport = new ValueWithPendingFlag <string> { Value = deviceConfig.AttributeValue, IsPending = deviceConfig.IsPending }; break; case "ReportAssetStartStop": result.ReportAssetStartStop = new ValueWithPendingFlag <bool?> { IsPending = deviceConfig.IsPending }; if (!string.IsNullOrEmpty(deviceConfig.AttributeValue)) { result.ReportAssetStartStop.Value = Convert.ToBoolean(deviceConfig.AttributeValue); } break; case "GlobalGram": result.GlobalGram = new ValueWithPendingFlag <bool?> { IsPending = deviceConfig.IsPending }; if (!string.IsNullOrEmpty(deviceConfig.AttributeValue)) { result.GlobalGram.Value = Convert.ToBoolean(deviceConfig.AttributeValue); } break; } if (configDto == null) { configDto = deviceConfig; } } if (configDto != null) { result.AssetUID = Guid.Parse(configDto.AssetUIDString); result.LastUpdatedOn = Convert.ToDateTime(configDto.UpdateUTC); } deviceConfigServiceResponseDetails.Add(result as TOut); } return(deviceConfigServiceResponseDetails); }
protected override IList <TOut> BuildResponse <TIn, TOut>(TIn request, IList <DeviceConfigDto> deviceConfigDtos) { this._loggingService.Info("Building Response objects from DeviceConfigDtos", "DeviceConfigMetersService.BuildResponse"); List <TOut> deviceConfigServiceResponseDetails = new List <TOut>(); var cachedParameterAttributes = this._parameterAttributeCache.Get(request.DeviceType, request.ParameterGroupName).Result; var assetDevices = this._assetDeviceRepository.Fetch(string.Join(",", request.AssetUIDs.Select(assetUID => "UNHEX('" + assetUID + "')").ToArray())).Result; var hoursMeter = cachedParameterAttributes.FirstOrDefault(x => x.AttributeName == "HoursMeter"); var odometer = cachedParameterAttributes.FirstOrDefault(x => x.AttributeName == "Odometer"); var smhOdometerConfig = cachedParameterAttributes.FirstOrDefault(x => x.AttributeName == "SMHOdometerConfig"); foreach (var deviceConfigs in deviceConfigDtos.GroupBy(x => x.AssetUIDString)) { DeviceConfigMetersDetails result = new DeviceConfigMetersDetails(); DeviceConfigDto configDto = null; DeviceConfigurationDefaultsAndConfigurations hourMeterDeserializedObject = null; DeviceConfigurationDefaultsAndConfigurations odoMeterDeserializedObject = null; var metersRequest = request as DeviceConfigMetersRequest; if (odometer != null) { result.OdoMeter = new MeterModel(); result.OdoMeter.CanUpdate = true; } if (hoursMeter != null) { result.HoursMeter = new MeterModel(); result.HoursMeter.CanUpdate = true; } if (hoursMeter != null && !string.IsNullOrEmpty(hoursMeter.DefaultValueJSON)) { hourMeterDeserializedObject = JsonConvert.DeserializeObject <DeviceConfigurationDefaultsAndConfigurations>(hoursMeter.DefaultValueJSON); } if (odometer != null && !string.IsNullOrEmpty(odometer.DefaultValueJSON)) { odoMeterDeserializedObject = JsonConvert.DeserializeObject <DeviceConfigurationDefaultsAndConfigurations>(odometer.DefaultValueJSON); } if (odoMeterDeserializedObject != null && odoMeterDeserializedObject.Configurations != null) { if (result.OdoMeter != null) { result.OdoMeter.AllowBackward = odoMeterDeserializedObject.Configurations.MetersConfig.AllowBackward; } } if (hourMeterDeserializedObject != null && hourMeterDeserializedObject.Configurations != null) { if (result.HoursMeter != null) { result.HoursMeter.AllowBackward = hourMeterDeserializedObject.Configurations.MetersConfig.AllowBackward; } } if (smhOdometerConfig != null) { if (deviceConfigs.Any(x => x.AttributeName == "SMHOdometerConfig" && x.AttributeValue == MetersSmhOdometerConfig.J1939.ToString())) { if (result.HoursMeter != null) { result.HoursMeter.CanUpdate = false; } } } if (assetDevices != null && assetDevices.Count() > 0) { var device = assetDevices.FirstOrDefault(x => x.AssetUID == deviceConfigs.FirstOrDefault().AssetUID&& string.Compare(x.DeviceType, request.DeviceType) == 0); //CatVIMS check if (device != null && hourMeterDeserializedObject != null && hourMeterDeserializedObject.Configurations != null && hourMeterDeserializedObject.Configurations.MetersConfig != null && hourMeterDeserializedObject.Configurations.MetersConfig.NotAllowedModuleType != null && hourMeterDeserializedObject.Configurations.MetersConfig.NotAllowedModuleType.Contains(device.ModuleType)) { if (result.HoursMeter != null) { result.HoursMeter.CanUpdate = false; } } } foreach (var deviceConfig in deviceConfigs) { switch (deviceConfig.AttributeName) { case "SMHOdometerConfig": result.SmhOdometerConfig = deviceConfig.AttributeValue; break; case "Odometer": if (!string.IsNullOrEmpty(deviceConfig.AttributeValue)) { result.OdoMeter.Value = Convert.ToDouble(deviceConfig.AttributeValue); } break; case "HoursMeter": if (!string.IsNullOrEmpty(deviceConfig.AttributeValue)) { result.HoursMeter.Value = Convert.ToDouble(deviceConfig.AttributeValue); } break; } if (configDto == null) { configDto = deviceConfig; } } if (configDto != null) { result.AssetUID = Guid.Parse(configDto.AssetUIDString); result.LastUpdatedOn = Convert.ToDateTime(configDto.UpdateUTC); } deviceConfigServiceResponseDetails.Add(result as TOut); } return(deviceConfigServiceResponseDetails); }
protected override IList <TOut> BuildResponse <TIn, TOut>(TIn request, IList <DeviceConfigDto> deviceConfigDtos) { List <TOut> deviceConfigServiceResponseDetails = new List <TOut>(); var attributeIDs = base.GetAttributeIds(request.DeviceType, request.ParameterGroupName).Result; foreach (var deviceConfigs in deviceConfigDtos.GroupBy(x => x.AssetUIDString)) { DeviceConfigFaultCodeReportingDetails result = new DeviceConfigFaultCodeReportingDetails(); DeviceConfigDto configDto = null; var deviceConfigLists = deviceConfigs.ToList(); var attributesNotAvailable = attributeIDs.Keys.Except(deviceConfigLists.Select(y => y.AttributeName)); if (attributesNotAvailable != null && attributesNotAvailable.Any()) { deviceConfigLists.AddRange(attributesNotAvailable.Select(x => new DeviceConfigDto { AttributeName = x })); } foreach (var deviceConfig in deviceConfigLists) { switch (deviceConfig.AttributeName) { case "LowSeverityEvents": result.LowSeverityEvents = new ValueWithPendingFlag <string> { Value = deviceConfig.AttributeValue, IsPending = deviceConfig.IsPending }; break; case "MediumSeverityEvents": result.MediumSeverityEvents = new ValueWithPendingFlag <string> { Value = deviceConfig.AttributeValue, IsPending = deviceConfig.IsPending }; break; case "HighSeverityEvents": result.HighSeverityEvents = new ValueWithPendingFlag <string> { Value = deviceConfig.AttributeValue, IsPending = deviceConfig.IsPending }; break; case "DiagnosticReportFrequency": result.DiagnosticReportFrequency = new ValueWithPendingFlag <string> { Value = deviceConfig.AttributeValue, IsPending = deviceConfig.IsPending }; break; case "NextSentEventInHours": result.NextSentEventInHours = new ValueWithPendingFlag <int?> { IsPending = deviceConfig.IsPending }; if (!string.IsNullOrEmpty(deviceConfig.AttributeValue)) { result.NextSentEventInHours.Value = Convert.ToInt32(deviceConfig.AttributeValue); } break; case "EventDiagnosticFilterInterval": result.EventDiagnosticFilterInterval = new ValueWithPendingFlag <int?> { IsPending = deviceConfig.IsPending }; if (!string.IsNullOrEmpty(deviceConfig.AttributeValue)) { result.EventDiagnosticFilterInterval.Value = Convert.ToInt32(deviceConfig.AttributeValue); } break; } if (configDto == null) { configDto = deviceConfig; } } if (configDto != null) { result.AssetUID = Guid.Parse(configDto.AssetUIDString); result.LastUpdatedOn = Convert.ToDateTime(configDto.UpdateUTC); } deviceConfigServiceResponseDetails.Add(result as TOut); } return(deviceConfigServiceResponseDetails); }