Merge remote-tracking branch 'origin/Test_CI' into tests_merging
continuous-integration/drone/push Build is passing Details

WORK-KMO2
Antoine PEREDERII 1 year ago
commit 26574cc639

@ -30,7 +30,7 @@ public static class ActivityMapper
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();
model.Athlete = activity.Athlete.ToModel();
};
@ -60,7 +60,7 @@ public static class ActivityMapper
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.Athlete = activity.Athlete.ToDto();
};

@ -8,16 +8,18 @@ public static class HeartRateMapper
{
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 =>
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<HeartRate, HeartRateDto> create = heartRate =>
new HeartRateDto
{
@ -35,11 +37,11 @@ public static class HeartRateMapper
return model.ToU(_mapper, create);
}
public static IEnumerable<HeartRate> ToModels(this IEnumerable<HeartRateDto> dtos, ActivityDto activityDto)
=> dtos.Select(d => d.ToModel(activityDto));
public static IEnumerable<HeartRate> ToModels(this IEnumerable<HeartRateDto> dtos, int activityDtoId)
=> dtos.Select(d => d.ToModel(activityDtoId));
public static IEnumerable<HeartRateDto> ToDtos(this IEnumerable<HeartRate> models, Activity activity)
=> models.Select(m => m.ToDto(activity));
public static IEnumerable<HeartRateDto> ToDtos(this IEnumerable<HeartRate> models)
=> 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;
public class DataSourceDto
@ -10,7 +12,9 @@ public class DataSourceDto
public float Precision { get; set; }
[JsonIgnore]
public IEnumerable<UserDto>? Athletes { get; set; }
[JsonIgnore]
public IEnumerable<ActivityDto>? Activities { get; set; }
}

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

@ -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);

@ -59,7 +59,7 @@ namespace Entities
/// <summary>
/// Gets or sets the cadence.
/// </summary>
public int Cadence { get; set; }
public int? Cadence { get; set; }
/// <summary>
/// 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)
{}
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" +

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

@ -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);

@ -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<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)
// {
// 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
{
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);

@ -14,7 +14,7 @@ public class GenericMapper<T,U> 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;

Loading…
Cancel
Save