diff --git a/API_SQLuedo/API/API.csproj b/API_SQLuedo/API/API.csproj
index cd3cbe6..f3c90dd 100644
--- a/API_SQLuedo/API/API.csproj
+++ b/API_SQLuedo/API/API.csproj
@@ -8,19 +8,19 @@
-
-
-
+
+
+
all
runtime; build; native; contentfiles; analyzers; buildtransitive
-
-
+
+
all
runtime; build; native; contentfiles; analyzers; buildtransitive
-
+
diff --git a/API_SQLuedo/API_SQLuedo.sln b/API_SQLuedo/API_SQLuedo.sln
index 888826d..58f87a2 100644
--- a/API_SQLuedo/API_SQLuedo.sln
+++ b/API_SQLuedo/API_SQLuedo.sln
@@ -3,19 +3,21 @@ Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 17
VisualStudioVersion = 17.8.34408.163
MinimumVisualStudioVersion = 10.0.40219.1
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "API", "API\API.csproj", "{65F4AE69-E1CA-4B87-BDF0-946A37351BD1}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "API", "API\API.csproj", "{65F4AE69-E1CA-4B87-BDF0-946A37351BD1}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Entities", "EntityFramework\Entities.csproj", "{6D079CDA-C000-4833-98A0-D07D153EA264}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Entities", "EntityFramework\Entities.csproj", "{6D079CDA-C000-4833-98A0-D07D153EA264}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Model", "Model\Model.csproj", "{ADCC427D-A3CD-431C-A90B-F9369C4584E8}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Model", "Model\Model.csproj", "{ADCC427D-A3CD-431C-A90B-F9369C4584E8}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "TestAPI", "TestAPI\TestAPI.csproj", "{17025B90-8B2A-49E9-97D3-1A84A208DF50}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "TestAPI", "TestAPI\TestAPI.csproj", "{17025B90-8B2A-49E9-97D3-1A84A208DF50}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "TestEF", "TestEF\TestEF.csproj", "{54FAD8AF-7601-4C54-8406-D81476A8D7D7}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "TestEF", "TestEF\TestEF.csproj", "{54FAD8AF-7601-4C54-8406-D81476A8D7D7}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DbContextLib", "DbContextLib\DbContextLib.csproj", "{BDCB3BFD-B744-4BC0-BCFC-78E08600203A}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "DbContextLib", "DbContextLib\DbContextLib.csproj", "{BDCB3BFD-B744-4BC0-BCFC-78E08600203A}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Services", "Services\Services.csproj", "{9BD3DCBA-AFD8-47FA-B07C-613B53E63968}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Services", "Services\Services.csproj", "{9BD3DCBA-AFD8-47FA-B07C-613B53E63968}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "TestConsoleAPI", "TestConsoleAPI\TestConsoleAPI.csproj", "{46376AEF-4093-4AE9-AD2F-F51B541F9C6A}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
@@ -51,6 +53,10 @@ Global
{9BD3DCBA-AFD8-47FA-B07C-613B53E63968}.Debug|Any CPU.Build.0 = Debug|Any CPU
{9BD3DCBA-AFD8-47FA-B07C-613B53E63968}.Release|Any CPU.ActiveCfg = Release|Any CPU
{9BD3DCBA-AFD8-47FA-B07C-613B53E63968}.Release|Any CPU.Build.0 = Release|Any CPU
+ {46376AEF-4093-4AE9-AD2F-F51B541F9C6A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {46376AEF-4093-4AE9-AD2F-F51B541F9C6A}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {46376AEF-4093-4AE9-AD2F-F51B541F9C6A}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {46376AEF-4093-4AE9-AD2F-F51B541F9C6A}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
diff --git a/API_SQLuedo/DbContextLib/DbContextLib.csproj b/API_SQLuedo/DbContextLib/DbContextLib.csproj
index 4611898..f2f138b 100644
--- a/API_SQLuedo/DbContextLib/DbContextLib.csproj
+++ b/API_SQLuedo/DbContextLib/DbContextLib.csproj
@@ -7,14 +7,15 @@
-
-
-
-
+
+
+
+
all
runtime; build; native; contentfiles; analyzers; buildtransitive
-
+
+
all
runtime; build; native; contentfiles; analyzers; buildtransitive
diff --git a/API_SQLuedo/EntityFramework/Entities.csproj b/API_SQLuedo/EntityFramework/Entities.csproj
index feae017..0768618 100644
--- a/API_SQLuedo/EntityFramework/Entities.csproj
+++ b/API_SQLuedo/EntityFramework/Entities.csproj
@@ -7,12 +7,12 @@
-
-
+
+
all
runtime; build; native; contentfiles; analyzers; buildtransitive
-
+
all
runtime; build; native; contentfiles; analyzers; buildtransitive
diff --git a/API_SQLuedo/Model/DTO/UserDTO.cs b/API_SQLuedo/Model/DTO/UserDTO.cs
index 786fad7..06aa236 100644
--- a/API_SQLuedo/Model/DTO/UserDTO.cs
+++ b/API_SQLuedo/Model/DTO/UserDTO.cs
@@ -23,5 +23,18 @@ namespace Model.DTO
Email = email;
IsAdmin = isAdmin;
}
+
+ public UserDTO(string username, string password, string email, bool isAdmin)
+ {
+ Username = username;
+ Password = password;
+ Email = email;
+ IsAdmin = isAdmin;
+ }
+
+ public override string ToString()
+ {
+ return $"{Id}\t{Username}\t{Email}\t{IsAdmin}";
+ }
}
}
diff --git a/API_SQLuedo/Model/Model.csproj b/API_SQLuedo/Model/Model.csproj
index b46af5d..6e81eea 100644
--- a/API_SQLuedo/Model/Model.csproj
+++ b/API_SQLuedo/Model/Model.csproj
@@ -7,12 +7,12 @@
-
-
+
+
all
runtime; build; native; contentfiles; analyzers; buildtransitive
-
+
all
runtime; build; native; contentfiles; analyzers; buildtransitive
diff --git a/API_SQLuedo/Services/Services.csproj b/API_SQLuedo/Services/Services.csproj
index 4cd7b1b..4eafac0 100644
--- a/API_SQLuedo/Services/Services.csproj
+++ b/API_SQLuedo/Services/Services.csproj
@@ -7,12 +7,12 @@
-
-
+
+
all
runtime; build; native; contentfiles; analyzers; buildtransitive
-
+
all
runtime; build; native; contentfiles; analyzers; buildtransitive
diff --git a/API_SQLuedo/TestAPI/TestAPI.csproj b/API_SQLuedo/TestAPI/TestAPI.csproj
index bda60d7..9d1ad3b 100644
--- a/API_SQLuedo/TestAPI/TestAPI.csproj
+++ b/API_SQLuedo/TestAPI/TestAPI.csproj
@@ -10,19 +10,20 @@
-
-
+
+
all
runtime; build; native; contentfiles; analyzers; buildtransitive
-
+
+
all
runtime; build; native; contentfiles; analyzers; buildtransitive
-
+
-
-
+
+
runtime; build; native; contentfiles; analyzers; buildtransitive
all
diff --git a/API_SQLuedo/TestConsoleAPI/Program.cs b/API_SQLuedo/TestConsoleAPI/Program.cs
new file mode 100644
index 0000000..651de21
--- /dev/null
+++ b/API_SQLuedo/TestConsoleAPI/Program.cs
@@ -0,0 +1,319 @@
+// See https://aka.ms/new-console-template for more information
+
+using API.Controllers;
+using DbContextLib;
+using Microsoft.AspNetCore.Mvc;
+using Microsoft.Data.Sqlite;
+using Microsoft.EntityFrameworkCore;
+using Microsoft.Extensions.Logging;
+using Microsoft.Extensions.Options;
+using Model.DTO;
+using Services;
+
+var connection = new SqliteConnection("DataSource=:memory:");
+connection.Open();
+var options = new DbContextOptionsBuilder()
+ .UseSqlite(connection)
+ .Options;
+using ILoggerFactory factory = new LoggerFactory();
+ILogger logger = factory.CreateLogger();
+
+using (var context = new UserDbContext(options))
+{
+ var controller = new UserController(new UserDataService(context), logger);
+
+ void PrintUsers()
+ {
+ Console.WriteLine();
+ var users = controller.GetUsers(1, 10) as OkObjectResult;
+ foreach(var item in users.Value as IEnumerable)
+ {
+ Console.WriteLine(item);
+ }
+ }
+
+ void SearchUserByUsername()
+ {
+ Console.WriteLine("\nVeuillez saisir le pseudonyme de l'utilisateur recherché : ");
+ var username = Console.ReadLine();
+ var user = controller.GetUserByUsername(username) as OkObjectResult;
+ if(user == null)
+ {
+ Console.WriteLine("Erreur, la requête n'a rien donné.");
+ return;
+ }
+ Console.WriteLine(user.Value as UserDTO);
+ }
+
+ void SearchUserById()
+ {
+ Console.WriteLine("\nVeuillez saisir l'identifiant de l'utilisateur recherché : ");
+ var id = Console.ReadLine();
+ var user = controller.GetUserById(int.Parse(id)) as OkObjectResult;
+ if (user == null)
+ {
+ Console.WriteLine("Erreur, la requête n'a rien donné.");
+ return;
+ }
+ Console.WriteLine(user.Value as UserDTO);
+ }
+
+ void AddUser()
+ {
+ Console.WriteLine("Veuillez saisir le pseudonyme :");
+ var username = Console.ReadLine();
+ Console.WriteLine("Veuillez saisir une adresse email :");
+ var email = Console.ReadLine();
+ Console.WriteLine("Veuillez saisir un mot de passe :");
+ var mdp = Console.ReadLine();
+ var res = controller.CreateUser(new UserDTO(username, mdp, email, false));
+ if(res.GetType() == typeof(CreatedResult)) {
+ Console.WriteLine("\nUtilisateur créé avec succès");
+ } else
+ {
+ Console.WriteLine("\nErreur lors de la création de l'utilisateur !");
+ }
+ }
+
+ void UpdateUser()
+ {
+ Console.WriteLine("Quel est l'identifiant de l'utilisateur à mettre à jour ?");
+ var id = int.Parse(Console.ReadLine());
+ var res = (controller.GetUserById(id));
+ if (res.GetType() == typeof(OkObjectResult)) {
+ var user = (res as OkObjectResult).Value as UserDTO;
+ if (user == null) {
+ Console.WriteLine("Erreur, un problème est survenu");
+ return;
+ }
+ else
+ {
+ Console.WriteLine("Utilisateur trouvé !\n");
+ Console.WriteLine("Veuillez saisir le pseudonyme :");
+ var username = Console.ReadLine();
+ Console.WriteLine("Veuillez saisir l'email :");
+ var email = Console.ReadLine();
+ var retour = controller.UpdateUser(id, new UserDTO(id, username, user.Password, email, user.IsAdmin));
+ if(retour.GetType() == typeof(OkObjectResult))
+ {
+ Console.WriteLine("Mise à jour effectué avec succès !");
+ } else
+ {
+ Console.WriteLine("Une erreur est survenue lors de la mise à jour.");
+ }
+ }
+ }
+ else {
+ Console.WriteLine("Une erreur est survenue lors de la mise à jour !");
+ }
+ }
+
+ void DeleteUser()
+ {
+ Console.WriteLine("Quel est l'identifiant de lutilisateur à supprimer ?");
+ var id = int.Parse(Console.ReadLine());
+ var res = controller.DeleteUser(id);
+ if(res.GetType() == typeof(OkObjectResult))
+ {
+ Console.WriteLine("La suppression a été effectuée avec succès !");
+ }
+ else
+ {
+ Console.WriteLine("Erreur lors de la suppression !");
+ }
+ }
+
+
+ void Menu()
+ {
+ Console.WriteLine("|------------------------------------------------|");
+ Console.WriteLine("| Menu |");
+ Console.WriteLine("|------------------------------------------------|");
+ Console.WriteLine("| t - Effectuer des tests automatiques |");
+ Console.WriteLine("| 1 - Afficher les utilisateurs |");
+ Console.WriteLine("| 2 - Rechercher un utilisateur avec son pseudo |");
+ Console.WriteLine("| 3 - Rechercher un utilisateur avec son ID |");
+ Console.WriteLine("| 4 - Ajouter un utilisateur |");
+ Console.WriteLine("| 5 - Mettre à jour un utilisateur |");
+ Console.WriteLine("| 6 - Supprimer un utilisateur |");
+ Console.WriteLine("| q - Quitter |");
+ Console.WriteLine("|------------------------------------------------|");
+ }
+
+ Menu();
+ Console.WriteLine("\nSaisie :");
+ var saisie = Console.ReadLine();
+
+ while (saisie != "q") {
+ switch (saisie)
+ {
+ case "1":
+ PrintUsers();
+ break;
+ case "2":
+ SearchUserByUsername();
+ break;
+ case "3":
+ SearchUserById();
+ break;
+ case "4":
+ AddUser();
+ break;
+ case "5":
+ UpdateUser();
+ break;
+ case "6":
+ DeleteUser();
+ break;
+ case "t":
+ AutoTests();
+ break;
+ default:
+ break;
+ }
+ Console.WriteLine("\nAppuyez sur n'importe quelle touche pour continuer...");
+ Console.ReadKey();
+ Console.Clear();
+ Menu();
+ Console.WriteLine("\nSaisie :");
+ saisie = Console.ReadLine();
+ }
+
+ void AutoTests()
+ {
+ // Affichage des utilisateurs
+ Console.WriteLine("\n##########################################################\n");
+ Console.WriteLine("Affichages des utilisateurs stubbés dans le contexte :\n");
+ var res = controller.GetUsers(1, 10) as OkObjectResult;
+ if(res == null)
+ {
+ Console.WriteLine("\nErreur lors de l'acquisition de la liste des utilisateurs");
+ }
+ else
+ {
+ var users = res.Value as IEnumerable;
+ if(users == null) {
+ Console.WriteLine("\nErreur, les ustilisateurs n'ont pas été trouvés !");
+ }
+ else
+ {
+ PrintUsers();
+ }
+ }
+
+ // Recherche d'utilisateur par ID
+ Console.WriteLine("\n##########################################################\n");
+ Console.WriteLine("Affichage de l'utilisateur ayant pour identifiant 1 :\n");
+ var res1 = controller.GetUserById(1) as OkObjectResult;
+ if (res1 == null)
+ {
+ Console.WriteLine("\nErreur lors de l'acquisition de l'utilisateur !");
+ }
+ else
+ {
+ var user = res1.Value as UserDTO;
+ if (user == null)
+ {
+ Console.WriteLine("\nErreur, l'utilisateur n'existe pas !");
+ }
+ else
+ {
+ Console.WriteLine(user);
+ }
+ }
+
+ // Recherche d'utilisateur par pseudonyme
+ Console.WriteLine("\n##########################################################\n");
+ Console.WriteLine("Affichage de l'utilisateur ayant pour username johnny :\n");
+ var res2 = controller.GetUserByUsername("johnny") as OkObjectResult;
+ if (res2 == null)
+ {
+ Console.WriteLine("\nErreur lors de l'acquisition de l'utilisateur !");
+ }
+ else
+ {
+ var user1 = res2.Value as UserDTO;
+ if (user1 == null)
+ {
+ Console.WriteLine("\nErreur, l'utilisateur n'existe pas !");
+ }
+ else
+ {
+ Console.WriteLine(user1);
+ }
+ }
+
+ // Ajout d'un utilisateur
+ Console.WriteLine("\n##########################################################\n");
+ Console.WriteLine("Création de l'utilisateur :\n");
+ var user2 = new UserDTO("JohnDoe", "motdepasse", "johndoe@gmail.com", false);
+ Console.WriteLine(user2);
+ var res3 = controller.CreateUser(user2) as CreatedResult;
+ if (res3 == null)
+ {
+ Console.WriteLine("\nErreur lors de la création de l'utilisateur !");
+ }
+ else
+ {
+ Console.WriteLine("\nUtilisateur créé avec succès !");
+ }
+
+ // Affichage des utilisateurs
+ Console.WriteLine("\n##########################################################\n");
+ PrintUsers();
+
+ // Mise à jour d'un utilisateur
+ Console.WriteLine("\n##########################################################\n");
+ Console.WriteLine("Mise à jour de l'adresse email de l'utilisateur :\n");
+ user2 = ((controller.GetUserByUsername("JohnDoe") as OkObjectResult).Value as UserDTO);
+ if (user2 == null)
+ {
+ Console.WriteLine("\nErreur lors de la récupération de l'utilisateur !");
+ }
+ else
+ {
+ Console.WriteLine(user2);
+ Console.WriteLine("\nNouvelle adresse : John.DOE@etu.uca.fr");
+ var user3 = new UserDTO(user2.Id, user2.Username, user2.Password, "John.DOE@etu.uca.fr", user2.IsAdmin);
+ var res4 = controller.UpdateUser(user2.Id, user3) as OkObjectResult;
+ if (res4 == null)
+ {
+ Console.WriteLine("\nErreur lors de la mise à jour de l'utilisateur !");
+ }
+ else
+ {
+ Console.WriteLine("\nUtilisateur mis à jour avec succès !");
+ }
+ }
+ // Affichage des utilisateurs
+
+ Console.WriteLine("\n##########################################################\n");
+ PrintUsers();
+
+ // Suppression d'un utilisateur
+ Console.WriteLine("\n##########################################################\n");
+ Console.WriteLine("Suppression de l'utilisateur JohnDoe:\n");
+ user2 = ((controller.GetUserByUsername("JohnDoe") as OkObjectResult).Value as UserDTO);
+ if (user2 == null)
+ {
+ Console.WriteLine("\nErreur lors de la récupération de l'utilisateur !");
+ }
+ else
+ {
+ Console.WriteLine(user2);
+ var res5 = controller.DeleteUser(user2.Id) as OkObjectResult;
+ if (res5 == null)
+ {
+ Console.WriteLine("\nErreur lors de la suppression de l'utilisateur !");
+ }
+ else
+ {
+ Console.WriteLine("\nUtilisateur supprimé avec succès !");
+ }
+ }
+ // Affichage des utilisateurs
+
+ Console.WriteLine("\n##########################################################\n");
+ PrintUsers();
+ }
+}
\ No newline at end of file
diff --git a/API_SQLuedo/TestConsoleAPI/TestConsoleAPI.csproj b/API_SQLuedo/TestConsoleAPI/TestConsoleAPI.csproj
new file mode 100644
index 0000000..c013237
--- /dev/null
+++ b/API_SQLuedo/TestConsoleAPI/TestConsoleAPI.csproj
@@ -0,0 +1,21 @@
+
+
+
+ Exe
+ net8.0
+ enable
+ enable
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/API_SQLuedo/TestEF/TestEF.csproj b/API_SQLuedo/TestEF/TestEF.csproj
index bda60d7..9d1ad3b 100644
--- a/API_SQLuedo/TestEF/TestEF.csproj
+++ b/API_SQLuedo/TestEF/TestEF.csproj
@@ -10,19 +10,20 @@
-
-
+
+
all
runtime; build; native; contentfiles; analyzers; buildtransitive
-
+
+
all
runtime; build; native; contentfiles; analyzers; buildtransitive
-
+
-
-
+
+
runtime; build; native; contentfiles; analyzers; buildtransitive
all