public static IQueryable <DailyNutritionLogDTO> OrderDailyNutritionLogDTOsBy( this IQueryable <DailyNutritionLogDTO> dailyNutritionLogDTOs, DailyNutritionLogSortingOption sortingOption) { switch (sortingOption) { case DailyNutritionLogSortingOption.mostRecent: return(dailyNutritionLogDTOs.OrderByDescending(_ => _.NutritionLogDate)); case DailyNutritionLogSortingOption.leastRecent: return(dailyNutritionLogDTOs.OrderBy(_ => _.NutritionLogDate)); default: throw new ArgumentException("A valid ordering option must be supplied"); } }
public async Task <IActionResult> Get( [FromRoute] int userId, [FromQuery] int pageSize = 10, [FromQuery] int page = 0, [FromQuery] DailyNutritionLogSortingOption orderBy = DailyNutritionLogSortingOption.mostRecent) { _claimsManager.Init(HttpContext.User); if (!_claimsManager.VerifyUserId(userId)) { _logger.LogInformation( $"User with id: {_claimsManager.GetUserIdClaim()} attempting to access nutrition target for userId: {userId}"); return(Forbid()); } var dailyNutritionLogs = await _context .DailyNutritionLogs .Where(_ => _.UserId == userId) .GetDailyNutritionLogDTOs() .OrderDailyNutritionLogDTOsBy(orderBy) .ToListAsync(); return(Ok(dailyNutritionLogs)); }