public RepositoryQueryArguments(PagingArgument paging)
     : base(paging)
 {
     this.Visibility  = VisibilityArgument.Unused;
     this.Affiliation = AffiliationArgument.Unused;
     this.Type        = TypeArgument.Unused;
     this.Sort        = SortArgument.Unused;
     this.Direction   = DirectionArgument.Unused;
 }
        public Core.DomainModel.Business[] SearchBusiness(Func <IList <SearchingArgument>, object> QueryExpressionFunction, IList <SearchingArgument> SearchingArguments, PagingArgument PagingArgument, bool IsIncludingConfigurations)
        {
            List <Core.DomainModel.Business>      businesses     = new List <Core.DomainModel.Business>();
            List <Core.DomainModel.Configuration> configurations = null;

            using (DataModelContainer container = new DataModelContainer())
            {
                Core.DomainModel.Business business = null;

                //var bizArray = new Business[] { };//container.Businesses.ToArray();

                //if (PagingArgument != null)
                //{
                //    PagingArgument.Reset(bizArray.Length);

                //    var bizQueryResult = container.Businesses.OrderByDescending(b => b.CreationTime).Skip(PagingArgument.CurrentPageIndex * PagingArgument.EachPageSize).Take(PagingArgument.EachPageSize);

                //    if (QueryExpressionFunction != null && SearchingArguments != null)
                //    {
                //        var filterExpression = QueryExpressionFunction(SearchingArguments);

                //        if (filterExpression != null && filterExpression is Expression<Func<Business, bool>>)
                //        {
                //            bizQueryResult = bizQueryResult.Where((filterExpression as Expression<Func<Business, bool>>));
                //        }
                //    }

                //    bizArray = bizQueryResult.ToArray();
                //}

                var bizQueryResult = container.Businesses.OrderByDescending(b => b.CreationTime).AsQueryable();

                if (QueryExpressionFunction != null && SearchingArguments != null)
                {
                    var filterExpression = QueryExpressionFunction(SearchingArguments);

                    if (filterExpression != null && filterExpression is Expression <Func <Business, bool> > )
                    {
                        bizQueryResult = bizQueryResult.Where((filterExpression as Expression <Func <Business, bool> >));
                    }
                }

                if (PagingArgument != null)
                {
                    //PagingArgument.Reset(bizQueryResult.Count(b => true));

                    //bizQueryResult = bizQueryResult.Skip(PagingArgument.CurrentPageIndex * PagingArgument.EachPageSize).Take(PagingArgument.EachPageSize);

                    var futureCount  = bizQueryResult.FutureCount();
                    var futureResult = bizQueryResult.Skip(PagingArgument.CurrentPageIndex * PagingArgument.EachPageSize).Take(PagingArgument.EachPageSize).Future();

                    PagingArgument.Reset(futureCount.Value);
                    bizQueryResult = futureResult.AsQueryable();
                }

                var bizArray = bizQueryResult.ToArray();

                foreach (var biz in bizArray)//foreach (var biz in container.Businesses)
                {
                    business = new Core.DomainModel.Business()
                    {
                        ID   = biz.Id,
                        Name = biz.Name,
                        //ReferenceID = cust.ReferenceId
                    };

                    if (!String.IsNullOrEmpty(biz.ReferenceId))
                    {
                        business.ReferenceID = biz.ReferenceId.Split(new string[] { "," }, StringSplitOptions.None);
                    }

                    if (IsIncludingConfigurations)
                    {
                        var confs = container.Configurations.Where((o) => (o.BusinessId.ToLower() == biz.Id.ToLower())).ToArray();

                        if ((confs != null) && (confs.Length > 0))
                        {
                            configurations = new List <Core.DomainModel.Configuration>();

                            foreach (var conf in confs)
                            {
                                configurations.Add(new Core.DomainModel.Configuration()
                                {
                                    ID = conf.Id,
                                    ConfigurationType  = ((ConfigurationType)(conf.TypeId)),
                                    DbConnectionString = conf.DbConnectionString
                                });
                            }

                            business.Configurations = configurations.ToArray();
                        }
                    }

                    businesses.Add(business);
                }
            }

            return(businesses.ToArray());
        }
Пример #3
0
 public ReleaseQueryArguments(PagingArgument paging)
     : base(paging)
 {
 }
Пример #4
0
        static void TestBusinessSearchPaging()
        {
            BusinessManager bizManager = new BusinessManager();

            PagingArgument pagingArg = new PagingArgument()
            {
                CurrentPageIndex = 0,
                EachPageSize     = 125
            };

            List <SearchingArgument> searchingArgs = new List <SearchingArgument>()
            {
                new SearchingArgument
                {
                    FieldName       = "Name",
                    FieldValue      = "New",
                    LogicalOperator = LogicalOperatorEnum.And,
                    Operator        = OperatorEnum.StartsWith //OperatorEnum.NotInclude //OperatorEnum.Includes
                },
                new SearchingArgument
                {
                    FieldName       = "Name",
                    FieldValue      = "New",
                    LogicalOperator = LogicalOperatorEnum.Or,
                    Operator        = OperatorEnum.NotEndWith //OperatorEnum.NotInclude //OperatorEnum.Includes
                },
                new SearchingArgument
                {
                    FieldName       = "Name",
                    FieldValue      = "New",
                    LogicalOperator = LogicalOperatorEnum.Or,
                    Operator        = OperatorEnum.Includes //OperatorEnum.NotInclude //OperatorEnum.Includes
                },
                new SearchingArgument
                {
                    FieldName       = "CreationTime",
                    FieldValue      = DateTime.Now,
                    LogicalOperator = LogicalOperatorEnum.And,
                    Operator        = OperatorEnum.LessThan
                },
                new SearchingArgument
                {
                    FieldName       = "Name",
                    FieldValue      = new string[] { "New", "-", "Business", "00" },
                    LogicalOperator = LogicalOperatorEnum.Or,
                    Operator        = OperatorEnum.In //OperatorEnum.NotInclude //OperatorEnum.Includes
                }
            };

            //var bizArray = bizManager.SearchBusiness(null, null, pagingArg);

            var bizArray = bizManager.SearchBusiness(bizManager.CreateBusinessQueryExpression, searchingArgs, pagingArg, false);

            if (bizArray != null && bizArray.Length > 0)
            {
                foreach (var biz in bizArray)
                {
                    Console.WriteLine(biz.ID);
                    Console.WriteLine(biz.Name);
                }
            }
            else
            {
                Console.WriteLine("None!");
            }
        }
Пример #5
0
 public QueryArguments(PagingArgument paging)
     : base()
 {
     this.Separator = ",";
     this.Paging    = paging;
 }