My Work to fix some issue
continuous-integration/drone/push Build is passing Details

Test_CI
David D'ALMEIDA 1 year ago
parent 16b7c3051e
commit 2b210c31f7

@ -30,7 +30,7 @@ public static class ActivityMapper
Action<ActivityDto, Activity> link = (activity, model) => Action<ActivityDto, Activity> 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(); if (activity.DataSource != null) model.DataSource = activity.DataSource.ToModel();
model.Athlete = activity.Athlete.ToModel(); model.Athlete = activity.Athlete.ToModel();
}; };
@ -60,7 +60,7 @@ public static class ActivityMapper
Action<Activity, ActivityDto> link = (activity, dto) => Action<Activity, ActivityDto> link = (activity, dto) =>
{ {
dto.HeartRates = activity.HeartRates.ToDtos(model).ToArray(); dto.HeartRates = activity.HeartRates.ToDtos().ToArray();
dto.DataSource = activity.DataSource.ToDto(); dto.DataSource = activity.DataSource.ToDto();
dto.Athlete = activity.Athlete.ToDto(); dto.Athlete = activity.Athlete.ToDto();
}; };

@ -8,16 +8,18 @@ public static class HeartRateMapper
{ {
private static GenericMapper<HeartRate, HeartRateDto> _mapper = new(); private static GenericMapper<HeartRate, HeartRateDto> _mapper = new();
public static HeartRate ToModel(this HeartRateDto dto, ActivityDto activityDto) public static HeartRate ToModel(this HeartRateDto dto,int activityDtoId)
{ {
Func<HeartRateDto, HeartRate> create = heartRateDto => Func<HeartRateDto, HeartRate> 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); 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<HeartRate, HeartRateDto> create = heartRate => Func<HeartRate, HeartRateDto> create = heartRate =>
new HeartRateDto new HeartRateDto
{ {
@ -35,11 +37,11 @@ public static class HeartRateMapper
return model.ToU(_mapper, create); return model.ToU(_mapper, create);
} }
public static IEnumerable<HeartRate> ToModels(this IEnumerable<HeartRateDto> dtos, ActivityDto activityDto) public static IEnumerable<HeartRate> ToModels(this IEnumerable<HeartRateDto> dtos, int activityDtoId)
=> dtos.Select(d => d.ToModel(activityDto)); => dtos.Select(d => d.ToModel(activityDtoId));
public static IEnumerable<HeartRateDto> ToDtos(this IEnumerable<HeartRate> models, Activity activity) public static IEnumerable<HeartRateDto> ToDtos(this IEnumerable<HeartRate> models)
=> models.Select(m => m.ToDto(activity)); => models.Select(m => m.ToDto());
} }

@ -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
}

@ -1,3 +1,5 @@
using System.Text.Json.Serialization;
namespace Dto; namespace Dto;
public class DataSourceDto public class DataSourceDto
@ -10,7 +12,9 @@ public class DataSourceDto
public float Precision { get; set; } public float Precision { get; set; }
[JsonIgnore]
public IEnumerable<UserDto>? Athletes { get; set; } public IEnumerable<UserDto>? Athletes { get; set; }
[JsonIgnore]
public IEnumerable<ActivityDto>? Activities { get; set; } public IEnumerable<ActivityDto>? Activities { get; set; }
} }

@ -31,8 +31,6 @@ public static class ActivityMapper
AverageTemperature = activityEntity.AverageTemperature, AverageTemperature = activityEntity.AverageTemperature,
HasAutoPause = activityEntity.HasAutoPause HasAutoPause = activityEntity.HasAutoPause
}; };
Console.WriteLine("ActivityMapper.ToModel");
// here
Action<ActivityEntity, Activity> link = (activityEntity, model) => Action<ActivityEntity, Activity> link = (activityEntity, model) =>
{ {

@ -32,7 +32,7 @@ public static class UserMappeur
model.Role = athleteEntity.IsCoach ? new Coach() : new Athlete(); model.Role = athleteEntity.IsCoach ? new Coach() : new Athlete();
model.DataSources.Add(athleteEntity.DataSource.ToModel()); model.DataSources.Add(athleteEntity.DataSource.ToModel());
model.Activities.AddRange(athleteEntity.Activities.ToModels()); model.Activities.AddRange(athleteEntity.Activities.ToModels());
model.Image = athleteEntity.Image.ToModel(); //model.Image = athleteEntity.Image.ToModel();
}; };
return entity.ToT(_mapper, create, link); return entity.ToT(_mapper, create, link);

