コード例 #1
0
        public bool Evaluate(RuleDomain rule)
        {
            ComparatorFactory factory = new ComparatorFactory();

            foreach (var condition in rule.Conditions)
            {
                var latestDevicePing = _devicePingRepository.LastDevicePingForDevice(condition.Device.DeviceId);

                DevicePropertyValue latestValue = latestDevicePing.DevicePropertyValues.Find(
                    x => x.PropertyId == condition.Property.PropertyId
                    );

                if (!factory.Make(condition.ComparisonOperator).Compare(latestValue.Value, condition.ComparisonValue))
                {
                    return(false);
                }
            }

            return(true);
        }
コード例 #2
0
        public static EF.DevicePropertyValue FromDomainModel(this EF.DevicePropertyValue obj, DevicePropertyValue domain)
        {
            if (obj == null)
            {
                obj = new EF.DevicePropertyValue();
            }

            obj.DevicePropertyValueId = domain.Id;
            obj.DateCreated           = domain.DateCreated;
            obj.DeviceId      = domain.DeviceId;
            obj.DevicePingId  = domain.DevicePingId;
            obj.PropertyId    = domain.PropertyId;
            obj.PropertyValue = domain.Value;
            obj.PropertyId    = domain.PropertyId;

            return(obj);
        }
コード例 #3
0
ファイル: DeviceService.cs プロジェクト: maja06/TestProject-1
        // ---------------------------- CREATE OR UPDATE DEVICE -----------------------------//
        // --------------------------------- STEP 3 (last)---------------------------------//
        public void CreateOrUpdateDevice(CreateDeviceDto device)
        {
            if (device.Id == 0)
            {
                var newDevice = new Device
                {
                    Name         = device.DeviceName,
                    Description  = device.Description,
                    DeviceTypeId = device.DeviceTypeId
                };

                _deviceRepository.Insert(newDevice);

                foreach (var deviceType in device.DeviceTypes)
                {
                    var propValues = deviceType.PropValues;

                    foreach (var propValue in propValues)
                    {
                        _valueRepository.Insert(new DevicePropertyValue
                        {
                            Value = propValue.Value,
                            DeviceTypePropertyId = _propertyRepository.FirstOrDefault(x =>
                                                                                      x.DeviceTypeId == deviceType.Id && x.Name == propValue.PropName).Id,
                            DeviceId = newDevice.Id
                        });
                    }
                }

                return;
            }

            var targetDevice = _deviceRepository.GetAll().Include(x => x.DevicePropertyValues)
                               .First(x => x.Id == device.Id);

            targetDevice.Name        = device.DeviceName;
            targetDevice.Description = device.Description;

            if (targetDevice.DeviceTypeId != device.DeviceTypeId)
            {
                var oldTypes = _typeService.GetDeviceTypeWithParents(targetDevice.DeviceTypeId).ToList();

                var newTypes = _typeService.GetDeviceTypeWithParents(device.DeviceTypeId).ToList();

                foreach (var oldType in oldTypes)
                {
                    var type = newTypes.FirstOrDefault(x => x.Id == oldType.Id);

                    if (type == null)
                    {
                        foreach (var prop in oldType.DeviceTypeProperties)
                        {
                            var valueToDelete =
                                targetDevice.DevicePropertyValues.FirstOrDefault(x =>
                                                                                 x.DeviceTypePropertyId == prop.Id);

                            if (valueToDelete == null)
                            {
                                continue;
                            }

                            _valueRepository.Delete(valueToDelete);
                        }
                    }
                }
            }

            foreach (var deviceType in device.DeviceTypes)
            {
                foreach (var propValue in deviceType.PropValues)
                {
                    var property = _propertyRepository.GetAll().Include(x => x.DeviceType).First(x =>
                                                                                                 x.DeviceTypeId == deviceType.Id && x.Name == propValue.PropName);

                    var values = _valueRepository.GetAll().Include(x => x.Device)
                                 .Include(x => x.DeviceTypeProperty);

                    var value = values.FirstOrDefault(x =>
                                                      x.DeviceId == targetDevice.Id && x.DeviceTypePropertyId == property.Id);

                    if (propValue.Value != null)
                    {
                        if (value == null)
                        {
                            var newValue = new DevicePropertyValue
                            {
                                DeviceId             = targetDevice.Id,
                                DeviceTypePropertyId = property.Id,
                                Value = propValue.Value
                            };

                            targetDevice.DevicePropertyValues.Add(newValue);

                            continue;
                        }

                        value.Value = propValue.Value;
                    }
                }
            }

            targetDevice.DeviceTypeId = device.DeviceTypeId;
        }