Exemplo n.º 1
0
        public virtual IList <TEntry> Get(Func <IQueryable <TEntry>, IList <TEntry> > delegateExpr, GetEntityMode getTypes)
        {
            if (delegateExpr == null)
            {
                throw new ArgumentNullException(nameof(delegateExpr));
            }
            var repositoryQuery = RepositoryFactory.GetRepository <TRepository>().GetQueryable();

            return(GetInternal(repositoryQuery, delegateExpr, getTypes));
        }
Exemplo n.º 2
0
        public virtual IList <TEntry> GetInternal(IQueryable <TEntry> repositoryQuery, Func <IQueryable <TEntry>, IList <TEntry> > delegateExpr, GetEntityMode getTypes)
        {
            List <TEntry> result = null;

            switch (getTypes)
            {
            case GetEntityMode.NotDeletedAndNotVersion:
                result = delegateExpr(repositoryQuery).ToList();
                break;

            case GetEntityMode.Deleted:
                try
                {
                    RepositoryFactory.DisableDeletedFilter();
                    repositoryQuery = repositoryQuery.Where("IsDeleted");
                    result          = delegateExpr(repositoryQuery).ToList();
                }
                finally
                {
                    RepositoryFactory.EnableDeletedFilter();
                }
                break;

            case GetEntityMode.DeletedAndOther:
                try
                {
                    RepositoryFactory.DisableDeletedFilter();
                    result = delegateExpr(repositoryQuery).ToList();
                }
                finally
                {
                    RepositoryFactory.EnableDeletedFilter();
                }
                break;

            case GetEntityMode.Version:
                try
                {
                    RepositoryFactory.DisableVersionsFilter();
                    repositoryQuery = repositoryQuery.Where("IsVersion");
                    result          = delegateExpr(repositoryQuery).ToList();
                }
                finally
                {
                    RepositoryFactory.EnableVersionsFilter();
                }
                break;

            case GetEntityMode.VersionAndOther:
                try
                {
                    RepositoryFactory.DisableVersionsFilter();
                    result = delegateExpr(repositoryQuery).ToList();
                }
                finally
                {
                    RepositoryFactory.EnableVersionsFilter();
                }
                break;

            case GetEntityMode.VersionAndDeleted:
                try
                {
                    RepositoryFactory.DisableVersionsFilter();
                    RepositoryFactory.DisableDeletedFilter();
                    repositoryQuery = repositoryQuery.Where("IsVersion", "IsDeleted");
                    result          = delegateExpr(repositoryQuery).ToList();
                }
                finally
                {
                    RepositoryFactory.EnableVersionsFilter();
                    RepositoryFactory.EnableDeletedFilter();
                }
                break;

            case GetEntityMode.DeletedAndVersionAndOther:
                try
                {
                    RepositoryFactory.DisableVersionsFilter();
                    RepositoryFactory.DisableDeletedFilter();
                    result = delegateExpr(repositoryQuery.Where("IsVersion", "IsDeleted")).ToList();
                }
                finally
                {
                    RepositoryFactory.EnableVersionsFilter();
                    RepositoryFactory.EnableDeletedFilter();
                    if (result != null)
                    {
                        result.AddRange(delegateExpr(repositoryQuery));
                    }
                    else
                    {
                        result = delegateExpr(repositoryQuery).ToList();
                    }
                }
                break;
            }
            return(result);
        }