示例#1
0
        public IEnumerable <Good> GetGoods(StoreGoodsFilter <int, int> filter)
        {
            try
            {
                var query = from sGood in Db.Set <StoreGood>()
                            join good1 in Db.Set <Good>() on sGood.GoodId equals good1.Id
                            where sGood.StoreId == filter.StoreId
                            select good1;



                if (filter.GoodCategoryIds != null && filter.GoodCategoryIds.Any())
                {
                    query = from good in query
                            join goodCategory in Db.Set <GoodCategory>() on good.Id equals goodCategory.GoodId
                            where filter.GoodCategoryIds.Contains(goodCategory.CategoryId)
                            select good;
                }
                if (filter.GoodTypeIds != null && filter.GoodTypeIds.Any())
                {
                    query = from good in query
                            join goodType in Db.Set <GoodType>() on good.Id equals goodType.GoodId
                            where filter.GoodTypeIds.Contains(goodType.TypeId)
                            select good;
                }

                if (filter.GoodColorIds != null && filter.GoodColorIds.Any())
                {
                    query = from good in query
                            join goodColor in Db.Set <GoodColor>() on good.Id equals goodColor.GoodId
                            where filter.GoodColorIds.Contains(goodColor.ColorId)
                            select good;
                }
                if (filter.GoodDesignerIds != null && filter.GoodDesignerIds.Any())
                {
                    query = from good in query
                            join goodDesigner in Db.Set <GoodDesigner>() on good.Id equals goodDesigner.GoodId
                            where filter.GoodDesignerIds.Contains(goodDesigner.DesignerId)
                            select good;
                }
                if (filter.GoodMaterialsIds != null && filter.GoodMaterialsIds.Any())
                {
                    query = from good in query
                            join goodMaterial in Db.Set <GoodMaterial>() on good.Id equals goodMaterial.GoodId
                            where filter.GoodMaterialsIds.Contains(goodMaterial.MaterialId)
                            select good;
                }
                if (filter.GoodSizeIds != null && filter.GoodSizeIds.Any())
                {
                    query = query.Where(it => filter.GoodSizeIds.Contains(it.SizeId));
                }
                if (filter.GoodHeightInterval != null && (filter.GoodHeightInterval.End.HasValue || filter.GoodHeightInterval.Start.HasValue))
                {
                    if (filter.GoodHeightInterval.Start.HasValue && filter.GoodHeightInterval.End.HasValue)
                    {
                        query = query.Where(it => it.Height >= filter.GoodHeightInterval.Start && it.Height <= filter.GoodHeightInterval.End);
                    }
                    if (filter.GoodHeightInterval.End.HasValue && !filter.GoodHeightInterval.Start.HasValue)
                    {
                        query = query.Where(it => it.Height >= 0 && it.Height <= filter.GoodHeightInterval.End);
                    }
                    if (filter.GoodHeightInterval.Start.HasValue && !filter.GoodHeightInterval.End.HasValue)
                    {
                        query = query.Where(it => it.Height >= filter.GoodHeightInterval.Start);
                    }
                }
                if (filter.GoodWidthInterval != null && (filter.GoodWidthInterval.End.HasValue || filter.GoodWidthInterval.Start.HasValue))
                {
                    if (filter.GoodWidthInterval.Start.HasValue && filter.GoodWidthInterval.End.HasValue)
                    {
                        query = query.Where(it => it.Width >= filter.GoodWidthInterval.Start && it.Width <= filter.GoodWidthInterval.End);
                    }
                    if (filter.GoodWidthInterval.End.HasValue && !filter.GoodWidthInterval.Start.HasValue)
                    {
                        query = query.Where(it => it.Width >= 0 && it.Width <= filter.GoodWidthInterval.End);
                    }
                    if (filter.GoodWidthInterval.Start.HasValue && !filter.GoodWidthInterval.End.HasValue)
                    {
                        query = query.Where(it => it.Width >= filter.GoodWidthInterval.Start);
                    }
                }
                if (filter.GoodDepthInterval != null && (filter.GoodDepthInterval.End.HasValue || filter.GoodDepthInterval.Start.HasValue))
                {
                    if (filter.GoodDepthInterval.Start.HasValue && filter.GoodDepthInterval.End.HasValue)
                    {
                        query = query.Where(it => it.Depth >= filter.GoodDepthInterval.Start && it.Depth <= filter.GoodDepthInterval.End);
                    }
                    if (filter.GoodDepthInterval.End.HasValue && !filter.GoodDepthInterval.Start.HasValue)
                    {
                        query = query.Where(it => it.Depth >= 0 && it.Depth <= filter.GoodDepthInterval.End);
                    }
                    if (filter.GoodDepthInterval.Start.HasValue && !filter.GoodDepthInterval.End.HasValue)
                    {
                        query = query.Where(it => it.Depth >= filter.GoodDepthInterval.Start);
                    }
                }

                query = filter.Sord.Equals("desc", StringComparison.OrdinalIgnoreCase)
                    ? query.OrderByDescending(filter.Sidx)
                    : query.OrderBy(filter.Sidx);

                query = query.Skip(filter.Rows * (filter.Page - 1)).Take(filter.Rows).Distinct();
                //if (filter.GoodInitOptions.HasFlag(GoodInitOptions.InitSize))
                //    query.Include(it => it.Size);
                foreach (var good in query)
                {
                    _goodRepo.InitGood(good, filter.GoodInitOptions);
                }

                return(query);
            }
            catch (Exception ex)
            {
                LogEventManager.Logger.Error(ex.Message, ex);
                throw;
            }
        }
