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/Model2Entities/ActivityRepository.cs b/src/Model2Entities/ActivityRepository.cs index facb34c..9f85796 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,29 @@ 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()); + // return activity; + _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 24c1e2b..ca55e0f 100644 --- a/src/Model2Entities/Extension.cs +++ b/src/Model2Entities/Extension.cs @@ -31,20 +31,51 @@ public static class Extensions return Task.FromResult(true); } - internal static async Task UpdateItem(this IList collection, T? oldItem, T? newItem) where T : class + // ! 1 + // internal static async Task UpdateItem(this HeartTrackContext context, int? id, T? newItem) where T : class + // { + // var existingT = await context.Set().FindAsync(id); + // if (existingT != null) + // { + // context.Entry(existingT).CurrentValues.SetValues(newItem!); + // context.Update(existingT); + // // existingT = func(newItem!); + // await context.SaveChangesAsync(); + // } + + // return existingT; + // // if(oldItem == null || newItem == null) return default(T); + + // // if(!collection.Contains(oldItem)) + // // { + // // return default(T); + // // } + + // // collection.Remove(oldItem!); + // // await collection.AddItem(newItem!); + // // return newItem; + // // return await Task.FromResult(default(T)); + // } + + // ! 2 + 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); - // if(!collection.Contains(oldItem)) - // { - // return default(T); - // } + // Marquer l'objet comme modifié dans le contexte + context.Update(existingT); - // collection.Remove(oldItem!); - // await collection.AddItem(newItem!); - // return newItem; - return await Task.FromResult(default(T)); + // Enregistrer les modifications dans la base de données + await context.SaveChangesAsync(); + } + + return existingT; } + public static IEnumerable GetItemsWithFilterAndOrdering(this IEnumerable list, Func filter, int index, int count, Enum? orderCriterium, bool descending = false ) where T : class {