Пример #1
0
        public virtual IQueryable GetComboBoxSource(
            PropertyMetaData propertyMetaData, bool onlyActive, string filter)
        {
            var relatedMeta = MetaDataProvider.Get(
                propertyMetaData.ForeignType());
            var idProperty = LinqToSqlUtils.GetPKPropertyName(relatedMeta.EntityType);
            var selector   = "new(" + idProperty +
                             " as " + propertyMetaData.Info.Name +
                             ", " + relatedMeta.DisplayProperty().Name + ")";

            var result =
                DynamicRepository.GetAll(propertyMetaData.ForeignType());

            if (filter != null)
            {
                result = result.Where(filter);
            }

            /*       if(onlyActive)
             *         foreach (var property in Const.Common.ActiveProperties)
             *         {
             *             if(propertyMetaData.ForeignType.HasProperty(property))
             *                 result = result.Where(property);
             *         }*/

            return(result.Select(selector));
        }
Пример #2
0
        private static List <SelectListItem> GetSelectedListItems(
            PropertyMetaData property, System.Collections.IEnumerable source)
        {
            var          result = new List <SelectListItem>();
            var          relatedPropertyType = property.ForeignType();
            var          foreignMetaData     = MetaDataProvider.Get(relatedPropertyType);
            var          first        = true;
            PropertyInfo propertyInfo = null;

            foreach (var o in source)
            {
                object id;
                if (first)
                {
                    propertyInfo = o.GetType().GetProperty(property.Info.Name);
                    first        = false;
                }
                if (propertyInfo != null)
                {
                    id = o.GetValue(property.Info.Name);
                }
                else
                {
                    id = o.GetValue(LinqToSqlUtils.GetPKPropertyName(
                                        foreignMetaData.EntityType));
                }
                result.Add(new SelectListItem
                {
                    Text  = GetDisplay(o, foreignMetaData).ToString(),
                    Value = id.ToString()
                });
            }

            return(result.OrderBy(sli => sli.Text).ToList());
        }
Пример #3
0
        public string GetSelector(PropertyMetaData propertyMetaData,
                                  bool withoutProperty)
        {
            var relatedMeta = MetaDataProvider.Get(propertyMetaData.ForeignType());
            var property    = string.Empty;

            if (!withoutProperty && propertyMetaData.ForeignInfo() != null)
            {
                property = propertyMetaData.ForeignInfo().Name + ".";
            }
            var idProperty = property
                             + LinqToSqlUtils.GetPKPropertyName(relatedMeta.EntityType);

            return("new(" + idProperty +
                   " as " + propertyMetaData.Info.Name +
                   ", " + property +
                   relatedMeta.DisplayProperty().Name + ")");
        }
Пример #4
0
        private void AddFilterValueToSource(PropertyMetaData propertyMetaData,
                                            object filterValue, ICollection <object> source)
        {
            var nameValue = source.Where(o => o.GetValue(propertyMetaData.Info.Name)
                                         .Equals(filterValue));

            if (nameValue.Count() == 0)
            {
                var foreignType = propertyMetaData.ForeignType();
//                if(propertyMetaData.ForeignInfo() != null)
                var item = DynamicRepository.GetAll(
                    foreignType)
                           .Where(LinqToSqlUtils
                                  .GetPKPropertyName(foreignType) + "= @0", filterValue)
                           .Select(GetSelector(propertyMetaData, true))
                           .Cast <object>().First();

/*                else {
 *                  item = DynamicRepository.GetByPK( foreignType, filterValue); }*/

                source.Add(item);
            }
        }
Пример #5
0
        public static object GetValueForProperty(PropertyMetaData property, object item, UrlHelper url)
        {
            object value;

            if (property.Control() == Controls.Select)
            {
                var foreignType     = property.ForeignType();
                var foreignMetaData = MetaDataProvider.Get(
                    foreignType);
                object foreignValue = null;


                if (property.ForeignInfo() != null)
                {
                    foreignValue = item.GetValue(property.ForeignInfo().Name);
                }
                else
                {
                    var id = item.GetValue(property.Name);
                    if (id != null)
                    {
                        foreignValue = DynamicRepository.GetByPK(foreignType, id);
                    }
                }
                Contract.NotNull(new { foreignMetaData }, new { foreignType });
                if (!foreignMetaData.IsReadOnly())
                {
                    value = new ListVM.EntityLink(
                        foreignValue,
                        foreignMetaData, url);
                }
                else
                {
                    value = GetDisplay(foreignValue);
                }
            }
            else
            {
                var metaData = MetaDataProvider.Get(item.GetType());
                if (metaData.DisplayProperty() != null && property.Name == metaData.DisplayProperty().Name)
                {
                    value = new ListVM.EntityLink(item, metaData, url);
                }
                else
                {
                    var propertyValue = property.Info.GetValue(item);
                    if (property.GetAttribute <FullLengthStringDisplayAttribute>() != null)
                    {
                        value = propertyValue.NotNullString();
                    }
                    else
                    {
                        value = GetDisplay(propertyValue);
                        if (property.Format() != null)
                        {
                            value = value.NotNullString(property.Format());
                        }
                    }
                }
            }
            return(value);
        }