Exemplo n.º 1
0
        public static async Task <RepositoryResponse <PaginationModel <TView> > > GetListPostByAddictionalField <TView>(
            string fieldName, object fieldValue, string culture, MixEnums.MixDataType dataType
            , MixEnums.CompareType filterType = MixEnums.CompareType.Eq
            , string orderByPropertyName      = null, Heart.Enums.MixHeartEnums.DisplayDirection direction = Heart.Enums.MixHeartEnums.DisplayDirection.Asc, int?pageSize = null, int?pageIndex = null
            , MixCmsContext _context          = null, IDbContextTransaction _transaction = null)
            where TView : ViewModelBase <MixCmsContext, MixPost, TView>
        {
            UnitOfWorkHelper <MixCmsContext> .InitTransaction(_context, _transaction, out MixCmsContext context, out IDbContextTransaction transaction, out bool isRoot);

            try
            {
                var result = new RepositoryResponse <PaginationModel <TView> >()
                {
                    IsSucceed = true,
                    Data      = new PaginationModel <TView>()
                    {
                        PageIndex = pageIndex.HasValue ? pageIndex.Value : 0,
                        PageSize  = pageSize
                    }
                };
                // Get Value Predicate By Type
                Expression <Func <MixAttributeSetValue, bool> > valPredicate = m => m.AttributeSetName == MixConstants.AttributeSetName.ADDITIONAL_FIELD_POST &&
                                                                               m.AttributeFieldName == fieldName;

                var pre = GetValuePredicate(fieldValue.ToString(), filterType, dataType);
                if (pre != null)
                {
                    valPredicate = Mix.Heart.Helpers.ReflectionHelper.CombineExpression(valPredicate, pre, Heart.Enums.MixHeartEnums.ExpressionMethod.And);
                }

                var query        = context.MixAttributeSetValue.Where(valPredicate).Select(m => m.DataId).Distinct();
                var dataIds      = query.ToList();
                var relatedQuery = context.MixRelatedAttributeData.Where(
                    m => m.ParentType == MixEnums.MixAttributeSetDataType.Post.ToString() && m.Specificulture == culture &&
                    dataIds.Any(d => d == m.DataId));
                var postIds = relatedQuery.Select(m => int.Parse(m.ParentId)).Distinct().AsEnumerable().ToList();
                result = await DefaultRepository <MixCmsContext, MixPost, TView> .Instance.GetModelListByAsync(
                    m => m.Specificulture == culture && postIds.Any(p => p == m.Id)
                    , orderByPropertyName, direction
                    , pageSize ?? 100, pageIndex ?? 0
                    , null, null
                    , context, transaction);

                return(result);
            }
            catch (Exception ex)
            {
                return(UnitOfWorkHelper <MixCmsContext> .HandleException <PaginationModel <TView> >(ex, isRoot, transaction));
            }
            finally
            {
                if (isRoot)
                {
                    //if current Context is Root
                    context.Dispose();
                }
            }
        }
Exemplo n.º 2
0
        public static Expression <Func <TModel, bool> > FilterObjectSet <TModel, T>(string propName, T data2, MixEnums.CompareType filterType)
        {
            Type type = typeof(TModel);
            var  par  = Expression.Parameter(type, "model");

            Type       fieldPropertyType;
            Expression fieldPropertyExpression;

            FieldInfo fieldInfo = type.GetField(propName);

            if (fieldInfo == null)
            {
                PropertyInfo propertyInfo = type.GetProperty(propName);

                if (propertyInfo == null)
                {
                    throw new Exception();
                }

                fieldPropertyType       = propertyInfo.PropertyType;
                fieldPropertyExpression = Expression.Property(par, propertyInfo);
            }
            else
            {
                fieldPropertyType       = fieldInfo.FieldType;
                fieldPropertyExpression = Expression.Field(par, fieldInfo);
            }

            BinaryExpression eq = null;

            switch (filterType)
            {
            case MixEnums.CompareType.Eq:
                eq = Expression.Equal(fieldPropertyExpression,
                                      Expression.Constant(data2, fieldPropertyType));
                break;

            case MixEnums.CompareType.Lt:
                eq = Expression.LessThan(fieldPropertyExpression,
                                         Expression.Constant(data2, fieldPropertyType));
                break;

            case MixEnums.CompareType.Gt:
                eq = Expression.GreaterThan(fieldPropertyExpression,
                                            Expression.Constant(data2, fieldPropertyType));
                break;

            case MixEnums.CompareType.Lte:
                eq = Expression.LessThanOrEqual(fieldPropertyExpression,
                                                Expression.Constant(data2, fieldPropertyType));
                break;

            case MixEnums.CompareType.Gte:
                eq = Expression.GreaterThanOrEqual(fieldPropertyExpression,
                                                   Expression.Constant(data2, fieldPropertyType));
                break;

            case MixEnums.CompareType.In:
                var method = typeof(string).GetMethod("Contains");
                var call   = Expression.Call(par, method, Expression.Constant(data2, typeof(string)));
                return(Expression.Lambda <Func <TModel, bool> >(call, par));

            default:
                break;
            }
            return(Expression.Lambda <Func <TModel, bool> >(eq, par));
        }
