public static List<Division> GetAll(this DivisionServices service, GetDivisions request) { var seasons = new List<Division>(); GetDivisionsResponse response; request.Page = 1; do { response = service.Get(request); seasons.AddRange(response.Divisions); request.Page++; } while (request.Page <= response.Meta.TotalPages); return seasons; }
// Get Divisions from collection public GetDivisionsResponse Get(GetDivisions request) { int page = request.Page ?? 1; var query = Db.From<Division>(); if (request.Year.HasValue) query.And(q => q.Year == request.Year); if (!request.IncludeInactive) query.And(q => q.Active); query.OrderByDescending(q => q.Year) .ThenBy(q => q.Order) .PageTo(page); var divisions = Db.Select(query); divisions.ForEach(division => { division.Players.AddRange( Db.Select<Player>( q => q.Join<Player, DivisionalPlayer>() .Where<DivisionalPlayer>(divPlayer => divPlayer.DivisionId == division.Id))); }); return new GetDivisionsResponse { Divisions = divisions, Meta = new Meta(Request?.AbsoluteUri) { Page = page, TotalCount = Db.Count(query) } }; }