Esempio n. 1
0
        public int AddRule(AddRuleDomain rule, UserDomain user)
        {
            if (rule == null)
            {
                throw new NsiArgumentException(ExceptionMessages.ArgumentException);
            }

            return(_ruleRepository.AddRule(rule, user));
        }
Esempio n. 2
0
        public int AddRule(AddRuleDomain rule, UserDomain user)
        {
            // Validate conditions
            foreach (var condition in rule.Conditions)
            {
                var device = _context.Device.Find(condition.DeviceId);

                if (device == null)
                {
                    throw new NsiArgumentException("Device does not exist.");
                }

                if (device.DeviceType.Property.First(property => property.PropertyId == condition.ParameterId) == null)
                {
                    throw new NsiArgumentException("Parameter is not defined for the selected device.");
                }
            }

            // Validate actions
            foreach (var action in rule.Actions)
            {
                var device = _context.Device.Find(action.DeviceId);

                if (device == null)
                {
                    throw new NsiArgumentException("Device does not exist.");
                }

                if (device.DeviceType.Action.First(current => current.ActionId == action.ActionId) == null)
                {
                    throw new NsiArgumentException("Action is not defined for the selected device.");
                }
            }

            // Create everything
            var ruleObject = new Rule().FromDomainModel(rule, user);

            foreach (var condition in rule.Conditions)
            {
                ruleObject.RuleCondition.Add(new RuleCondition().FromDomainModel(condition, user));
            }

            foreach (var action in rule.Actions)
            {
                ruleObject.RuleAction.Add(new RuleAction().FromDomainModel(action, user));
            }

            _context.Rule.Add(ruleObject);
            _context.SaveChanges();

            return(ruleObject.RuleId);
        }
Esempio n. 3
0
        /// <summary>
        /// Adds new rule
        /// </summary>
        /// <returns><see cref="int"/></returns>
        public HttpResponseMessage AddRule([FromBody] AddRuleDomain rule)
        {
            if (!ModelState.IsValid)
            {
                return(Request.CreateErrorResponse(System.Net.HttpStatusCode.BadRequest, ModelState));
            }

            UserDomain user = (UserDomain)ActionContext.Request.Properties["UserDetails"];

            _ruleManipulation.AddRule(rule, user);

            return(new HttpResponseMessage(System.Net.HttpStatusCode.Created));
        }
Esempio n. 4
0
        public static Rule FromDomainModel(this Rule obj, AddRuleDomain rule, UserDomain user)
        {
            if (obj == null)
            {
                obj = new Rule();
            }

            obj.Name        = rule.Name;
            obj.Description = rule.Description;
            obj.TenantId    = user.TenantId;

            return(obj);
        }