public async Task <int> GetCountGoodsAsync(SearchGoods search)
        {
            int count = await this._context.Goods.Where(c => (search.CurrentCategory == null || c.CategoryId == search.CurrentCategory) &&
                                                        (search.CurrentClothesType == null || c.ClothesTypeId == search.CurrentClothesType) &&
                                                        (c.Price >= search.MinPrice) &&
                                                        (search.MaxPrice == null || (c.Price >= search.MinPrice && c.Price <= search.MaxPrice)) &&
                                                        (search.CurrentSize == null || c.Sizes.Any(s => s.SizeId == search.CurrentSize)) &&
                                                        ((search.searchName == null || search.searchName == "") || c.Name.ToUpper().Contains(search.searchName.ToUpper()))).CountAsync();

            return(count);
        }
        public async Task <ICollection <GoodsModel> > GetGoodsForOnePageAsync(SearchGoods search, int pageSize, int page)
        {
            List <Goods> goods = await this._context.Goods.Where(c => (search.CurrentCategory == null || c.CategoryId == search.CurrentCategory) &&
                                                                 (search.CurrentClothesType == null || c.ClothesTypeId == search.CurrentClothesType) &&
                                                                 (c.Price >= search.MinPrice) &&
                                                                 (search.MaxPrice == null || (c.Price >= search.MinPrice && c.Price <= search.MaxPrice)) &&
                                                                 (search.CurrentSize == null || c.Sizes.Any(s => s.SizeId == search.CurrentSize)) &&
                                                                 ((search.searchName == null || search.searchName == "") || c.Name.ToUpper().Contains(search.searchName.ToUpper())))
                                 .OrderBy(g => g.Price)
                                 .Skip((page - 1) * pageSize)
                                 .Take(pageSize).ToListAsync();

            return(Mapper.Map <List <Goods>, List <GoodsModel> >(goods));
        }
        public PartialViewResult MenuForAdmin(SearchGoods searchGoods)
        {
            IEnumerable <CategoryModel>    categories   = this._categoryRepository.GetCategories();
            ICollection <ClothesTypeModel> clothesTypes = this._typesRepository.GetClothesTypes();

            MenuListViewModel mlvm = new MenuListViewModel
            {
                Categories   = new SelectList(categories, "CategoryId", "Name"),
                ClothesTypes = clothesTypes,
                Search       = searchGoods
            };

            return(PartialView(mlvm));
        }
Exemple #4
0
        public async Task <int> UpdateItem(SearchGoods item)
        {
            await _elasticClient.UpdateAsync <SearchGoods>(item.no, u => u.Doc(item));

            await _elasticClient.UpdateByQueryAsync <SearchGoods>(u => u
                                                                  .Query(q => q
                                                                         .Match(m => m
                                                                                .Field(p => p.goodsNo)
                                                                                .Query(item.goodsNo)
                                                                                ))
                                                                  .Script($"ctx._source.price = {item.price}")
                                                                  .Conflicts(Conflicts.Proceed)
                                                                  .Refresh(true));

            await _searchRepository.SaveChangesAsync();

            return(0);
        }
        public async Task <ViewResult> GoodsCards(SearchGoods search, int page = 1)
        {
            ICollection <GoodsModel> goods = await this._repository.GetGoodsForOnePageAsync(search, pageSize, page);

            PagingInfo pageInfo = new PagingInfo
            {
                CurrentPage  = page,
                ItemsPerPage = pageSize,
                TotalItems   = await _repository.GetCountGoodsAsync(search)
            };
            GoodsListViewModel model = new GoodsListViewModel()
            {
                Goods      = goods,
                PagingInfo = pageInfo,
                Search     = search
            };

            return(View(model));
        }