You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
API/src/Tests/ConsoleTestRelationships/Program.cs

280 lines
14 KiB

using DbContextLib;
using Entities;
using Microsoft.Data.Sqlite;
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.Options;
using StubbedContextLib;
namespace ConsoleTestRelationships;
class Program
{
static void Main(string[] args)
{
try {
var options = new DbContextOptionsBuilder<HeartTrackContext>()
.UseSqlite("Data Source=uca.HeartTrack.db")
.Options;
using (HeartTrackContext db = new TrainingStubbedContext(options))
{
db.Database.EnsureCreated();
ActivityTests(db);
DataSourceTests(db);
AthleteTests(db);
FriendshipTests(db);
}
}
catch (Exception ex)
{
Console.WriteLine($"Une erreur s'est produite : {ex.Message}");
}
}
static void ActivityTests(HeartTrackContext db)
{
Console.WriteLine("Accès à toutes les activités avec leurs fréquences cardiaques :");
Console.WriteLine("Activités :");
Console.WriteLine("---------------------------------");
foreach (var activity in db.ActivitiesSet.Include(a => a.HeartRates))
{
Console.WriteLine($"\t{activity.IdActivity} - {activity.Type}, {activity.Date}, {activity.StartTime}, {activity.EndTime}, {activity.EffortFelt}, {activity.Variability}, {activity.Variance}, {activity.StandardDeviation}, {activity.Average}, {activity.Maximum}, {activity.Minimum}, {activity.AverageTemperature}, {activity.HasAutoPause}");
Console.WriteLine("\t\tFréquences cardiaques :");
Console.WriteLine("\t\t---------------------------------");
foreach (var heartRate in activity.HeartRates)
{
Console.WriteLine($"\t\t\t{heartRate.IdHeartRate} - {heartRate.Altitude}, {heartRate.Time}, {heartRate.Temperature}, {heartRate.Bpm}, {heartRate.Longitude}, {heartRate.Latitude}");
}
}
Console.WriteLine("---------------------------------\n");
Console.WriteLine("Accès à l'activité d'id '2' :");
Console.WriteLine("---------------------------------");
foreach (var activity in db.ActivitiesSet.Where(a => a.IdActivity == 2).Include(a => a.HeartRates))
{
Console.WriteLine($"\t{activity.IdActivity} - {activity.Type}, {activity.Date}, {activity.StartTime}, {activity.EndTime}, {activity.EffortFelt}, {activity.Variability}, {activity.Variance}, {activity.StandardDeviation}, {activity.Average}, {activity.Maximum}, {activity.Minimum}, {activity.AverageTemperature}, {activity.HasAutoPause}");
Console.WriteLine("\t\tFréquences cardiaques :");
Console.WriteLine("\t\t---------------------------------");
foreach (var heartRate in activity.HeartRates)
{
Console.WriteLine($"\t\t\t{heartRate.IdHeartRate} - {heartRate.Altitude}, {heartRate.Time}, {heartRate.Temperature}, {heartRate.Bpm}, {heartRate.Longitude}, {heartRate.Latitude}");
}
}
}
static void DataSourceTests(HeartTrackContext db)
{
Console.WriteLine("Accès à toutes les sources de données avec leurs activités :");
Console.WriteLine("Sources de données :");
Console.WriteLine("---------------------------------");
foreach (var dataSource in db.DataSourcesSet.Include(ds => ds.Activities).Include(ds => ds.Athletes))
{
Console.WriteLine($"\t{dataSource.IdSource} - {dataSource.Model}");
Console.WriteLine("\t\tActivités :");
Console.WriteLine("\t\t---------------------------------");
foreach (var activity in dataSource.Activities)
{
Console.WriteLine($"\t\t\t{activity.IdActivity} - {activity.Type}, {activity.Date}, {activity.StartTime}, {activity.EndTime}, {activity.EffortFelt}, {activity.Variability}, {activity.Variance}, {activity.StandardDeviation}, {activity.Average}, {activity.Maximum}, {activity.Minimum}, {activity.AverageTemperature}, {activity.HasAutoPause}");
}
Console.WriteLine("\t\tAthletes :");
Console.WriteLine("\t\t---------------------------------");
foreach (var athlete in dataSource.Athletes)
{
Console.WriteLine($"\t\t\t{athlete.IdAthlete} - {athlete.FirstName}, {athlete.LastName}, {athlete.DateOfBirth}, {athlete.Sexe}, {athlete.Weight}, {athlete.IsCoach}");
}
}
Console.WriteLine("---------------------------------\n");
Console.WriteLine("Accès à la source de données d'id '2' :");
Console.WriteLine("---------------------------------");
foreach (var dataSource in db.DataSourcesSet.Where(ds => ds.IdSource == 2).Include(ds => ds.Activities).Include(ds => ds.Athletes))
{
Console.WriteLine($"\t{dataSource.IdSource} - {dataSource.Model}");
Console.WriteLine("\t\tActivités :");
Console.WriteLine("\t\t---------------------------------");
foreach (var activity in dataSource.Activities)
{
Console.WriteLine($"\t\t\t{activity.IdActivity} - {activity.Type}, {activity.Date}, {activity.StartTime}, {activity.EndTime}, {activity.EffortFelt}, {activity.Variability}, {activity.Variance}, {activity.StandardDeviation}, {activity.Average}, {activity.Maximum}, {activity.Minimum}, {activity.AverageTemperature}, {activity.HasAutoPause}");
}
Console.WriteLine("\t\tAthletes :");
Console.WriteLine("\t\t---------------------------------");
foreach (var athlete in dataSource.Athletes)
{
Console.WriteLine($"\t\t\t{athlete.IdAthlete} - {athlete.FirstName}, {athlete.LastName}, {athlete.DateOfBirth}, {athlete.Sexe}, {athlete.Weight}, {athlete.IsCoach}");
}
}
Console.WriteLine("---------------------------------\n");
}
static void AthleteTests(HeartTrackContext db)
{
Console.WriteLine("Accès à tous les athlètes avec leurs statistiques :");
Console.WriteLine("Athlètes :");
Console.WriteLine("---------------------------------");
foreach (var athlete in db.AthletesSet.Include(a => a.Statistics).Include(a => a.Activities).Include(a => a.TrainingsAthlete).Include(a => a.NotificationsSent).Include(a => a.DataSource).Include(a => a.TrainingsCoach).Include(a => a.NotificationsReceived))
{
Console.WriteLine($"\t{athlete.IdAthlete} - {athlete.FirstName}, {athlete.LastName}, {athlete.DateOfBirth}, {athlete.Sexe}, {athlete.Weight}, {athlete.IsCoach}");
Console.WriteLine("\t\tStatistiques :");
Console.WriteLine("\t\t---------------------------------");
foreach (var statistic in athlete.Statistics)
{
Console.WriteLine($"\t\t\t{statistic.IdStatistic} - {statistic.Date}, {statistic.AverageCaloriesBurned}, {statistic.AverageHeartRate}, {statistic.MaximumHeartRate}");
}
Console.WriteLine("\t\tActivités :");
Console.WriteLine("\t\t---------------------------------");
foreach (var activity in athlete.Activities)
{
Console.WriteLine($"\t\t\t{activity.IdActivity} - {activity.Type}, {activity.Date}, {activity.StartTime}, {activity.EndTime}, {activity.EffortFelt}, {activity.Variability}, {activity.Variance}, {activity.StandardDeviation}, {activity.Average}, {activity.Maximum}, {activity.Minimum}, {activity.AverageTemperature}, {activity.HasAutoPause}");
}
Console.WriteLine("\t\tEntraînements :");
Console.WriteLine("\t\t---------------------------------");
foreach (var training in athlete.TrainingsAthlete)
{
Console.WriteLine($"\t\t\t{training.IdTraining} - {training.Date}, {training.Latitude}, {training.Longitude}, {training.Description}, {training.FeedBack}");
}
Console.WriteLine("\t\tEntrainements données :");
Console.WriteLine("\t\t---------------------------------");
foreach (var training in athlete.TrainingsCoach)
{
Console.WriteLine($"\t\t\t{training.IdTraining} - {training.Date}, {training.Latitude}, {training.Longitude}, {training.Description}, {training.FeedBack}");
}
Console.WriteLine("\t\tNotifications reçus :");
Console.WriteLine("\t\t---------------------------------");
foreach (var notification in athlete.NotificationsReceived)
{
Console.WriteLine($"\t\t\t{notification.IdNotif} - {notification.Date}, {notification.Statut}, {notification.Message}");
}
Console.WriteLine("\t\tNotifications données :");
Console.WriteLine("\t\t---------------------------------");
foreach (var notification in athlete.NotificationsSent)
{
Console.WriteLine($"\t\t\t{notification.IdNotif} - {notification.Date}, {notification.Statut}, {notification.Message}");
}
Console.WriteLine("\t\tSources de données :");
Console.WriteLine("\t\t---------------------------------");
Console.WriteLine("\t\t\t" + (athlete.DataSource?.Model ?? "Aucune source de données"));
}
Console.WriteLine("---------------------------------\n");
Console.WriteLine("Accès à l'athlète d'id '2' :");
Console.WriteLine("---------------------------------");
foreach (var athlete in db.AthletesSet.Where(a => a.IdAthlete == 2).Include(a => a.Statistics).Include(a => a.Activities).Include(a => a.TrainingsAthlete).Include(a => a.NotificationsSent).Include(a => a.DataSource).Include(a => a.TrainingsCoach).Include(a => a.NotificationsReceived))
{
Console.WriteLine($"\t{athlete.IdAthlete} - {athlete.FirstName}, {athlete.LastName}, {athlete.DateOfBirth}, {athlete.Sexe}, {athlete.Weight}, {athlete.IsCoach}");
Console.WriteLine("\t\tStatistiques :");
Console.WriteLine("\t\t---------------------------------");
foreach (var statistic in athlete.Statistics)
{
Console.WriteLine($"\t\t\t{statistic.IdStatistic} - {statistic.Date}, {statistic.AverageCaloriesBurned}, {statistic.AverageHeartRate}, {statistic.MaximumHeartRate}");
}
Console.WriteLine("\t\tActivités :");
Console.WriteLine("\t\t---------------------------------");
foreach (var activity in athlete.Activities)
{
Console.WriteLine($"\t\t\t{activity.IdActivity} - {activity.Type}, {activity.Date}, {activity.StartTime}, {activity.EndTime}, {activity.EffortFelt}, {activity.Variability}, {activity.Variance}, {activity.StandardDeviation}, {activity.Average}, {activity.Maximum}, {activity.Minimum}, {activity.AverageTemperature}, {activity.HasAutoPause}");
}
Console.WriteLine("\t\tEntraînements :");
Console.WriteLine("\t\t---------------------------------");
foreach (var training in athlete.TrainingsAthlete)
{
Console.WriteLine($"\t\t\t{training.IdTraining} - {training.Date}, {training.Latitude}, {training.Longitude}, {training.Description}, {training.FeedBack}");
}
Console.WriteLine("\t\tEntrainements données :");
Console.WriteLine("\t\t---------------------------------");
foreach (var training in athlete.TrainingsCoach)
{
Console.WriteLine($"\t\t\t{training.IdTraining} - {training.Date}, {training.Latitude}, {training.Longitude}, {training.Description}, {training.FeedBack}");
}
Console.WriteLine("\t\tNotifications reçus :");
Console.WriteLine("\t\t---------------------------------");
foreach (var notification in athlete.NotificationsReceived)
{
Console.WriteLine($"\t\t\t{notification.IdNotif} - {notification.Date}, {notification.Statut}, {notification.Message}");
}
Console.WriteLine("\t\tNotifications données :");
Console.WriteLine("\t\t---------------------------------");
foreach (var notification in athlete.NotificationsSent)
{
Console.WriteLine($"\t\t\t{notification.IdNotif} - {notification.Date}, {notification.Statut}, {notification.Message}");
}
Console.WriteLine("\t\tSources de données :");
Console.WriteLine("\t\t---------------------------------");
Console.WriteLine("\t\t\t" + (athlete.DataSource?.Model ?? "Aucune source de données"));
}
Console.WriteLine("---------------------------------\n");
}
static void FriendshipTests(HeartTrackContext db)
{
Console.WriteLine("Accès à toutes les amitiés :");
Console.WriteLine("Amitiés :");
Console.WriteLine("---------------------------------");
foreach (var athlete in db.AthletesSet.Include(f => f.Followers).Include(f => f.Followings))
{
Console.WriteLine($"\t{athlete.IdAthlete} - {athlete.FirstName}, {athlete.LastName}, {athlete.DateOfBirth}, {athlete.Sexe}, {athlete.Weight}, {athlete.IsCoach}");
Console.WriteLine($"");
Console.WriteLine($"");
Console.WriteLine($"\t\t{athlete.Followers.Aggregate("", (seed, kvp) => $"{seed} [{kvp.FollowerId} ; {kvp.FollowingId} ; {kvp.StartDate.ToString("dd/MM/yyyy hh:mm:ss")}]")}");
}
}
}