diff --git a/src/Dto/AthleteDto.cs b/src/Dto/AthleteDto.cs index bb4b73e..723d01b 100644 --- a/src/Dto/AthleteDto.cs +++ b/src/Dto/AthleteDto.cs @@ -18,8 +18,8 @@ public class UserDto public string? Password { get; set; } public DateTime DateOfBirth { get; set; } public string ProfilePicture { get; set; } = "https://davidalmeida.site/assets/me_avatar.f77af006.png"; - - public LargeImageDto Image { get; set; } + + public LargeImageDto Image { get; set; } = null!; public bool IsCoach { get; set; } } diff --git a/src/Dto/DataSourceDto.cs b/src/Dto/DataSourceDto.cs index 518e7ab..74705a1 100644 --- a/src/Dto/DataSourceDto.cs +++ b/src/Dto/DataSourceDto.cs @@ -12,9 +12,11 @@ public class DataSourceDto public float Precision { get; set; } - [JsonIgnore] + // [TODO] [Dave] Add a property to store the athletes and the activities so maybe adapt to have a tiny DTO + [JsonIgnore] public IEnumerable? Athletes { get; set; } + // [TODO] [Dave] Add a property to store the athletes and the activities so maybe adapt to have a tiny DTO [JsonIgnore] public IEnumerable? Activities { get; set; } } \ No newline at end of file diff --git a/src/HeartTrackAPI/AppBootstrap.cs b/src/HeartTrackAPI/AppBootstrap.cs index 4fa5f7f..daa7193 100644 --- a/src/HeartTrackAPI/AppBootstrap.cs +++ b/src/HeartTrackAPI/AppBootstrap.cs @@ -14,7 +14,6 @@ using StubAPI; using StubbedContextLib; using Swashbuckle.AspNetCore.SwaggerGen; - namespace HeartTrackAPI; public class AppBootstrap(IConfiguration configuration) diff --git a/src/HeartTrackAPI/Controllers/ActivityController.cs b/src/HeartTrackAPI/Controllers/ActivityController.cs index 76287f2..f78fdb5 100644 --- a/src/HeartTrackAPI/Controllers/ActivityController.cs +++ b/src/HeartTrackAPI/Controllers/ActivityController.cs @@ -38,7 +38,7 @@ public class ActivityController : Controller return BadRequest("To many object is asked the max is : " + totalCount); } _logger.LogInformation("Executing {Action} with parameters: {Parameters}", nameof(GetActivities), pageRequest); - var activities = await _activityService.GetActivities(pageRequest.Index, pageRequest.Count, ActivityOrderCriteria.None, pageRequest.Descending ?? false); + var activities = await _activityService.GetActivities(pageRequest.Index, pageRequest.Count, Enum.TryParse(pageRequest.OrderingPropertyName, out ActivityOrderCriteria result) ? result : ActivityOrderCriteria.None, pageRequest.Descending ?? false); if(activities == null) { return NotFound("No activities found"); diff --git a/src/Model2Entities/ActivityRepository.cs b/src/Model2Entities/ActivityRepository.cs index 308a245..9d9f6a5 100644 --- a/src/Model2Entities/ActivityRepository.cs +++ b/src/Model2Entities/ActivityRepository.cs @@ -27,9 +27,7 @@ public partial class DbDataManager : IDataManager _logger.LogInformation($"GetActivities with criteria {criteria} and descending {descending}", criteria, descending); var activities = _dataManager.DbContext.ActivitiesSet - .Include(a => a.HeartRates) - .Include(a=>a.Athlete) - .Include(a=> a.DataSource).GetItemsWithFilterAndOrdering(b => true, index, count, criteria, descending).ToModels(); + .IncludeStandardProperties().GetItemsWithFilterAndOrdering(b => true, index, count, criteria, descending).ToModels(); _logger.LogInformation($"Retrieved {activities.Count()} activities"); return await Task.FromResult(activities); @@ -39,7 +37,7 @@ public partial class DbDataManager : IDataManager { _logger.LogInformation($"GetActivityByIdAsync with id {id}", id); - var activity = _dataManager.DbContext.ActivitiesSet.GetItemsWithFilterAndOrdering(b => b.IdActivity == id, 0, 1, ActivityOrderCriteria.None, false).First().ToModel(); + var activity = _dataManager.DbContext.ActivitiesSet.IncludeStandardProperties().GetItemsWithFilterAndOrdering(b => b.IdActivity == id, 0, 1, ActivityOrderCriteria.None, false).First().ToModel(); if (activity != null) _logger.LogInformation($"Retrieved activity with ID {id}"); @@ -147,8 +145,7 @@ public partial class DbDataManager : IDataManager try { _logger.LogInformation($"Getting activities for user with ID {userId}"); var activities = _dataManager.DbContext.ActivitiesSet - .Include(a => a.DataSource) - .GetItemsWithFilterAndOrdering(b => b.AthleteId == userId, index, count, criteria, descending).ToModels(); + .IncludeStandardProperties().GetItemsWithFilterAndOrdering(b => b.AthleteId == userId, index, count, criteria, descending).ToModels(); _logger.LogInformation($"Retrieved {activities.Count()} activities for user with ID {userId}"); return Task.FromResult(activities); } diff --git a/src/Model2Entities/Extension.cs b/src/Model2Entities/Extension.cs index 2991c62..559f776 100644 --- a/src/Model2Entities/Extension.cs +++ b/src/Model2Entities/Extension.cs @@ -93,6 +93,12 @@ public static class Extensions } return query; } + public static IQueryable IncludeStandardProperties(this IQueryable query) + { + return query.Include(a => a.HeartRates) + .Include(a => a.Athlete) + .Include(a => a.DataSource); + } // public static Activity ToModel(this ActivityEntity entity) // { // return new Activity (