コード例 #1
0
        public async Task <ActionResult <IEnumerable <BinDto> > > GetBinsByParams([FromQuery] BinParams binParams)
        {
            var bins = await _binRepository.GetBinsByParams(binParams);

            Response.AddPaginationHeader(bins.CurrentPage, bins.PageSize, bins.TotalCount, bins.TotalPages);

            return(Ok(_mapper.Map <IEnumerable <BinDto> >(bins)));
        }
コード例 #2
0
        public async Task <PagedList <BinDto> > GetBinsByParams(BinParams binParams)
        {
            try
            {
                var query = _context.Bins.AsQueryable();

                var result = new List <Bin>();

                if (binParams.MinCode != null)
                {
                    if (binParams.MaxCode == null)
                    {
                        query = query.Where(b => b.BinCode.ToUpper() == binParams.MinCode.ToUpper());
                    }
                    else
                    {
                        query = query.Where(b => ((String.Compare(b.BinCode.ToUpper(), binParams.MinCode.ToUpper()) == 1 || b.BinCode.ToUpper() == binParams.MinCode.ToUpper()) && (String.Compare(b.BinCode.ToUpper(), binParams.MaxCode.ToUpper()) == -1) || b.BinCode.ToUpper() == binParams.MaxCode.ToUpper()));
                    }
                }


                if (binParams.TypeName != null)
                {
                    char[]   delimiter = { ',', ';' };
                    string[] typeNames = binParams.TypeName.Split(delimiter);
                    // string[] typeNames = binParams.TypeName.Split(',');



                    if (typeNames.Count() == 1)
                    {
                        query = query.Where(b => b.BinType.TypeName.ToLower() == typeNames[0]);
                    }
                    if (typeNames.Count() == 2)
                    {
                        query = query.Where(b => b.BinType.TypeName.ToLower() == typeNames[0] || b.BinType.TypeName.ToLower() == typeNames[1]);
                    }
                    if (typeNames.Count() == 3)
                    {
                        query = query.Where(b => b.BinType.TypeName.ToLower() == typeNames[0] || b.BinType.TypeName.ToLower() == typeNames[1] || b.BinType.TypeName.ToLower() == typeNames[2]);
                    }
                }


                if (binParams.LocationName != null)
                {
                    query = query.Where(b => b.WarehouseLocation.LocationName.ToLower() == binParams.LocationName.ToLower());
                }

                // return await query.ProjectTo<BinDto>(_mapper.ConfigurationProvider).AsNoTracking().ToListAsync();
                var bins = await PagedList <BinDto> .CreateAsync(
                    query.ProjectTo <BinDto>(_mapper.ConfigurationProvider).OrderBy(m => m.BinCode).AsNoTracking(),
                    binParams.pageNumber,
                    binParams.PageSize
                    );


                return(bins);
            }
            catch
            {
                return(null);
            }
        }