public static IIntelliFlowItem Create(Domain.IntelliFlowItem item, IDataContext context) { var fac = _itemFac[(Enums.IntelliFlowItemType)item.ItemTypeId]; var newItem = fac.Create(item.ItemTypeId); IDataRepository <Domain.IntelliFlowItem> itemRepos = new EFDataRepository <Domain.IntelliFlowItem>(context); IDataRepository <Domain.Expression> exprRepos = new EFDataRepository <Domain.Expression>(context); var childItems = itemRepos.Query(x => x.ParentItemId == (long)item.Id).ToArray(); if (!childItems.IsNullOrEmpty()) { var childItemList = new List <IIntelliFlowItem>(); foreach (var child in childItems) { var newChild = _Create(child, context, true); childItemList.Add(newChild); } newItem.Children = new IntelliFlowIterator <IIntelliFlowItem>(childItemList.ToArray()); } if (item.ParentItemId.HasValue) { var parent = itemRepos.Get(item.ParentItemId.Value); var newParent = _Create(parent, context, false); newItem.Parent = newParent; } if (!item.Data.IsNullOrEmpty()) { newItem.Input.Data = BinarySerializer.Deserialize((NEMILTEC.Shared.Enums.Data.DataType)item.DataTypeId, item.Data); } var itemExp = exprRepos.Query(x => x.ParentItemId == (long)item.Id).ToArray(); if (!itemExp.IsNullOrEmpty()) { var paramList = new List <IntelliFlowItemInputParameter>(); foreach (var exp in itemExp) { var param = new IntelliFlowItemInputParameter(); var newExp = ExpressionFactory.Create(exp, context); if (newExp is ValueExpression) { var valExp = newExp as ValueExpression; param.Value = valExp.Value; } param.Expression = newExp; paramList.Add(param); } newItem.Input.Parameters = paramList; } return(newItem); }
public static object GetValue(this IntelliFlowItemInputParameter parameter, object data) { return(parameter.Expression != null? parameter.Expression.Evaluate(data) : parameter.Value); }