示例#2
0
        public void GetGoods()
        {
            try
            {
                var options = CreateNewContextOptions(); using (var db = new StoreContext(options))
                {
                    var repository =
                        new StoreRepository(db);
                    StoreTestHelper.PopulateDefaultStoreDataCtx(db);
                    IEnumerable <Good> result = null;
                    var filter = new StoreGoodsFilter <int, int>()
                    {
                        StoreId = 1
                    };
                    Assert.DoesNotThrow(() => result = repository.GetGoods(filter));
                    Assert.True(result != null && result.Any() && result.Count() == 3);
                    filter.GoodCategoryIds = (from entity in db.Set <GoodCategory>()
                                              select entity.CategoryId).Distinct().ToList();

                    //db.Set<GoodCategory>().Include(it => it.Category).Select(it => it.Category.Id).Distinct().ToList();
                    Assert.DoesNotThrow(() => result = repository.GetGoods(filter));
                    Assert.True(result != null && result.Any() && result.Count() == 1);
                    filter.GoodCategoryIds = null;
                    filter.GoodTypeIds     =
                        db.Set <GoodType>().Select(it => it.TypeId).Distinct().ToList();
                    Assert.DoesNotThrow(() => result = repository.GetGoods(filter));
                    Assert.True(result != null && result.Any() && result.Count() == 1);
                    filter.GoodTypeIds     = null;
                    filter.GoodDesignerIds =
                        db.Set <GoodDesigner>().Select(it => it.DesignerId).Distinct().ToList();
                    Assert.DoesNotThrow(() => result = repository.GetGoods(filter));
                    Assert.True(result != null && result.Any() && result.Count() == 1);
                    filter.GoodDesignerIds = null;
                    filter.GoodColorIds    =
                        db.Set <GoodColor>().Select(it => it.ColorId).Distinct().ToList();
                    Assert.DoesNotThrow(() => result = repository.GetGoods(filter));
                    Assert.True(result != null && result.Any() && result.Count() == 1);
                    filter.GoodColorIds     = null;
                    filter.GoodMaterialsIds =
                        db.Set <GoodMaterial>().Select(it => it.MaterialId).Distinct().ToList();
                    Assert.DoesNotThrow(() => result = repository.GetGoods(filter));
                    Assert.True(result != null && result.Any() && result.Count() == 1);
                    filter.GoodColorIds              = null;
                    filter.GoodMaterialsIds          = null;
                    filter.GoodDepthInterval.End     = 100;
                    Assert.DoesNotThrow(() => result = repository.GetGoods(filter));
                    Assert.True(result != null && result.Any() && result.Count() == 3);
                    filter.GoodDepthInterval.End     = null;
                    filter.GoodDepthInterval.Start   = 20;
                    Assert.DoesNotThrow(() => result = repository.GetGoods(filter));
                    Assert.True(result != null && result.Any() && result.Count() == 3);
                    filter.GoodDepthInterval.End     = 100;
                    Assert.DoesNotThrow(() => result = repository.GetGoods(filter));
                    Assert.True(result != null && result.Any() && result.Count() == 3);
                    filter.GoodDepthInterval.Start   = null;
                    filter.GoodDepthInterval.End     = null;
                    filter.GoodHeightInterval.End    = 100;
                    Assert.DoesNotThrow(() => result = repository.GetGoods(filter));
                    Assert.True(result != null && result.Any() && result.Count() == 3);
                    filter.GoodHeightInterval.End    = null;
                    filter.GoodHeightInterval.Start  = 20;
                    Assert.DoesNotThrow(() => result = repository.GetGoods(filter));
                    Assert.True(result != null && result.Any() && result.Count() == 3);
                    filter.GoodHeightInterval.End    = 100;
                    Assert.DoesNotThrow(() => result = repository.GetGoods(filter));
                    Assert.True(result != null && result.Any() && result.Count() == 3);
                    filter.GoodHeightInterval.End    = null;
                    filter.GoodHeightInterval.Start  = null;
                    filter.GoodWidthInterval.End     = 100;
                    Assert.DoesNotThrow(() => result = repository.GetGoods(filter));
                    Assert.True(result != null && result.Any() && result.Count() == 3);
                    filter.GoodWidthInterval.End     = null;
                    filter.GoodWidthInterval.Start   = 20;
                    Assert.DoesNotThrow(() => result = repository.GetGoods(filter));
                    Assert.True(result != null && result.Any() && result.Count() == 3);
                    filter.GoodWidthInterval.End     = 100;
                    Assert.DoesNotThrow(() => result = repository.GetGoods(filter));
                    Assert.True(result != null && result.Any() && result.Count() == 3);
                    filter.GoodHeightInterval.Start  = 20;
                    filter.GoodHeightInterval.End    = 100;
                    filter.GoodDepthInterval.Start   = 20;
                    filter.GoodDepthInterval.End     = 100;
                    Assert.DoesNotThrow(() => result = repository.GetGoods(filter));
                    Assert.True(result != null && result.Any() && result.Count() == 3);
                    filter.GoodCategoryIds =
                        db.Set <GoodCategory>().Select(it => it.CategoryId).Distinct().ToList();
                    filter.GoodTypeIds =
                        db.Set <GoodType>().Select(it => it.TypeId).Distinct().ToList();
                    filter.GoodDesignerIds =
                        db.Set <GoodDesigner>().Select(it => it.DesignerId).Distinct().ToList();
                    filter.GoodColorIds =
                        db.Set <GoodColor>().Select(it => it.ColorId).Distinct().ToList();
                    filter.GoodColorIds     = null;
                    filter.GoodMaterialsIds =
                        db.Set <GoodMaterial>().Select(it => it.MaterialId).Distinct().ToList();
                    Assert.DoesNotThrow(() => result = repository.GetGoods(filter));
                    Assert.True(result != null && result.Any() && result.Count() == 1);
                }
            }
            catch (Exception ex)
            {
                LogEventManager.Logger.Error(ex);
                throw;
            }
        }
示例#3
0
 public IEnumerable <Good> GetGoods(StoreGoodsFilter <int, int> filter)
 {
     throw new NotImplementedException();
 }