Exemplo n.º 1
0
 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);
     }
 }
Exemplo n.º 2
0
 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;
     }
 }
Exemplo n.º 3
0
        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);
        }
Exemplo n.º 4
0
 protected virtual string GetConfigAttributeName(DeviceConfigDto config)
 {
     return(config.ParameterName + "." + config.AttributeName);
 }
Exemplo n.º 5
0
 protected virtual string GetAttributeNameForConfig(DeviceConfigDto x)
 {
     return(x.ParameterName + "." + x.AttributeName);
 }
Exemplo n.º 6
0
        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);
        }
Exemplo n.º 7
0
        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);
        }
Exemplo n.º 8
0
        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);
        }