diff --git a/src/APIMappers/ActivityMapper.cs b/src/APIMappers/ActivityMapper.cs index 4f61896..c68e810 100644 --- a/src/APIMappers/ActivityMapper.cs +++ b/src/APIMappers/ActivityMapper.cs @@ -30,7 +30,7 @@ public static class ActivityMapper Action link = (activity, model) => { - model.HeartRates.AddRange(activity.HeartRates.ToModels(activityDto).ToArray()); + model.HeartRates.AddRange(activity.HeartRates.ToModels(activityDto.Id).ToArray()); if (activity.DataSource != null) model.DataSource = activity.DataSource.ToModel(); model.Athlete = activity.Athlete.ToModel(); }; @@ -60,7 +60,7 @@ public static class ActivityMapper Action link = (activity, dto) => { - dto.HeartRates = activity.HeartRates.ToDtos(model).ToArray(); + dto.HeartRates = activity.HeartRates.ToDtos().ToArray(); dto.DataSource = activity.DataSource.ToDto(); dto.Athlete = activity.Athlete.ToDto(); }; diff --git a/src/APIMappers/HeartRateMapper.cs b/src/APIMappers/HeartRateMapper.cs index 6e3925d..2792673 100644 --- a/src/APIMappers/HeartRateMapper.cs +++ b/src/APIMappers/HeartRateMapper.cs @@ -8,16 +8,18 @@ public static class HeartRateMapper { private static GenericMapper _mapper = new(); - public static HeartRate ToModel(this HeartRateDto dto, ActivityDto activityDto) + public static HeartRate ToModel(this HeartRateDto dto,int activityDtoId) { Func create = heartRateDto => - new HeartRate(heartRateDto.HeartRate, TimeOnly.FromDateTime(heartRateDto.Timestamp), activityDto.ToModel(), heartRateDto.Latitude, heartRateDto.Longitude, heartRateDto.Altitude, heartRateDto.Cadence, heartRateDto.Distance, heartRateDto.Speed, heartRateDto.Power, heartRateDto.Temperature); + new HeartRate(heartRateDto.HeartRate, TimeOnly.FromDateTime(heartRateDto.Timestamp), activityDtoId, heartRateDto.Latitude, heartRateDto.Longitude, heartRateDto.Altitude, heartRateDto.Cadence, heartRateDto.Distance, heartRateDto.Speed, heartRateDto.Power, heartRateDto.Temperature); return dto.ToT(_mapper, create); } - public static HeartRateDto ToDto(this HeartRate model, Activity activity) + public static HeartRateDto ToDto(this HeartRate model)//Activity activity { + // [TODO] [Dave] fix this should be activity but it boucle indefinitly + var activity = new DateTime(); Func create = heartRate => new HeartRateDto { @@ -35,11 +37,11 @@ public static class HeartRateMapper return model.ToU(_mapper, create); } - public static IEnumerable ToModels(this IEnumerable dtos, ActivityDto activityDto) - => dtos.Select(d => d.ToModel(activityDto)); + public static IEnumerable ToModels(this IEnumerable dtos, int activityDtoId) + => dtos.Select(d => d.ToModel(activityDtoId)); - public static IEnumerable ToDtos(this IEnumerable models, Activity activity) - => models.Select(m => m.ToDto(activity)); + public static IEnumerable ToDtos(this IEnumerable models) + => models.Select(m => m.ToDto()); } \ No newline at end of file diff --git a/src/Dto/ActivityFitFileDto.cs b/src/Dto/ActivityFitFileDto.cs deleted file mode 100644 index f68fbd1..0000000 --- a/src/Dto/ActivityFitFileDto.cs +++ /dev/null @@ -1,16 +0,0 @@ -namespace Dto; - -public class ActivityFitFileDto -{ - public ActivityFitFileDto(string activityName, string activityType, int effortFeel) - { - ActivityName = activityName; - ActivityType = activityType; - EffortFeel = effortFeel; - } - - public string ActivityName { get; set; } - public string ActivityType { get; set; } - public int EffortFeel { get; set; } - //public IFormFile -} \ No newline at end of file diff --git a/src/Dto/DataSourceDto.cs b/src/Dto/DataSourceDto.cs index f30de8f..518e7ab 100644 --- a/src/Dto/DataSourceDto.cs +++ b/src/Dto/DataSourceDto.cs @@ -1,3 +1,5 @@ +using System.Text.Json.Serialization; + namespace Dto; public class DataSourceDto @@ -10,7 +12,9 @@ public class DataSourceDto public float Precision { get; set; } + [JsonIgnore] public IEnumerable? Athletes { get; set; } + [JsonIgnore] public IEnumerable? Activities { get; set; } } \ No newline at end of file diff --git a/src/EFMappers/ActivityMapper.cs b/src/EFMappers/ActivityMapper.cs index efa6468..3cf85d6 100644 --- a/src/EFMappers/ActivityMapper.cs +++ b/src/EFMappers/ActivityMapper.cs @@ -31,8 +31,6 @@ public static class ActivityMapper AverageTemperature = activityEntity.AverageTemperature, HasAutoPause = activityEntity.HasAutoPause }; - Console.WriteLine("ActivityMapper.ToModel"); - // here Action link = (activityEntity, model) => { diff --git a/src/EFMappers/AthleteMappeur.cs b/src/EFMappers/AthleteMappeur.cs index 185ae3c..81fa42b 100644 --- a/src/EFMappers/AthleteMappeur.cs +++ b/src/EFMappers/AthleteMappeur.cs @@ -32,7 +32,7 @@ public static class UserMappeur model.Role = athleteEntity.IsCoach ? new Coach() : new Athlete(); model.DataSources.Add(athleteEntity.DataSource.ToModel()); model.Activities.AddRange(athleteEntity.Activities.ToModels()); - model.Image = athleteEntity.Image.ToModel(); + //model.Image = athleteEntity.Image.ToModel(); }; return entity.ToT(_mapper, create, link); diff --git a/src/Entities/HeartRateEntity.cs b/src/Entities/HeartRateEntity.cs index 21c0c70..5407cc1 100644 --- a/src/Entities/HeartRateEntity.cs +++ b/src/Entities/HeartRateEntity.cs @@ -59,7 +59,7 @@ namespace Entities /// /// Gets or sets the cadence. /// - public int Cadence { get; set; } + public int? Cadence { get; set; } /// /// Gets or sets the distance. diff --git a/src/Entities/Picture.cs b/src/Entities/Picture.cs deleted file mode 100644 index c7f9b25..0000000 --- a/src/Entities/Picture.cs +++ /dev/null @@ -1,9 +0,0 @@ -using System.ComponentModel.DataAnnotations; -namespace Entities; -public class PictureEntity -{ - [Key] - public Guid Id { get; set; } - [Required] - public byte[] Bytes { get; set; } = null!; -} \ No newline at end of file diff --git a/src/HeartTrackAPI/FileUploadSummary.cs b/src/HeartTrackAPI/FileUploadSummary.cs deleted file mode 100644 index 1721ae7..0000000 --- a/src/HeartTrackAPI/FileUploadSummary.cs +++ /dev/null @@ -1,44 +0,0 @@ -using Microsoft.AspNetCore.Mvc; -using Microsoft.AspNetCore.Mvc.Filters; -using Microsoft.AspNetCore.Mvc.ModelBinding; - -namespace HeartTrackAPI; - -public class FileUploadSummary -{ - public int TotalFilesUploaded { get; set; } - public string TotalSizeUploaded { get; set; } - public IList FilePaths { get; set; } = new List(); - public IList NotUploadedFiles { get; set; } = new List(); -} -[AttributeUsage(AttributeTargets.Method | AttributeTargets.Class)] -public class MultipartFormDataAttribute : ActionFilterAttribute -{ - public override void OnActionExecuting(ActionExecutingContext context) - { - var request = context.HttpContext.Request; - - if (request.HasFormContentType - && request.ContentType.StartsWith("multipart/form-data", StringComparison.OrdinalIgnoreCase)) - { - return; - } - - context.Result = new StatusCodeResult(StatusCodes.Status415UnsupportedMediaType); - } -} -[AttributeUsage(AttributeTargets.Class | AttributeTargets.Method)] -public class DisableFormValueModelBindingAttribute : Attribute, IResourceFilter -{ - public void OnResourceExecuting(ResourceExecutingContext context) - { - var factories = context.ValueProviderFactories; - factories.RemoveType(); - factories.RemoveType(); - factories.RemoveType(); - } - - public void OnResourceExecuted(ResourceExecutedContext context) - { - } -} \ No newline at end of file diff --git a/src/Model/HeartRate.cs b/src/Model/HeartRate.cs index 1742023..ebf7cd7 100644 --- a/src/Model/HeartRate.cs +++ b/src/Model/HeartRate.cs @@ -36,6 +36,10 @@ public class HeartRate : this(0, bpm, timestamp, activity, latitude, longitude, altitude, cadence, distance, speed, power, temperature) {} + public HeartRate(int bpm, TimeOnly timestamp, int activity, double? latitude, double? longitude, double? altitude, int? cadence, double? distance, double? speed, int? power, double? temperature) + : this(0, bpm, timestamp, null, latitude, longitude, altitude, cadence, distance, speed, power, temperature) + {} + public override string ToString() { return $"HeartRate #{Id}: {Bpm} bpm at {Timestamp:HH:mm:ss} with a temperature of {Temperature}°C" + diff --git a/src/Model/User.cs b/src/Model/User.cs index f2a6e28..3a8acd6 100644 --- a/src/Model/User.cs +++ b/src/Model/User.cs @@ -36,6 +36,7 @@ public class User DateOfBirth = dateNaissance; Role = role; } + public User(){} } \ No newline at end of file diff --git a/src/Model2Entities/ActivityRepository.cs b/src/Model2Entities/ActivityRepository.cs index e734a8a..308a245 100644 --- a/src/Model2Entities/ActivityRepository.cs +++ b/src/Model2Entities/ActivityRepository.cs @@ -27,7 +27,9 @@ public partial class DbDataManager : IDataManager _logger.LogInformation($"GetActivities with criteria {criteria} and descending {descending}", criteria, descending); var activities = _dataManager.DbContext.ActivitiesSet - .Include(a => a.DataSource).GetItemsWithFilterAndOrdering(b => true, index, count, criteria, descending).ToModels(); + .Include(a => a.HeartRates) + .Include(a=>a.Athlete) + .Include(a=> a.DataSource).GetItemsWithFilterAndOrdering(b => true, index, count, criteria, descending).ToModels(); _logger.LogInformation($"Retrieved {activities.Count()} activities"); return await Task.FromResult(activities); diff --git a/src/Model2Entities/Extension.cs b/src/Model2Entities/Extension.cs index 21fa02e..2991c62 100644 --- a/src/Model2Entities/Extension.cs +++ b/src/Model2Entities/Extension.cs @@ -1,5 +1,6 @@ using DbContextLib; using Entities; +using Microsoft.EntityFrameworkCore; using Model; namespace Model2Entities; @@ -83,7 +84,15 @@ public static class Extensions return descending ? list.OrderByDescending(x => propertyInfo.GetValue(x)) : list.OrderBy(x => propertyInfo.GetValue(x)); } - + public static IQueryable IncludeAll(this HeartTrackContext dbContext, IQueryable query) where TEntity : class + { + var entityType = dbContext.Model.FindEntityType(typeof(TEntity)); + foreach (var navigation in entityType.GetNavigations()) + { + query = query.Include(navigation.Name); + } + return query; + } // public static Activity ToModel(this ActivityEntity entity) // { // return new Activity ( diff --git a/src/Shared/Extension.cs b/src/Shared/Extension.cs index 7682ebd..d86ba4d 100644 --- a/src/Shared/Extension.cs +++ b/src/Shared/Extension.cs @@ -5,9 +5,8 @@ public static class Extensions public static U ToU(this T t, GenericMapper mapper, Func func,Action? action = null) where U :class where T :class { var res = mapper.GetU(t); - if (res != null) { - return res; - } + if (res != null) return res; + U u = func(t); mapper.Add(t, u); if(action != null) action(t, u); diff --git a/src/Shared/GenericMappers.cs b/src/Shared/GenericMappers.cs index bf326ad..aef882d 100644 --- a/src/Shared/GenericMappers.cs +++ b/src/Shared/GenericMappers.cs @@ -14,7 +14,7 @@ public class GenericMapper where T : class where U : class } public U? GetU(T t) { - var found = mapper.Where(t => ReferenceEquals(t.Item1, t)); + var found = mapper.Where(u => ReferenceEquals(u.Item1, t)); if (found.Count() != 1) { return null;