Exemplo n.º 3
0
        private static Expression <Func <MixAttributeSetValue, bool> > GetValuePredicate(string fieldValue
                                                                                         , MixEnums.CompareType filterType, MixEnums.MixDataType dataType)
        {
            Expression <Func <MixAttributeSetValue, bool> > valPredicate = null;

            switch (dataType)
            {
            case MixEnums.MixDataType.Date:
            case MixEnums.MixDataType.Time:
                if (DateTime.TryParse(fieldValue, out DateTime dtValue))
                {
                    valPredicate = FilterObjectSet <MixAttributeSetValue, DateTime>("DateTimeValue", dtValue, filterType);
                }
                break;

            case MixEnums.MixDataType.Double:
                if (double.TryParse(fieldValue, out double dbValue))
                {
                    valPredicate = FilterObjectSet <MixAttributeSetValue, double>("DoubleValue", dbValue, filterType);
                }
                break;

            case MixEnums.MixDataType.Boolean:
                if (bool.TryParse(fieldValue, out bool boolValue))
                {
                    valPredicate = FilterObjectSet <MixAttributeSetValue, bool>("BooleanValue", boolValue, filterType);
                }
                break;

            case MixEnums.MixDataType.Integer:
                if (int.TryParse(fieldValue, out int intValue))
                {
                    valPredicate = FilterObjectSet <MixAttributeSetValue, int>("IntegerValue", intValue, filterType);
                }
                break;

            case MixEnums.MixDataType.Reference:
                break;

            case MixEnums.MixDataType.Duration:
            case MixEnums.MixDataType.Custom:
            case MixEnums.MixDataType.DateTime:
            case MixEnums.MixDataType.PhoneNumber:
            case MixEnums.MixDataType.Text:
            case MixEnums.MixDataType.Html:
            case MixEnums.MixDataType.MultilineText:
            case MixEnums.MixDataType.EmailAddress:
            case MixEnums.MixDataType.Password:
            case MixEnums.MixDataType.Url:
            case MixEnums.MixDataType.ImageUrl:
            case MixEnums.MixDataType.CreditCard:
            case MixEnums.MixDataType.PostalCode:
            case MixEnums.MixDataType.Upload:
            case MixEnums.MixDataType.Color:
            case MixEnums.MixDataType.Icon:
            case MixEnums.MixDataType.VideoYoutube:
            case MixEnums.MixDataType.TuiEditor:
            case MixEnums.MixDataType.QRCode:
            default:
                valPredicate = FilterObjectSet <MixAttributeSetValue, string>("StringValue", fieldValue, filterType);
                break;
            }

            return(valPredicate);
        }