@ -59,7 +59,7 @@ namespace Entities
/// <summary> /// <summary>
/// Gets or sets the cadence. /// Gets or sets the cadence.
/// </summary> /// </summary>
public int Cadence { get; set; } public int? Cadence { get; set; }
/// <summary> /// <summary>
/// Gets or sets the distance. /// Gets or sets the distance.

@ -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!;
}

@ -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<string> FilePaths { get; set; } = new List<string>();
public IList<string> NotUploadedFiles { get; set; } = new List<string>();
}
[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<FormValueProviderFactory>();
factories.RemoveType<FormFileValueProviderFactory>();
factories.RemoveType<JQueryFormValueProviderFactory>();
}
public void OnResourceExecuted(ResourceExecutedContext context)
{
}
}

@ -36,6 +36,10 @@ public class HeartRate
: this(0, bpm, timestamp, activity, latitude, longitude, altitude, cadence, distance, speed, power, temperature) : 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() public override string ToString()
{ {
return $"HeartRate #{Id}: {Bpm} bpm at {Timestamp:HH:mm:ss} with a temperature of {Temperature}°C" + return $"HeartRate #{Id}: {Bpm} bpm at {Timestamp:HH:mm:ss} with a temperature of {Temperature}°C" +

@ -36,6 +36,7 @@ public class User
DateOfBirth = dateNaissance; DateOfBirth = dateNaissance;
Role = role; Role = role;
} }
public User(){} public User(){}
} }

@ -29,6 +29,8 @@ public partial class DbDataManager : IDataManager
_logger.LogInformation($"GetActivities with criteria {criteria} and descending {descending}", criteria, descending); _logger.LogInformation($"GetActivities with criteria {criteria} and descending {descending}", criteria, descending);
var activities = _dataManager.DbContext.ActivitiesSet 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(); .Include(a=> a.DataSource).GetItemsWithFilterAndOrdering(b => true, index, count, criteria, descending).ToModels();
_logger.LogInformation($"Retrieved {activities.Count()} activities"); _logger.LogInformation($"Retrieved {activities.Count()} activities");

@ -1,5 +1,6 @@
using DbContextLib; using DbContextLib;
using Entities; using Entities;
using Microsoft.EntityFrameworkCore;
using Model; using Model;
namespace Model2Entities; namespace Model2Entities;
@ -83,7 +84,15 @@ public static class Extensions
return descending ? list.OrderByDescending(x => propertyInfo.GetValue(x)) : list.OrderBy(x => propertyInfo.GetValue(x)); return descending ? list.OrderByDescending(x => propertyInfo.GetValue(x)) : list.OrderBy(x => propertyInfo.GetValue(x));
} }
public static IQueryable<TEntity> IncludeAll<TEntity>(this HeartTrackContext dbContext, IQueryable<TEntity> 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) // public static Activity ToModel(this ActivityEntity entity)
// { // {
// return new Activity ( // return new Activity (

@ -5,9 +5,8 @@ public static class Extensions
public static U ToU<T, U>(this T t, GenericMapper<T, U> mapper, Func<T, U> func,Action<T, U>? action = null) where U :class where T :class public static U ToU<T, U>(this T t, GenericMapper<T, U> mapper, Func<T, U> func,Action<T, U>? action = null) where U :class where T :class
{ {
var res = mapper.GetU(t); var res = mapper.GetU(t);
if (res != null) { if (res != null) return res;
return res;
}
U u = func(t); U u = func(t);
mapper.Add(t, u); mapper.Add(t, u);
if(action != null) action(t, u); if(action != null) action(t, u);

@ -14,7 +14,7 @@ public class GenericMapper<T,U> where T : class where U : class
} }
public U? GetU(T t) 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) if (found.Count() != 1)
{ {
return null; return null;

Loading…
Cancel
Save