示例#1
0
        public Filter Make(FilterDefinition definition, View parentNode)
        {
            var filter = new UI.Filter()
            {
                FilterType = Mapper.Map <UI.FilterType>(definition.FilterType),
                Definition = definition
            };

            filter.Props = new Dictionary <string, object>()
            {
                { "Id", definition.Id },
                { "ViewId", definition.ViewId },
                { "Width", definition.Width },
                { "Order", definition.Order },
                { "DisplayName", !string.IsNullOrEmpty(definition.DisplayName) ?
                  definition.DisplayName : string.Join(", ", ((DAL.Models.Filter)definition.Entity).Fields.Select(f => f.Name)) }
            };

            filter.Value = definition.DefaultValue;

            filter.Fields = definition
                            .Fields
                            .Select(fDef => BehaviourSelector.FieldBehaviours[Mapper.Map <UI.FieldType>(fDef.FieldType)](CurrentUser).Make(fDef, filter))
                            .ToList();

            return(filter);
        }
示例#2
0
        public Filter Make(FilterDefinition definition, View parentNode)
        {
            var filter = new UI.Filter()
            {
                FilterType = Mapper.Map <UI.FilterType>(definition.FilterType),
                Definition = definition
            };

            var dalFilter = (DAL.Models.Filter)definition.Entity;

            if (dalFilter.Fields.Count != 1 && !dalFilter.Fields.First().FieldType.In(DAL.Models.FieldType.Dictionary))
            {
                throw new CustomValidationException($"Dictionary filter (Id = {definition.Id}) must be linked to one dictionary field.");
            }

            filter.Props.Add("Id", definition.Id);
            filter.Props.Add("Width", definition.Width);
            filter.Props.Add("Order", definition.Order);
            filter.Props.Add("ViewId", definition.ViewId);
            filter.Props.Add("FieldId", dalFilter.Fields.First().Id);

            filter.Props.Add("DisplayName", !string.IsNullOrEmpty(definition.DisplayName) ?
                             definition.DisplayName : string.Join(", ", ((DAL.Models.Filter)definition.Entity).Fields.Select(f => f.Name)));

            var options        = DbDictionaryCache.GetDictionaryRecords(dalFilter.Fields.First().Dictionary);
            var controlOptions = options.Select(i => new KeyValuePair <object, string>(i.Key, i.Value)).ToList();

            controlOptions.Insert(0, new KeyValuePair <object, string>(null, ""));

            filter.Props.Add("Options", controlOptions);

            filter.Fields = definition
                            .Fields
                            .Select(fDef => BehaviourSelector.FieldBehaviours[Mapper.Map <UI.FieldType>(fDef.FieldType)](CurrentUser).Make(fDef, filter))
                            .ToList();


            return(filter);
        }