public async Task <IActionResult> Get(int from = 0, int size = 20)
        {
            var issues = (await _issuesQueries.GetTopLastIssues(from, size)).ToList();

            var userIds = issues.Select(i => i.UserId).Distinct();
            var users   = await _userQueries.GetUsersById(userIds);

            var ridesRequest = issues.Select(i => new RidesByUserBike {
                UserId = i.UserId, BikeId = i.BikeId
            }).Distinct();
            var rides = await _ridesQueries.GetRidesByUserAndBike(ridesRequest);

            var userById           = users.ToDictionary(i => i.UserId, u => u);
            var ridesByUserAndBike =
                rides.GroupBy(r => new { BikeId = r.Bike.BikeId, UserId = r.UserId })
                .ToDictionary(x => $"{x.Key.BikeId}-{x.Key.UserId}", x => x.First());

            var issuesByKey =
                issues
                .GroupBy(i => new { BikeId = i.BikeId, UserId = i.UserId })
                .ToDictionary(x => $"{x.Key.BikeId}-{x.Key.UserId}", x => x.First());

            SetCountPaginationHeader(issuesByKey.Count());
            var response = issuesByKey
                           .Select((keypair) =>
            {
                var issue = keypair.Value;
                var key   = keypair.Key;
                var user  = userById.ContainsKey(issue.UserId) ? userById[issue.UserId] : null;
                var ride  = ridesByUserAndBike.ContainsKey(key) ? ridesByUserAndBike[key] : null;
                return(MapIssue(issue, user, ride));
            });

            return(Ok(response));
        }
        public async Task <IActionResult> Get(int from = 0, int size = 20)
        {
            // BREAKPOINT
            // get collections of issues, users, requests and merge the collections together
            var issues       = (await _issuesQueries.GetTopLastIssues(from, size)).ToList();
            var userIds      = issues.Select(i => i.UserId).Distinct();
            var ridesRequest = issues.Select(i => new RidesByUserBike {
                UserId = i.UserId, BikeId = i.BikeId
            }).Distinct();
            var rides = await _ridesQueries.GetRidesByUserAndBike(ridesRequest);

            var result = MergeIssuesAndRides(issues, rides);

            SetCountPaginationHeader(result.Count());
            var response = result;

            return(Ok(response));
        }