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))); }
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); } }