diff --git a/src/EFMappers/ActivityMapper.cs b/src/EFMappers/ActivityMapper.cs index c95a048..81c94c5 100644 --- a/src/EFMappers/ActivityMapper.cs +++ b/src/EFMappers/ActivityMapper.cs @@ -7,15 +7,6 @@ namespace EFMappers; public static class ActivityMapper { private static GenericMapper _mapper = new GenericMapper(); - public static Activity? GetModel(ActivityEntity entity) => - _mapper.GetT(entity); - public static ActivityEntity? GetEntity(Activity model) => - _mapper.GetU(model); - public static void Add(Activity model, ActivityEntity entity) - { - var tuple = new Tuple(model, entity); - _mapper.Add(model, entity); - } // ! RESET // ? Quand on fait appel au reset ? // * Apres des saves changing ou rollback. diff --git a/src/HeartTrackAPI/Program.cs b/src/HeartTrackAPI/Program.cs index 90e1b5a..f5ee948 100644 --- a/src/HeartTrackAPI/Program.cs +++ b/src/HeartTrackAPI/Program.cs @@ -18,6 +18,4 @@ var app = builder.Build(); init.Configure(app, app.Environment); -var context = app.Services.GetService() ?? app.Services.GetService(); -context!.Database.EnsureCreated(); app.Run(); \ No newline at end of file diff --git a/src/Model2Entities/ActivityRepository.cs b/src/Model2Entities/ActivityRepository.cs index 845d6bb..a120374 100644 --- a/src/Model2Entities/ActivityRepository.cs +++ b/src/Model2Entities/ActivityRepository.cs @@ -53,7 +53,7 @@ public partial class DbDataManager : IDataManager try { _logger.LogInformation("Adding new activity"); - var addedActivity = (await _dataManager.DbContext.AddItem(activity.ToEntity())).ToModel(); + var addedActivity = (await _dataManager.DbContext.AddItem(activity.ToEntity()))?.ToModel(); if (addedActivity != null) _logger.LogInformation($"Added activity with ID {addedActivity.Id}"); else @@ -71,14 +71,28 @@ public partial class DbDataManager : IDataManager { try { - return activity; - // _logger.LogInformation($"Updating activity with ID {id}"); - // var updatedActivity = await _dataManager.DbContext.ActivitiesSet.UpdateItem(_dataManager.DbContext,(await GetActivityByIdAsync(id)).ToEntity(), activity.ToEntity()); - // if (updatedActivity != null) - // _logger.LogInformation($"Updated activity with ID {id}"); - // else - // _logger.LogError($"Failed to update activity with ID {id}"); - // return await Task.FromResult(updatedActivity.ToModel()); + _logger.LogInformation($"Updating activity with ID {id}"); + var updatedActivity = await _dataManager.DbContext.UpdateItem(id, activity, (activity, entity) => + { + entity.Type = activity.Type; + entity.Date = DateOnly.FromDateTime(activity.Date); + entity.StartTime = TimeOnly.FromDateTime(activity.StartTime); + entity.EndTime = TimeOnly.FromDateTime(activity.EndTime); + entity.EffortFelt = activity.Effort; + entity.Variability = activity.Variability; + entity.Variance = activity.Variance; + entity.StandardDeviation = activity.StandardDeviation; + entity.Average = activity.Average; + entity.Maximum = activity.Maximum; + entity.Minimum = activity.Minimum; + entity.AverageTemperature = activity.AverageTemperature; + entity.HasAutoPause = activity.HasAutoPause; + }); + if (updatedActivity != null) + _logger.LogInformation($"Updated activity with ID {id}"); + else + _logger.LogError($"Failed to update activity with ID {id}"); + return await Task.FromResult(updatedActivity!.ToModel()); } catch (Exception ex) { diff --git a/src/Model2Entities/Extension.cs b/src/Model2Entities/Extension.cs index ea02563..d1e33cc 100644 --- a/src/Model2Entities/Extension.cs +++ b/src/Model2Entities/Extension.cs @@ -28,20 +28,24 @@ public static class Extensions return await Task.FromResult(true); } - internal static async Task UpdateItem(this IList collection, T? oldItem, T? newItem) where T : class + public static async Task UpdateItem(this HeartTrackContext context, int? id, T? newItem, Action updateAction) where T : class where U: class { - // if(oldItem == null || newItem == null) return default(T); + var existingT = await context.Set().FindAsync(id); + if (existingT != null && newItem != null) + { + // Appliquer les mises à jour sur l'objet existant en utilisant l'action passée en paramètre + updateAction(newItem, existingT); + + // Marquer l'objet comme modifié dans le contexte + context.Update(existingT); - // if(!collection.Contains(oldItem)) - // { - // return default(T); - // } + // Enregistrer les modifications dans la base de données + await context.SaveChangesAsync(); + } - // collection.Remove(oldItem!); - // await collection.AddItem(newItem!); - // return newItem; - return await Task.FromResult(default(T)); + return existingT; } + public static IEnumerable GetItemsWithFilterAndOrdering(this IEnumerable list, Func filter, int index, int count, Enum? orderCriterium, bool descending = false ) where T : class {