diff --git a/R-Meals Test (Public).postman_collection.json b/R-Meals Test (Public).postman_collection.json
index 634a9ef..ac9f318 100644
--- a/R-Meals Test (Public).postman_collection.json
+++ b/R-Meals Test (Public).postman_collection.json
@@ -774,6 +774,39 @@
}
},
"response": []
+ },
+ {
+ "name": "ADV Get saul's all meals",
+ "request": {
+ "method": "GET",
+ "header": [
+ {
+ "key": "Content-Type",
+ "name": "Content-Type",
+ "type": "text",
+ "value": "application/json"
+ },
+ {
+ "key": "Authorization",
+ "type": "text",
+ "value": "Bearer {{netAppApi_token}}"
+ }
+ ],
+ "url": {
+ "raw": "https://{{netAppApi_domain}}/Users/4/meals/advanced",
+ "protocol": "https",
+ "host": [
+ "{{netAppApi_domain}}"
+ ],
+ "path": [
+ "Users",
+ "4",
+ "meals",
+ "advanced"
+ ]
+ }
+ },
+ "response": []
}
],
"protocolProfileBehavior": {},
diff --git a/RMeals-server-dotNet/src/RMealsAPI/Features/Meals/MealsController.cs b/RMeals-server-dotNet/src/RMealsAPI/Features/Meals/MealsController.cs
index 39b1b7c..12d4c7b 100644
--- a/RMeals-server-dotNet/src/RMealsAPI/Features/Meals/MealsController.cs
+++ b/RMeals-server-dotNet/src/RMealsAPI/Features/Meals/MealsController.cs
@@ -234,7 +234,7 @@ select new
// In memory grouping due EF core limitations
var mealsDailySummary = mealsDailySummaryQuery.ToList();
var meals = mealsTimeFilteredQuery.ToList();
-
+
var groupQuery =
from ms in mealsDailySummary
select new MealDailySummaryDto()
@@ -243,15 +243,15 @@ select new
MealsCount = ms.MealsCount,
DailyCaloriesConsumed = ms.DailyCaloriesConsumed,
DailyCaloriesExceeded = ms.DailyCaloriesExceeded,
- Meals =
- from m in meals
+ Meals =
+ from m in meals
where m.Date.Date == ms.Day
- select new MealDailySummaryDto.MealDailyItemDto()
+ select new MealDailySummaryDto.MealDailyItemDto()
{
Id = m.Id,
Date = m.Date,
Calories = m.Calories,
- Description = m.Description
+ Description = m.Description
}
};
@@ -263,6 +263,42 @@ select new
var result = groupQuery; // .ToList();
return Ok(result);
}
+
+ ///
+ /// Gets a list of mails (with possible filtering).
+ ///
+ ///
+ ///
+ [HttpGet]
+ [Route("advanced")]
+ [ODataQueryableAttribute]
+ public async Task>> GetMealsAdvanced(
+ long userId)
+ {
+ var user = dbContext.Set().Include(u => u.Profile).First(u => u.Id == userId);
+
+ var mealsDailySummaryQuery =
+ from u in dbContext.Set()
+ from m in u.Meals
+ group m by m.Date.Date into g
+ select new MealDailySummaryDto()
+ {
+ Day = g.Key,
+ MealsCount = g.Count(),
+ DailyCaloriesConsumed = g.Sum(m => m.Calories),
+ DailyCaloriesExceeded = g.Sum(m => m.Calories) > user.Profile.AllowedCalories,
+ Meals = g
+ .Select(m => new MealDailySummaryDto.MealDailyItemDto()
+ {
+ Id = m.Id,
+ Date = m.Date,
+ Calories = m.Calories,
+ Description = m.Description
+ })
+ };
+
+ return Ok(mealsDailySummaryQuery);
+ }
}
}