public int AddRule(AddRuleDomain rule, UserDomain user) { if (rule == null) { throw new NsiArgumentException(ExceptionMessages.ArgumentException); } return(_ruleRepository.AddRule(rule, user)); }
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); }
/// <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)); }
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); }