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