WithReport <TDerived>(Expression <Func <TFlowDataType, TDerived> > property, string name = null, string icon = null) { var expression = (MemberExpression)property.Body; var attrs = expression.Member.GetCustomAttributes(false); var validators = GenerateValidationModel.Generate(attrs, _validationMapper); var modelProperty = expression.Member.Name.FirstCharToLower(); name = name != null ? name : modelProperty; var builder = new CollectionBuilder <TFlowDataType, FlowBuilder <TFlowDataType, TContextType>, TFlowDataType, TDerived, TContextType> (this, name, _elementMapper, _controlMapper, _validationMapper, ElementType.Report); builder.Element.ModelProperty = modelProperty; builder.Element.TaskPath = $"{Flow.TaskPath}.{modelProperty}"; builder.Element.DataType = property.ReturnType; builder.Element.UiTemplate = _elementMapper.GetDefault(ElementType.Report); builder.Element.Icon = icon; builder.Element.Tasks = new List <TaskDefinition>(); // builder.WithTask<DefaultFlowPersistanceTask<TFlowDataType, TContextType>>(TaskTypeEnum.PostTask); if (validators != null) { builder.Element.Validators = validators; } Flow.Steps.Add(builder.Element); return(builder); }
AddArray <TDerived>(Expression <Func <TDataType, ICollection <TDerived> > > property, string name = null, string uiTemplate = null) { var expression = (MemberExpression)property.Body; var attrs = expression.Member.GetCustomAttributes(false); var validators = GenerateValidationModel.Generate(attrs, _validationMapper); var modelProperty = expression.Member.Name.FirstCharToLower(); // name = name != null ? name : modelProperty; var builder = new CollectionBuilder <TFlowDataType, CollectionBuilder <TFlowDataType, TParentType, TParentDataType, TDataType, TContextType>, TDataType, TDerived, TContextType>( this, name, _elementMapper, _controlMapper, _validationMapper, ElementType.Array); builder.Element.ModelProperty = modelProperty; builder.Element.TaskPath = $"{Element.TaskPath}.{modelProperty}[]"; builder.Element.DataType = property.ReturnType.GetGenericArguments()[0]; builder.Element.UiTemplate = uiTemplate ?? _elementMapper.GetDefault(ElementType.Array); builder.Element.Tasks = new List <TaskDefinition>(); var collectionHasId = typeof(TDerived).GetProperties().Any(m => m.Name == "Id__"); if (collectionHasId) { builder.Element.Elements.Add(new Element { ModelProperty = "id__", TaskPath = $"{Element.TaskPath}.{modelProperty}[].id__", ElementType = ElementType.Control, DataType = typeof(Guid), Tasks = new List <TaskDefinition>() }); builder.Element.Elements.Add(new Element { ModelProperty = "operation__", TaskPath = $"{Element.TaskPath}.{modelProperty}[].operation__", ElementType = ElementType.Control, DataType = typeof(ArrayOperation), Tasks = new List <TaskDefinition>() }); } if (validators != null) { builder.Element.Validators = validators; } Element.Elements.Add(builder.Element); return(builder); }
AddPage <TDerived>(Expression <Func <TDataType, TDerived> > property, string name = null) { var expression = (MemberExpression)property.Body; var attrs = expression.Member.GetCustomAttributes(false); var validators = GenerateValidationModel.Generate(attrs, _validationMapper); var modelProperty = expression.Member.Name.FirstCharToLower(); // name = name != null ? name : modelProperty; var builder = new CollectionBuilder <TFlowDataType, CollectionBuilder <TFlowDataType, TParentType, TParentDataType, TDataType, TContextType>, TDataType, TDerived, TContextType> (this, name, _elementMapper, _controlMapper, _validationMapper, ElementType.Page); builder.Element.ModelProperty = modelProperty; builder.Element.TaskPath = $"{Element.TaskPath}.{modelProperty}"; builder.Element.DataType = property.ReturnType; builder.Element.UiTemplate = _elementMapper.GetDefault(ElementType.Page); builder.Element.Tasks = new List <TaskDefinition>(); if (validators != null) { builder.Element.Validators = validators; } Element.Elements.Add(builder.Element); return(builder); }