public Paginator <DealerReadDTO> GetAllDealers(DealerQuerySearch query) { var dealers = _dealerDbContext .Dealers .Include(r => r.Address) .Include(r => r.Cars) .Where(s => query.Search == null || (s.DealerName.ToUpper().Contains(query.Search.ToUpper()) || s.Description.ToUpper().Contains(query.Search.ToUpper()))); dealers = SortQuery(query, dealers); var skipPages = ComputeSkip(query); var paginatedealers = dealers.Skip(skipPages) .Take(query.PageSize) .ToList(); var totalItems = dealers.Count(); var dealersDto = _mapper.Map <List <DealerReadDTO> >(paginatedealers); var result = new Paginator <DealerReadDTO>(dealersDto, totalItems, query.PageSize, query.PageNumber); return(result); }
//[Authorize(Policy = "ColorEyes")] //[Authorize(Policy = "ColorEyes")] //[Authorize(Policy = "OnlyForEagles")] public ActionResult <IEnumerable <DealerReadDTO> > GetAllDealers([FromQuery] DealerQuerySearch query) { //var Drugilogger = NLog.Web.NLogBuilder.ConfigureNLog("nlog.config").GetCurrentClassLogger(); //Drugilogger.Info("hurraddizała"); //Logger logger = LogManager.GetLogger("databaseLogger"); //_dealerService. logger.Info("lipdssdgsgsgsdg"); //var dealersDTO = dealers.Select(r => new DealerDTO() //{ // DealerName = r.DealerName, // Category = r.Category, // City = r.Address.City, and so on //} ; //try //{ var dealersDTO = _dealerService.GetAllDealers(query); return(Ok(dealersDTO)); //} //catch (Exception) //{ //return this.StatusCode(StatusCodes.Status500InternalServerError, "Database fail"); //} }
private IQueryable <Dealer> SortQuery(DealerQuerySearch query, IQueryable <Dealer> dealers) { if (!string.IsNullOrEmpty(query.SortBy)) { var columnSelector = new Dictionary <string, Expression <Func <Dealer, object> > > { { nameof(Dealer.DealerName), a => a.DealerName }, { nameof(Dealer.Description), a => a.Description }, { nameof(Dealer.Category), a => a.Category }, { nameof(Dealer.Address.Country), a => a.Address.Country } }; var selectedColumn = columnSelector[query.SortBy]; dealers = query.DirectionSort == DirectionSort.Ascending ? dealers.OrderBy(selectedColumn) : dealers.OrderByDescending(selectedColumn); } return(dealers); }
private int ComputeSkip(DealerQuerySearch query) { return(query.PageSize * query.PageNumber - query.PageSize); }