public async Task <PagesList <Adventure> > GetAdventures(AdventureParams adventureParams) { var adventures = _context.Adventures .Include(aP => aP.AdventurePhotos) .OrderByDescending(a => a.DateAdded) .AsQueryable(); // adventures = adventures.Where(a => a.Id == adventureParams.AdventureId); if (adventureParams.MinDistance != 0 || adventureParams.MaxDistance != 10000) { var minDistance = (adventureParams.MinDistance); var maxDistance = (adventureParams.MaxDistance); adventures = adventures.Where(a => a.Distance >= minDistance && a.Distance <= maxDistance); } if (adventureParams.TypeBicycle != "Wszystkie") { adventures = adventures.Where(a => a.TypeBicycle == adventureParams.TypeBicycle); } if (adventureParams.UserLikesAdventure) { // var UserId = int.Parse(User.FindFirst(ClaimTypes.NameIdentifier).Value); var userLikesAdventure = await GetAdventureLikes(adventureParams.UserId, adventureParams.AdventureIsLiked); adventures = adventures.Where(u => userLikesAdventure.Contains(u.Id)); } if (adventureParams.AdventureIsLiked) { // var UserId = int.Parse(User.FindFirst(ClaimTypes.NameIdentifier).Value); var adventureIsLiked = await GetAdventureLikes(adventureParams.UserId, adventureParams.UserLikesAdventure); adventures = adventures.Where(u => adventureIsLiked.Contains(u.Id)); } if (!string.IsNullOrEmpty(adventureParams.OrderBy)) { switch (adventureParams.OrderBy) { case "dateAdded": adventures = adventures.OrderByDescending(a => a.DateAdded); break; default: adventures = adventures.OrderByDescending(a => a.Distance); break; } } return(await PagesList <Adventure> .CreateListAsync(adventures, adventureParams.PageNumber, adventureParams.PageSize)); }
[HttpGet] //pobieranie wszystkich rowerów public async Task <IActionResult> GetAdventures([FromQuery] AdventureParams adventureParams) { adventureParams.UserId = int.Parse(User.FindFirst(ClaimTypes.NameIdentifier).Value); var adventures = await _repo.GetAdventures(adventureParams); var adventuresToReturn = _mapper.Map <IEnumerable <AdventureForListDto> >(adventures); Response.AddPagination(adventures.CurrentPage, adventures.PageSize, adventures.TotalCount, adventures.TotalPages); return(Ok(adventuresToReturn)); }