feat: implémenter le service de tableau de bord et DTO pour les statistiques du tableau de bord

This commit is contained in:
mirage
2026-04-01 13:12:00 +02:00
parent 727d29889a
commit e47a50e0da
14 changed files with 198 additions and 50 deletions

View File

@@ -176,5 +176,37 @@ namespace Webzine.Repository
throw new Exception("Erreur lors de la recherche d'artiste {error}", ex);
}
}
/// <inheritdoc/>
public int Count()
{
try
{
int count = this.context.Artistes.Count();
this.logger.LogDebug("Nombre total d'artistes dans la base: {Count}", count);
return count;
}
catch (Exception ex)
{
this.logger.LogError(ex, "Erreur lors du comptage des artistes.");
throw;
}
}
/// <inheritdoc/>
public int Count(Func<Artiste, bool> predicate)
{
try
{
int count = this.context.Artistes.Count(predicate);
this.logger.LogDebug("Nombre d'artistes (avec prédicat): {Count}", count);
return count;
}
catch (Exception ex)
{
this.logger.LogError(ex, "Erreur lors du comptage des artistes avec prédicat.");
throw;
}
}
}
}

View File

@@ -178,4 +178,20 @@ public class DbStyleRepository : IStyleRepository
throw;
}
}
/// <inheritdoc/>
public int Count()
{
try
{
int count = this.context.Styles.Count();
this.logger.LogDebug("Nombre total de styles: {Count}", count);
return count;
}
catch (Exception ex)
{
this.logger.LogError(ex, "Erreur lors du comptage des styles");
throw;
}
}
}

View File

@@ -93,5 +93,17 @@ namespace Webzine.Repository
.Where(a => a.Nom.ToLower().Contains(mot.ToLower()))
.ToList();
}
/// <inheritdoc/>
public int Count()
{
return this.dataStore.Artistes.Count;
}
/// <inheritdoc/>
public int Count(Func<Artiste, bool> predicate)
{
return this.dataStore.Artistes.Count(predicate);
}
}
}

View File

@@ -56,4 +56,10 @@ public class LocalStyleRepository : IStyleRepository
{
throw new NotSupportedException("Mode local");
}
/// <inheritdoc/>
public int Count()
{
return this.dataStore.Styles.Count;
}
}