Exemplo n.º 4
0
		public static Expression<Func<TModel, bool>> FilterObjectSet<TModel, T>(string propName, T data2, MixEnums.CompareType filterType)
		{
			V_0 = Type.GetTypeFromHandle(// 
Exemplo n.º 5
0
		private static Expression<Func<MixAttributeSetValue, bool>> GetValuePredicate(string fieldValue, MixEnums.CompareType filterType, MixEnums.MixDataType dataType)
		{
			V_0 = null;
			switch (dataType)
			{
				case 0:
				case 1:
				case 4:
				case 5:
				case 7:
				case 8:
				case 9:
				case 10:
				case 11:
				case 12:
				case 13:
				case 14:
				case 15:
				case 16:
				case 17:
				case 19:
				case 20:
				case 21:
				case 24:
				{
				Label1:
					V_0 = MixCmsHelper.FilterObjectSet<MixAttributeSetValue, string>("StringValue", fieldValue, filterType);
					goto Label0;
				}
				case 2:
				case 3:
				{
					if (!DateTime.TryParse(fieldValue, out V_1))
					{
						goto Label0;
					}
					V_0 = MixCmsHelper.FilterObjectSet<MixAttributeSetValue, DateTime>("DateTimeValue", V_1, filterType);
					goto Label0;
				}
				case 6:
				{
					if (!double.TryParse(fieldValue, out V_2))
					{
						goto Label0;
					}
					V_0 = MixCmsHelper.FilterObjectSet<MixAttributeSetValue, double>("DoubleValue", V_2, filterType);
					goto Label0;
				}
				case 18:
				{
					if (!bool.TryParse(fieldValue, out V_3))
					{
						goto Label0;
					}
					V_0 = MixCmsHelper.FilterObjectSet<MixAttributeSetValue, bool>("BooleanValue", V_3, filterType);
					goto Label0;
				}
				case 22:
				{
					if (!int.TryParse(fieldValue, out V_4))
					{
						goto Label0;
					}
					V_0 = MixCmsHelper.FilterObjectSet<MixAttributeSetValue, int>("IntegerValue", V_4, filterType);
					goto Label0;
				}
				case 23:
				{
				Label0:
					return V_0;
				}
				default:
				{
					goto Label1;
				}
			}
		}
Exemplo n.º 6
0
			V_2 = Expression.Parameter(Type.GetTypeFromHandle(// 
			// Current member / type: System.Collections.Generic.List`1<Mix.Cms.Lib.ViewModels.MixPages.ReadListItemViewModel> Mix.Cms.Lib.MixCmsHelper::GetCategory(Microsoft.AspNetCore.Mvc.IUrlHelper,System.String,Mix.Cms.Lib.MixEnums/MixPageType,System.String)
			// Exception in: System.Collections.Generic.List<Mix.Cms.Lib.ViewModels.MixPages.ReadListItemViewModel> GetCategory(Microsoft.AspNetCore.Mvc.IUrlHelper,System.String,Mix.Cms.Lib.MixEnums/MixPageType,System.String)
			// Specified method is not supported.
			// 
			// mailto: [email protected]


		public static async Task<RepositoryResponse<PaginationModel<TView>>> GetListPostByAddictionalField<TView>(string fieldName, object fieldValue, string culture, MixEnums.MixDataType dataType, MixEnums.CompareType filterType = 1, string orderByPropertyName = null, MixHeartEnums.DisplayDirection direction = 0, int? pageSize = null, int? pageIndex = null, MixCmsContext _context = null, IDbContextTransaction _transaction = null)
		where TView : ViewModelBase<MixCmsContext, MixPost, TView>
		{
			V_0.fieldName = fieldName;
			V_0.fieldValue = fieldValue;
			V_0.culture = culture;
			V_0.dataType = dataType;
			V_0.filterType = filterType;
			V_0.orderByPropertyName = orderByPropertyName;
			V_0.direction = direction;
			V_0.pageSize = pageSize;
			V_0.pageIndex = pageIndex;
			V_0._context = _context;
			V_0._transaction = _transaction;
			V_0.u003cu003et__builder = AsyncTaskMethodBuilder<RepositoryResponse<PaginationModel<TView>>>.Create();
			V_0.u003cu003e1__state = -1;
			V_0.u003cu003et__builder.Start<MixCmsHelper.u003cGetListPostByAddictionalFieldu003ed__15<TView>>(ref V_0);
			return V_0.u003cu003et__builder.get_Task();
		}