From 3f59f5fb81237a6432eec73a375f48b413053001 Mon Sep 17 00:00:00 2001 From: dave Date: Sat, 16 Mar 2024 16:18:13 +0100 Subject: [PATCH 1/4] push reminders --- src/Dto/DataSourceDto.cs | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) 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 From 8083d8a379e08307d91aeaa98074650e61b03aab Mon Sep 17 00:00:00 2001 From: dave Date: Sat, 16 Mar 2024 16:19:10 +0100 Subject: [PATCH 2/4] Actually Activity(-dataSources[nested]) work --- src/HeartTrackAPI/AppBootstrap.cs | 1 - 1 file changed, 1 deletion(-) 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) From d1f437b5058eac0f65c316540d3e9b51729b78f3 Mon Sep 17 00:00:00 2001 From: dave Date: Sat, 16 Mar 2024 16:42:49 +0100 Subject: [PATCH 3/4] On the good ways --- src/Dto/AthleteDto.cs | 4 ++-- src/Model2Entities/ActivityRepository.cs | 9 +++------ src/Model2Entities/Extension.cs | 6 ++++++ 3 files changed, 11 insertions(+), 8 deletions(-) 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/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 ( From 67b114fe333f69994f930fdeead5edf179d16913 Mon Sep 17 00:00:00 2001 From: dave Date: Sat, 16 Mar 2024 16:50:09 +0100 Subject: [PATCH 4/4] push to individual test --- src/HeartTrackAPI/Controllers/ActivityController.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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");