コード例 #1
0
        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));
        }
コード例 #2
0
        [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));
        }