Esempio n. 1
0
        public FilterViewModel GetFilterViewModel(Property property, FilterDTO filterDto = null)
        {
            var propertyType = (PropertyTypeEnum)Enum.Parse(typeof(PropertyTypeEnum), property.Type.Name, true);

            return(GetFilterViewModel(property.Name, propertyType, property.Id, property.FilterInfo,
                                      property.Constraints, filterDto));
        }
Esempio n. 2
0
        public FilterViewModel GetFilterViewModel(string propertyName, PropertyTypeEnum propertyType, int propertyId, JsonDocument filterInfo, JsonDocument constraints, FilterDTO filterDto = null)
        {
            Type filterViewType = null;

            if (_mapper.ContainsId(propertyId))
            {
                filterViewType = _mapper.GetFilterForProperty(propertyId);
            }
            else if (_mapper.ContainsType(propertyType))
            {
                filterViewType = _mapper.GetFilterForType(propertyType);
            }
            else
            {
                return(null);
            }

            var filterViewModel = (FilterViewModel)_mapper.GetFilterFactory(filterViewType)();

            filterViewModel.PropertyId   = propertyId;
            filterViewModel.PropertyType = propertyType;
            filterViewModel.PropertyName = propertyName;

            dynamic filterInfoJObject  = JsonConvert.DeserializeObject(filterInfo.ToJsonString());
            dynamic constraintsJObject = JsonConvert.DeserializeObject(constraints.ToJsonString());

            if (_buildersMap.ContainsKey(filterViewType))
            {
                filterViewModel = _buildersMap[filterViewType]
                                  .BuildFilterViewModel(filterViewModel, filterInfoJObject, constraintsJObject, filterDto);
            }

            /*else
             * {
             *  var metadata = _mapper.GetFilterPropertiesMetadata(filterViewType);
             *  foreach (var property in metadata)
             *  {
             *      if(filterInfo.RootElement.TryGetProperty(property.Name, out var p))
             *          p.
             *  }
             * }*/

            return(filterViewModel);
        }