From 4ff82c30a366b90924fbe4a11a86c183861e9354 Mon Sep 17 00:00:00 2001 From: "Johnny.Ratton" Date: Tue, 12 Mar 2024 15:24:52 +0100 Subject: [PATCH 01/21] =?UTF-8?q?Test=20de=20toutes=20les=20entit=C3=A9s?= =?UTF-8?q?=20sauf=20blackList=20et=20contentLesson?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- API_SQLuedo/EntityFramework/InquiryEntity.cs | 10 +-- API_SQLuedo/EntityFramework/SolutionEntity.cs | 10 +-- API_SQLuedo/Shared/Mapper/InquiryMapper.cs | 4 +- API_SQLuedo/Shared/Mapper/SolutionMapper.cs | 4 +- .../TestEF/EntitiesTests/TestInquiryEntity.cs | 61 +++++++++++++++++ .../EntitiesTests/TestInquiryTableEntity.cs | 52 +++++++++++++++ .../TestEF/EntitiesTests/TestLessonEntity.cs | 52 +++++++++++++++ .../TestEF/EntitiesTests/TestNotepadEntity.cs | 49 ++++++++++++++ .../EntitiesTests/TestParagraphEntity.cs | 61 +++++++++++++++++ .../EntitiesTests/TestSolutionEntity.cs | 66 +++++++++++++++++++ .../TestEF/EntitiesTests/TestSuccessEntity.cs | 59 +++++++++++++++++ .../TestEF/EntitiesTests/TestUserEntity.cs | 56 ++++++++++++++++ API_SQLuedo/TestEF/TestEF.csproj | 7 ++ API_SQLuedo/TestEF/UnitTest1.cs | 11 ---- 14 files changed, 477 insertions(+), 25 deletions(-) create mode 100644 API_SQLuedo/TestEF/EntitiesTests/TestInquiryEntity.cs create mode 100644 API_SQLuedo/TestEF/EntitiesTests/TestInquiryTableEntity.cs create mode 100644 API_SQLuedo/TestEF/EntitiesTests/TestLessonEntity.cs create mode 100644 API_SQLuedo/TestEF/EntitiesTests/TestNotepadEntity.cs create mode 100644 API_SQLuedo/TestEF/EntitiesTests/TestParagraphEntity.cs create mode 100644 API_SQLuedo/TestEF/EntitiesTests/TestSolutionEntity.cs create mode 100644 API_SQLuedo/TestEF/EntitiesTests/TestSuccessEntity.cs create mode 100644 API_SQLuedo/TestEF/EntitiesTests/TestUserEntity.cs delete mode 100644 API_SQLuedo/TestEF/UnitTest1.cs diff --git a/API_SQLuedo/EntityFramework/InquiryEntity.cs b/API_SQLuedo/EntityFramework/InquiryEntity.cs index f930acf..d536d68 100644 --- a/API_SQLuedo/EntityFramework/InquiryEntity.cs +++ b/API_SQLuedo/EntityFramework/InquiryEntity.cs @@ -9,31 +9,31 @@ namespace Entities public string Description { get; set; } public bool IsUser { get; set; } public InquiryTableEntity Database { get; set; } - public SolutionEntity InquiryTable { get; set; } + public SolutionEntity Solution { get; set; } public InquiryEntity() { } public InquiryEntity(int id) { Id = id; } - public InquiryEntity(int id, string title, string description, bool isUser, InquiryTableEntity database, SolutionEntity inquiryTable) + public InquiryEntity(int id, string title, string description, bool isUser, InquiryTableEntity database, SolutionEntity solution) { Id = id; Title = title; Description = description; IsUser = isUser; Database = database; - InquiryTable = inquiryTable; + Solution = solution; } - public InquiryEntity(string title, string description, bool isUser, InquiryTableEntity database, SolutionEntity inquiryTable) + public InquiryEntity(string title, string description, bool isUser, InquiryTableEntity database, SolutionEntity solution) { Id = 0; Title = title; Description = description; IsUser = isUser; Database = database; - InquiryTable = inquiryTable; + Solution = solution; } } } diff --git a/API_SQLuedo/EntityFramework/SolutionEntity.cs b/API_SQLuedo/EntityFramework/SolutionEntity.cs index 6c8dbdf..11f7d0a 100644 --- a/API_SQLuedo/EntityFramework/SolutionEntity.cs +++ b/API_SQLuedo/EntityFramework/SolutionEntity.cs @@ -16,13 +16,13 @@ public class SolutionEntity public string? MurdererLastName { get; set; } public string? MurderPlace { get; set; } public string? MurderWeapon { get; set; } - public string? Explanation { get; set; } + public string? Explaination { get; set; } public SolutionEntity() { } public SolutionEntity(int ownerId) { OwnerId = ownerId; } - public SolutionEntity(int ownerId, InquiryEntity? owner, string murdererFirstName, string murdererLastName, string murderPlace, string murderWeapon, string explanation) + public SolutionEntity(int ownerId, InquiryEntity? owner, string murdererFirstName, string murdererLastName, string murderPlace, string murderWeapon, string explaination) { OwnerId = ownerId; Owner = owner; @@ -30,15 +30,15 @@ public class SolutionEntity MurdererLastName = murdererLastName; MurderPlace = murderPlace; MurderWeapon = murderWeapon; - Explanation = explanation; + Explaination = explaination; } - public SolutionEntity(InquiryEntity? owner, string murdererFirstName, string murdererLastName, string murderPlace, string murderWeapon, string explanation) + public SolutionEntity(InquiryEntity? owner, string murdererFirstName, string murdererLastName, string murderPlace, string murderWeapon, string explaination) { Owner = owner; MurdererFirstName = murdererFirstName; MurdererLastName = murdererLastName; MurderPlace = murderPlace; MurderWeapon = murderWeapon; - Explanation = explanation; + Explaination = explaination; } } \ No newline at end of file diff --git a/API_SQLuedo/Shared/Mapper/InquiryMapper.cs b/API_SQLuedo/Shared/Mapper/InquiryMapper.cs index 7ade449..49d752c 100644 --- a/API_SQLuedo/Shared/Mapper/InquiryMapper.cs +++ b/API_SQLuedo/Shared/Mapper/InquiryMapper.cs @@ -15,7 +15,7 @@ public static class InquiryMapper public static Inquiry FromEntityToModel(this InquiryEntity InqEntity) { return new Inquiry(InqEntity.Id, InqEntity.Title, InqEntity.Description, InqEntity.IsUser, - InqEntity.Database.OwnerId, InqEntity.InquiryTable.OwnerId); + InqEntity.Database.OwnerId, InqEntity.Solution.OwnerId); } @@ -39,6 +39,6 @@ public static class InquiryMapper public static InquiryDTO FromEntityToDTO(this InquiryEntity InqEntity) { return new InquiryDTO(InqEntity.Id, InqEntity.Title, InqEntity.Description, InqEntity.IsUser, - InqEntity.Database.OwnerId, InqEntity.InquiryTable.OwnerId); + InqEntity.Database.OwnerId, InqEntity.Solution.OwnerId); } } \ No newline at end of file diff --git a/API_SQLuedo/Shared/Mapper/SolutionMapper.cs b/API_SQLuedo/Shared/Mapper/SolutionMapper.cs index 4d99120..fa924e0 100644 --- a/API_SQLuedo/Shared/Mapper/SolutionMapper.cs +++ b/API_SQLuedo/Shared/Mapper/SolutionMapper.cs @@ -15,7 +15,7 @@ public static class SolutionMapper public static Solution FromEntityToModel(this SolutionEntity entity) { return new Solution(entity.OwnerId, entity.MurdererFirstName, entity.MurdererLastName, entity.MurderPlace, - entity.MurderWeapon, entity.Explanation); + entity.MurderWeapon, entity.Explaination); } public static SolutionDTO FromModelToDTO(this Solution model) @@ -27,7 +27,7 @@ public static class SolutionMapper public static SolutionDTO FromEntityToDTO(this SolutionEntity entity) { return new SolutionDTO(entity.OwnerId, entity.MurdererFirstName, entity.MurdererLastName, entity.MurderPlace, - entity.MurderWeapon, entity.Explanation); + entity.MurderWeapon, entity.Explaination); } public static SolutionEntity FromModelToEntity(this Solution model) diff --git a/API_SQLuedo/TestEF/EntitiesTests/TestInquiryEntity.cs b/API_SQLuedo/TestEF/EntitiesTests/TestInquiryEntity.cs new file mode 100644 index 0000000..e43afc2 --- /dev/null +++ b/API_SQLuedo/TestEF/EntitiesTests/TestInquiryEntity.cs @@ -0,0 +1,61 @@ +using Entities; + +namespace TestEF; + +public class TestInquiryEntity +{ + private const int _id = 42; + private const string _title = "Title"; + private const string _description = "_description"; + private const bool _isUser = true; + private static SolutionEntity _solution = new SolutionEntity(); + private static InquiryTableEntity _inquiryTable = new InquiryTableEntity(); + + [Fact] + public void TestDefaultConstructor() + { + InquiryEntity inquiry = new InquiryEntity(); + Assert.Equal(0, inquiry.Id); + Assert.Null(inquiry.Title); + Assert.Null(inquiry.Description); + Assert.Null(inquiry.Solution); + Assert.Null(inquiry.Database); + Assert.False(inquiry.IsUser); + } + + [Fact] + public void TestConstructorWithOnlyId() + { + InquiryEntity inquiry = new InquiryEntity(_id); + Assert.Equal(_id, inquiry.Id); + Assert.Null(inquiry.Title); + Assert.Null(inquiry.Description); + Assert.Null(inquiry.Solution); + Assert.Null(inquiry.Database); + Assert.False(inquiry.IsUser); + } + + [Fact] + public void TestConstructorWithoutId() + { + InquiryEntity inquiry = new InquiryEntity(_title,_description,_isUser,_inquiryTable,_solution); + Assert.Equal(0, inquiry.Id); + Assert.Equal(_title,inquiry.Title); + Assert.Equal(_description,inquiry.Description); + Assert.Equal(_solution,inquiry.Solution); + Assert.Equal(_inquiryTable,inquiry.Database); + Assert.True(inquiry.IsUser); + } + + [Fact] + public void TestConstructorWithAllAttributes() + { + InquiryEntity inquiry = new InquiryEntity(_id,_title,_description,_isUser,_inquiryTable,_solution); + Assert.Equal(_id, inquiry.Id); + Assert.Equal(_title,inquiry.Title); + Assert.Equal(_description,inquiry.Description); + Assert.Equal(_solution,inquiry.Solution); + Assert.Equal(_inquiryTable,inquiry.Database); + Assert.True(inquiry.IsUser); + } +} \ No newline at end of file diff --git a/API_SQLuedo/TestEF/EntitiesTests/TestInquiryTableEntity.cs b/API_SQLuedo/TestEF/EntitiesTests/TestInquiryTableEntity.cs new file mode 100644 index 0000000..7751046 --- /dev/null +++ b/API_SQLuedo/TestEF/EntitiesTests/TestInquiryTableEntity.cs @@ -0,0 +1,52 @@ +using Entities; + +namespace TestEF; + +public class TestInquiryTableEntity +{ + private const int _inquiryId = 42; + private static InquiryEntity _inquiry = new InquiryEntity(); + private const string _databaseName = "Database"; + private const string _connectionInfo = "Connection"; + + [Fact] + public void TestDefaultConstructor() + { + InquiryTableEntity tableEntity = new InquiryTableEntity(); + Assert.Equal(0,tableEntity.OwnerId); + Assert.Null(tableEntity.Owner); + Assert.Null(tableEntity.DatabaseName); + Assert.Null(tableEntity.ConnectionInfo); + } + + [Fact] + public void TestConstructorWithOnlyId() + { + InquiryTableEntity tableEntity = new InquiryTableEntity(_inquiryId); + Assert.Equal(_inquiryId,tableEntity.OwnerId); + Assert.Null(tableEntity.Owner); + Assert.Null(tableEntity.DatabaseName); + Assert.Null(tableEntity.ConnectionInfo); + } + + + [Fact] + public void TestConstructorWithoutId() + { + InquiryTableEntity tableEntity = new InquiryTableEntity(_inquiry,_databaseName,_connectionInfo); + Assert.Equal(0,tableEntity.OwnerId); + Assert.Equal(_inquiry,tableEntity.Owner); + Assert.Equal(_databaseName,tableEntity.DatabaseName); + Assert.Equal(_connectionInfo,tableEntity.ConnectionInfo); + } + + [Fact] + public void TestConstructorWithoutNavigationProperty() + { + InquiryTableEntity tableEntity = new InquiryTableEntity(_inquiryId,_databaseName,_connectionInfo); + Assert.Equal(_inquiryId,tableEntity.OwnerId); + Assert.Null(tableEntity.Owner); + Assert.Equal(_databaseName,tableEntity.DatabaseName); + Assert.Equal(_connectionInfo,tableEntity.ConnectionInfo); + } +} \ No newline at end of file diff --git a/API_SQLuedo/TestEF/EntitiesTests/TestLessonEntity.cs b/API_SQLuedo/TestEF/EntitiesTests/TestLessonEntity.cs new file mode 100644 index 0000000..1364b0c --- /dev/null +++ b/API_SQLuedo/TestEF/EntitiesTests/TestLessonEntity.cs @@ -0,0 +1,52 @@ +using Entities; +using Microsoft.VisualBasic; + +namespace TestEF; + +public class TestLessonEntity +{ + private const int _id = 42; + private const string _title = "Title"; + private const string _lastPublisher = "Last Publisher"; + private static DateOnly _lastEdit = new DateOnly(); + + [Fact] + public void TestDefaultConstructor() + { + LessonEntity lesson = new LessonEntity(); + Assert.Equal(0, lesson.Id); + Assert.Null(lesson.Title); + Assert.Null(lesson.LastPublisher); + Assert.Null(lesson.LastEdit); + } + + [Fact] + public void TestConstructorWithOnlyId() + { + LessonEntity lesson = new LessonEntity(_id); + Assert.Equal(_id, lesson.Id); + Assert.Null(lesson.Title); + Assert.Null(lesson.LastPublisher); + Assert.Null(lesson.LastEdit); + } + + [Fact] + public void TestConstructorWithoutId() + { + LessonEntity lesson = new LessonEntity(_title,_lastPublisher,_lastEdit); + Assert.Equal(0, lesson.Id); + Assert.Equal(_title,lesson.Title); + Assert.Equal(_lastPublisher,lesson.LastPublisher); + Assert.Equal(_lastEdit,lesson.LastEdit); + } + + [Fact] + public void TestConstructorWithAllAttributes() + { + LessonEntity lesson = new LessonEntity(_id,_title,_lastPublisher,_lastEdit); + Assert.Equal(_id, lesson.Id); + Assert.Equal(_title,lesson.Title); + Assert.Equal(_lastPublisher,lesson.LastPublisher); + Assert.Equal(_lastEdit,lesson.LastEdit); + } +} \ No newline at end of file diff --git a/API_SQLuedo/TestEF/EntitiesTests/TestNotepadEntity.cs b/API_SQLuedo/TestEF/EntitiesTests/TestNotepadEntity.cs new file mode 100644 index 0000000..4d3ba35 --- /dev/null +++ b/API_SQLuedo/TestEF/EntitiesTests/TestNotepadEntity.cs @@ -0,0 +1,49 @@ +using Entities; + +namespace TestEF; + +public class TestNotepadEntity +{ + private const int _id = 42; + private const int _userId = 42; + private static UserEntity _userEntity = new UserEntity(); + private const int _inquiryId = 42; + private static InquiryEntity _inquiryEntity = new InquiryEntity(); + private const string _notes = "This is some notes example"; + + [Fact] + public void TestDefaultConstructor() + { + NotepadEntity notepad = new NotepadEntity(); + Assert.Equal(0,notepad.Id); + Assert.Equal(0,notepad.UserId); + Assert.Null(notepad.User); + Assert.Equal(0,notepad.InquiryId); + Assert.Null(notepad.Inquiry); + Assert.Null(notepad.Notes); + } + + [Fact] + public void TestConstructorWithoutId() + { + NotepadEntity notepad = new NotepadEntity(_userId,_userEntity,_inquiryId,_inquiryEntity,_notes); + Assert.Equal(0,notepad.Id); + Assert.Equal(_userId,notepad.UserId); + Assert.Equal(_userEntity,notepad.User); + Assert.Equal(_inquiryId,notepad.InquiryId); + Assert.Equal(_inquiryEntity,notepad.Inquiry); + Assert.Equal(_notes,notepad.Notes); + } + + [Fact] + public void TestConstructorWithAllAttributes() + { + NotepadEntity notepad = new NotepadEntity(_id,_userId,_userEntity,_inquiryId,_inquiryEntity,_notes); + Assert.Equal(_id,notepad.Id); + Assert.Equal(_userId,notepad.UserId); + Assert.Equal(_userEntity,notepad.User); + Assert.Equal(_inquiryId,notepad.InquiryId); + Assert.Equal(_inquiryEntity,notepad.Inquiry); + Assert.Equal(_notes,notepad.Notes); + } +} \ No newline at end of file diff --git a/API_SQLuedo/TestEF/EntitiesTests/TestParagraphEntity.cs b/API_SQLuedo/TestEF/EntitiesTests/TestParagraphEntity.cs new file mode 100644 index 0000000..ed1130b --- /dev/null +++ b/API_SQLuedo/TestEF/EntitiesTests/TestParagraphEntity.cs @@ -0,0 +1,61 @@ +using Entities; + +namespace TestEF; + +public class TestParagraphEntity +{ + private const int _id = 42; + private const string _title = "Title"; + private const string _info = "Info"; + private const string _content = "Content"; + private const string _query = "Query"; + private const string _comment = "Comment"; + + [Fact] + public void TestDefaultConstructor() + { + ParagraphEntity paragraph = new ParagraphEntity(); + Assert.Equal(0, paragraph.Id); + Assert.Null(paragraph.Title); + Assert.Null(paragraph.Info); + Assert.Null(paragraph.Content); + Assert.Null(paragraph.Query); + Assert.Null(paragraph.Comment); + } + + [Fact] + public void TestConstructorWithOnlyId() + { + ParagraphEntity paragraph = new ParagraphEntity(_id); + Assert.Equal(_id, paragraph.Id); + Assert.Null(paragraph.Title); + Assert.Null(paragraph.Info); + Assert.Null(paragraph.Content); + Assert.Null(paragraph.Query); + Assert.Null(paragraph.Comment); + } + + [Fact] + public void TestConstructorWithoutId() + { + ParagraphEntity paragraph = new ParagraphEntity(_title,_content,_info,_query,_comment); + Assert.Equal(0, paragraph.Id); + Assert.Equal(_title,paragraph.Title); + Assert.Equal(_info,paragraph.Info); + Assert.Equal(_content,paragraph.Content); + Assert.Equal(_query,paragraph.Query); + Assert.Equal(_comment,paragraph.Comment); + } + + [Fact] + public void TestConstructorWithAllAttributes() + { + ParagraphEntity paragraph = new ParagraphEntity(_id,_title,_content,_info,_query,_comment); + Assert.Equal(_id, paragraph.Id); + Assert.Equal(_title,paragraph.Title); + Assert.Equal(_info,paragraph.Info); + Assert.Equal(_content,paragraph.Content); + Assert.Equal(_query,paragraph.Query); + Assert.Equal(_comment,paragraph.Comment); + } +} \ No newline at end of file diff --git a/API_SQLuedo/TestEF/EntitiesTests/TestSolutionEntity.cs b/API_SQLuedo/TestEF/EntitiesTests/TestSolutionEntity.cs new file mode 100644 index 0000000..5e31571 --- /dev/null +++ b/API_SQLuedo/TestEF/EntitiesTests/TestSolutionEntity.cs @@ -0,0 +1,66 @@ +using Entities; + +namespace TestEF; + +public class TestSolutionEntity +{ + private const string _murdererFirstName = "John"; + private const string _murdererLastName = "Doe"; + private const string _murderPlace = "WhiteHouse"; + private const string _murderWeapon = "Nuclear Bomb"; + private const string _explaination = "This is an explaination"; + private const int _inquiryId = 42; + private static InquiryEntity _inquiry = new InquiryEntity(); + + [Fact] + public void TestDefaultConstructor() + { + SolutionEntity solution = new SolutionEntity(); + Assert.Equal(0,solution.OwnerId); + Assert.Null(solution.Owner); + Assert.Null(solution.MurdererFirstName); + Assert.Null(solution.MurdererLastName); + Assert.Null(solution.MurderPlace); + Assert.Null(solution.MurderWeapon); + Assert.Null(solution.Explaination); + } + + [Fact] + public void TestConstructorWithOnlyId() + { + SolutionEntity solution = new SolutionEntity(_inquiryId); + Assert.Equal(_inquiryId,solution.OwnerId); + Assert.Null(solution.Owner); + Assert.Null(solution.MurdererFirstName); + Assert.Null(solution.MurdererLastName); + Assert.Null(solution.MurderPlace); + Assert.Null(solution.MurderWeapon); + Assert.Null(solution.Explaination); + } + + [Fact] + public void TestConstructorWithoutOwnerId() + { + SolutionEntity solution = new SolutionEntity(_inquiry,_murdererFirstName,_murdererLastName,_murderPlace,_murderWeapon, _explaination); + Assert.Equal(0,solution.OwnerId); + Assert.Equal(_inquiry,solution.Owner); + Assert.Equal(_murdererFirstName,solution.MurdererFirstName); + Assert.Equal(_murdererLastName,solution.MurdererLastName); + Assert.Equal(_murderPlace,solution.MurderPlace); + Assert.Equal(_murderWeapon,solution.MurderWeapon); + Assert.Equal(_explaination, solution.Explaination); + } + + [Fact] + public void TestConstructorWithAllAttributes() + { + SolutionEntity solution = new SolutionEntity(_inquiryId,_inquiry,_murdererFirstName,_murdererLastName,_murderPlace,_murderWeapon, _explaination); + Assert.Equal(_inquiryId,solution.OwnerId); + Assert.Equal(_inquiry,solution.Owner); + Assert.Equal(_murdererFirstName,solution.MurdererFirstName); + Assert.Equal(_murdererLastName,solution.MurdererLastName); + Assert.Equal(_murderPlace,solution.MurderPlace); + Assert.Equal(_murderWeapon,solution.MurderWeapon); + Assert.Equal(_explaination, solution.Explaination); + } +} \ No newline at end of file diff --git a/API_SQLuedo/TestEF/EntitiesTests/TestSuccessEntity.cs b/API_SQLuedo/TestEF/EntitiesTests/TestSuccessEntity.cs new file mode 100644 index 0000000..3f7b833 --- /dev/null +++ b/API_SQLuedo/TestEF/EntitiesTests/TestSuccessEntity.cs @@ -0,0 +1,59 @@ +using Entities; +using ModelToEntities.Business; + +namespace TestEF; + +public class TestSuccessEntity +{ + private const int _userId = 42; + private const int _inquiryId = 7; + private const bool _isFinished = true; + + [Fact] + public void TestDefaultConstructor() + { + SuccessEntity success = new SuccessEntity(); + Assert.Equal(0,success.UserId); + Assert.Null(success.User); + Assert.Equal(0,success.InquiryId); + Assert.Null(success.Inquiry); + Assert.False(success.IsFinished); + } + + [Fact] + public void TestConstructorWithIds() + { + SuccessEntity success = new SuccessEntity(_userId, _inquiryId, _isFinished); + Assert.Equal(_userId,success.UserId); + Assert.Null(success.User); + Assert.Equal(_inquiryId,success.InquiryId); + Assert.Null(success.Inquiry); + Assert.True(success.IsFinished); + } + + [Fact] + public void TestConstructorWithNavigationProperties() + { + UserEntity user = new UserEntity(); + InquiryEntity inquiry = new InquiryEntity(); + SuccessEntity success = new SuccessEntity(user, inquiry, _isFinished); + Assert.Equal(0,success.UserId); + Assert.NotNull(success.User); + Assert.Equal(0,success.InquiryId); + Assert.NotNull(success.Inquiry); + Assert.True(success.IsFinished); + } + + [Fact] + public void TestConstructorWithAllAttributes() + { + UserEntity user = new UserEntity(); + InquiryEntity inquiry = new InquiryEntity(); + SuccessEntity success = new SuccessEntity(_userId, user, _inquiryId, inquiry, _isFinished); + Assert.Equal(_userId,success.UserId); + Assert.NotNull(success.User); + Assert.Equal(_inquiryId,success.InquiryId); + Assert.NotNull(success.Inquiry); + Assert.True(success.IsFinished); + } +} \ No newline at end of file diff --git a/API_SQLuedo/TestEF/EntitiesTests/TestUserEntity.cs b/API_SQLuedo/TestEF/EntitiesTests/TestUserEntity.cs new file mode 100644 index 0000000..8f99022 --- /dev/null +++ b/API_SQLuedo/TestEF/EntitiesTests/TestUserEntity.cs @@ -0,0 +1,56 @@ +using Entities; + +namespace TestEF +{ + public class TestUserEntity + { + private const string _username = "username"; + private const string _email = "example@email.com"; + private const string _password = "password"; + private const bool _isAdmin = true; + private const int _id = 42; + [Fact] + public void TestDefaultConstructor() + { + UserEntity user = new UserEntity(); + Assert.Equal(0,user.Id); + Assert.Null(user.Username); + Assert.Null(user.Email); + Assert.Null(user.Password); + Assert.False(user.IsAdmin); + } + + [Fact] + public void TestConstructorWithOnlyId() + { + UserEntity user = new UserEntity(_id); + Assert.Equal(_id,user.Id); + Assert.Null(user.Username); + Assert.Null(user.Email); + Assert.Null(user.Password); + Assert.False(user.IsAdmin); + } + + [Fact] + public void TestConstructorWithoutId() + { + UserEntity user = new UserEntity(_username, _password, _email, _isAdmin); + Assert.Equal(0,user.Id); + Assert.Equal(_username, user.Username); + Assert.Equal(_email, user.Email); + Assert.Equal(_password, user.Password); + Assert.True(user.IsAdmin); + } + + [Fact] + public void TestConstructorWithoutAllAttributes() + { + UserEntity user = new UserEntity(_id, _username, _password, _email, _isAdmin); + Assert.Equal(_id,user.Id); + Assert.Equal(_username, user.Username); + Assert.Equal(_email, user.Email); + Assert.Equal(_password, user.Password); + Assert.True(user.IsAdmin); + } + } +} \ No newline at end of file diff --git a/API_SQLuedo/TestEF/TestEF.csproj b/API_SQLuedo/TestEF/TestEF.csproj index f6cf968..cfa2d2e 100644 --- a/API_SQLuedo/TestEF/TestEF.csproj +++ b/API_SQLuedo/TestEF/TestEF.csproj @@ -34,4 +34,11 @@ + + + + + + + diff --git a/API_SQLuedo/TestEF/UnitTest1.cs b/API_SQLuedo/TestEF/UnitTest1.cs deleted file mode 100644 index 68b7186..0000000 --- a/API_SQLuedo/TestEF/UnitTest1.cs +++ /dev/null @@ -1,11 +0,0 @@ -namespace TestEF -{ - public class UnitTest1 - { - [Fact] - public void Test1() - { - - } - } -} \ No newline at end of file From 68ba34b03853b454930b131bcd7c5ce8c4d5321a Mon Sep 17 00:00:00 2001 From: "Johnny.Ratton" Date: Fri, 15 Mar 2024 14:20:14 +0100 Subject: [PATCH 02/21] =?UTF-8?q?R=C3=A9solution=20des=20probl=C3=A8mes=20?= =?UTF-8?q?d'injection=20de=20services=20dans=20les=20diff=C3=A9rents=20co?= =?UTF-8?q?ntroller?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- API_SQLuedo/API/Controllers/InquiriesController.cs | 8 ++++---- API_SQLuedo/API/Controllers/LessonsController.cs | 4 ++-- API_SQLuedo/API/Controllers/ParagraphsController.cs | 4 ++-- API_SQLuedo/API/Controllers/SuccessesController.cs | 4 ++-- API_SQLuedo/API/Controllers/UserController.cs | 2 +- API_SQLuedo/StubbedContextLib/StubbedContext.cs | 12 ++++++------ 6 files changed, 17 insertions(+), 17 deletions(-) diff --git a/API_SQLuedo/API/Controllers/InquiriesController.cs b/API_SQLuedo/API/Controllers/InquiriesController.cs index fd5b2d3..e2c7713 100644 --- a/API_SQLuedo/API/Controllers/InquiriesController.cs +++ b/API_SQLuedo/API/Controllers/InquiriesController.cs @@ -13,10 +13,10 @@ namespace API.Controllers [ApiController] public class InquiriesController : Controller { - private IInquiryDataService _inquiryDataService; + private IInquiryService _inquiryDataService; private readonly ILogger _logger; - public InquiriesController(IInquiryDataService inquiryDataService, ILogger logger) + public InquiriesController(IInquiryService inquiryDataService, ILogger logger) { _inquiryDataService = inquiryDataService; _logger = logger; @@ -37,7 +37,7 @@ namespace API.Controllers return Ok(_inquiryDataService.GetInquiries(page, number, orderCriteria)); } - [HttpGet("inquiry/{id}")] + [HttpGet("inquiry/{id:int}")] [ProducesResponseType(typeof(InquiryDTO), 200)] [ProducesResponseType(typeof(string), 404)] public IActionResult GetInquiryById(int id) @@ -54,7 +54,7 @@ namespace API.Controllers } } - [HttpGet("inquiry/{title}")] + [HttpGet("inquiry/{title:alpha}")] [ProducesResponseType(typeof(InquiryDTO), 200)] [ProducesResponseType(typeof(string), 404)] public IActionResult GetInquiryByTitle(string title) diff --git a/API_SQLuedo/API/Controllers/LessonsController.cs b/API_SQLuedo/API/Controllers/LessonsController.cs index 2401a6c..d2f1b2a 100644 --- a/API_SQLuedo/API/Controllers/LessonsController.cs +++ b/API_SQLuedo/API/Controllers/LessonsController.cs @@ -13,11 +13,11 @@ namespace API.Controllers [ApiController] public class LessonsController : Controller { - private ILessonDataService _lessonDataService; + private ILessonService _lessonDataService; private readonly ILogger _logger; - public LessonsController(ILessonDataService lessonDataService, ILogger logger) + public LessonsController(ILessonService lessonDataService, ILogger logger) { _lessonDataService = lessonDataService; _logger = logger; diff --git a/API_SQLuedo/API/Controllers/ParagraphsController.cs b/API_SQLuedo/API/Controllers/ParagraphsController.cs index 8cde6f1..816960a 100644 --- a/API_SQLuedo/API/Controllers/ParagraphsController.cs +++ b/API_SQLuedo/API/Controllers/ParagraphsController.cs @@ -13,11 +13,11 @@ namespace API.Controllers [ApiController] public class ParagraphsController : Controller { - private IParagraphDataService _paragraphDataService; + private IParagraphService _paragraphDataService; private readonly ILogger _logger; - public ParagraphsController(IParagraphDataService paragraphDataService, ILogger logger) + public ParagraphsController(IParagraphService paragraphDataService, ILogger logger) { _paragraphDataService = paragraphDataService; _logger = logger; diff --git a/API_SQLuedo/API/Controllers/SuccessesController.cs b/API_SQLuedo/API/Controllers/SuccessesController.cs index a335f0f..a1bda95 100644 --- a/API_SQLuedo/API/Controllers/SuccessesController.cs +++ b/API_SQLuedo/API/Controllers/SuccessesController.cs @@ -13,11 +13,11 @@ namespace API.Controllers [ApiController] public class SuccessesController : Controller { - private ISuccessDataService _successDataService; + private ISuccessService _successDataService; private readonly ILogger _logger; - public SuccessesController(ISuccessDataService successDataService, ILogger logger) + public SuccessesController(ISuccessService successDataService, ILogger logger) { _successDataService = successDataService; _logger = logger; diff --git a/API_SQLuedo/API/Controllers/UserController.cs b/API_SQLuedo/API/Controllers/UserController.cs index a6114f5..207690f 100644 --- a/API_SQLuedo/API/Controllers/UserController.cs +++ b/API_SQLuedo/API/Controllers/UserController.cs @@ -11,7 +11,7 @@ namespace API.Controllers [Authorize] [ApiVersion("1.0")] [ApiController] - public class UsersController(ILogger logger, IUserDataService userService) : ControllerBase + public class UsersController(ILogger logger, IUserService userService) : ControllerBase { [HttpGet("users/{page}/{number}")] [ProducesResponseType(typeof(UserDTO), 200)] diff --git a/API_SQLuedo/StubbedContextLib/StubbedContext.cs b/API_SQLuedo/StubbedContextLib/StubbedContext.cs index e87f12f..a926438 100644 --- a/API_SQLuedo/StubbedContextLib/StubbedContext.cs +++ b/API_SQLuedo/StubbedContextLib/StubbedContext.cs @@ -47,12 +47,7 @@ public class StubbedContext : UserDbContext prf: KeyDerivationPrf.HMACSHA256, iterationCount: 100000, numBytesRequested: 256 / 8)), "Victor.GABORIT@etu.uca.fr", true)); - - modelBuilder.Entity().HasData( - new InquiryEntity(1, "L'enquête de la carotte", "La description de l'inquiry1", true, 1, 1), - new InquiryEntity(2, "L'enquête sur les orang outan", "The new description", false, 2, 2), - new InquiryEntity(3, "L'enquête sur les parapluies", "Il pleuvait", false, 3, 3)); - + modelBuilder.Entity().HasData( new InquiryTableEntity(1, "Inquiry1", "Server=localhost;Database=Inquiry1;Trusted_Connection=True;MultipleActiveResultSets=true"), @@ -65,5 +60,10 @@ public class StubbedContext : UserDbContext new SolutionEntity(1, "Maxime", "Sapountzis", "La cuisine", "Le couteau", "Parce que c'est Maxime"), new SolutionEntity(2, "Johnny", "Ratton", "La cuisine", "Le couteau", "Parce que il est ra****"), new SolutionEntity(3, "Erwan", "Menager", "La salle de bain", "L'arachide", "Parce que c'est Erwan")); + + modelBuilder.Entity().HasData( + new InquiryEntity(1, "L'enquête de la carotte", "La description de l'inquiry1", true, 1, 1), + new InquiryEntity(2, "L'enquête sur les orang outan", "The new description", false, 2, 2), + new InquiryEntity(3, "L'enquête sur les parapluies", "Il pleuvait", false, 3, 3)); } } \ No newline at end of file From 8577624439f71f58e41bd5535e56cfff7052a2b7 Mon Sep 17 00:00:00 2001 From: "Johnny.Ratton" Date: Fri, 15 Mar 2024 14:35:57 +0100 Subject: [PATCH 03/21] =?UTF-8?q?R=C3=A9glage=20des=20probl=C3=A8mes=20de?= =?UTF-8?q?=20conflits=20de=20routes?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- API_SQLuedo/API/Controllers/LessonsController.cs | 4 ++-- API_SQLuedo/API/Controllers/ParagraphsController.cs | 4 ++-- API_SQLuedo/API/Controllers/SuccessesController.cs | 4 ++-- API_SQLuedo/API/Controllers/UserController.cs | 4 ++-- 4 files changed, 8 insertions(+), 8 deletions(-) diff --git a/API_SQLuedo/API/Controllers/LessonsController.cs b/API_SQLuedo/API/Controllers/LessonsController.cs index d2f1b2a..eaaec1b 100644 --- a/API_SQLuedo/API/Controllers/LessonsController.cs +++ b/API_SQLuedo/API/Controllers/LessonsController.cs @@ -38,7 +38,7 @@ namespace API.Controllers return Ok(_lessonDataService.GetLessons(page, number, orderCriteria)); } - [HttpGet("lesson/{id}")] + [HttpGet("lesson/{id:int}")] [ProducesResponseType(typeof(LessonDTO), 200)] [ProducesResponseType(typeof(string), 404)] public IActionResult GetLessonById(int id) @@ -55,7 +55,7 @@ namespace API.Controllers } } - [HttpGet("lesson/{title}")] + [HttpGet("lesson/{title:alpha}")] [ProducesResponseType(typeof(LessonDTO), 200)] [ProducesResponseType(typeof(string), 404)] public IActionResult GetLessonByTitle(string title) diff --git a/API_SQLuedo/API/Controllers/ParagraphsController.cs b/API_SQLuedo/API/Controllers/ParagraphsController.cs index 816960a..9196e21 100644 --- a/API_SQLuedo/API/Controllers/ParagraphsController.cs +++ b/API_SQLuedo/API/Controllers/ParagraphsController.cs @@ -38,7 +38,7 @@ namespace API.Controllers return Ok(_paragraphDataService.GetParagraphs(page, number, orderCriteria)); } - [HttpGet("paragraph/{id}")] + [HttpGet("paragraph/{id:int}")] [ProducesResponseType(typeof(ParagraphDTO), 200)] [ProducesResponseType(typeof(string), 404)] public IActionResult GetParagraphById(int id) @@ -54,7 +54,7 @@ namespace API.Controllers } } - [HttpGet("paragraph/{title}")] + [HttpGet("paragraph/{title:alpha}")] [ProducesResponseType(typeof(ParagraphDTO), 200)] [ProducesResponseType(typeof(string), 404)] public IActionResult GetParagraphByTitle(string title) diff --git a/API_SQLuedo/API/Controllers/SuccessesController.cs b/API_SQLuedo/API/Controllers/SuccessesController.cs index a1bda95..09df742 100644 --- a/API_SQLuedo/API/Controllers/SuccessesController.cs +++ b/API_SQLuedo/API/Controllers/SuccessesController.cs @@ -38,7 +38,7 @@ namespace API.Controllers return Ok(_successDataService.GetSuccesses(page, number, orderCriteria)); } - [HttpGet("success/{id}")] + [HttpGet("success/user/{id:int}")] [ProducesResponseType(typeof(SuccessDTO), 200)] [ProducesResponseType(typeof(string), 404)] public IActionResult GetSuccessByUserId(int userId) @@ -54,7 +54,7 @@ namespace API.Controllers } } - [HttpGet("success/{inquiryId}")] + [HttpGet("success/inquiry/{inquiryId:int}")] [ProducesResponseType(typeof(SuccessDTO), 200)] [ProducesResponseType(typeof(string), 404)] public IActionResult GetSuccessByInquiryId(int inquiryId) diff --git a/API_SQLuedo/API/Controllers/UserController.cs b/API_SQLuedo/API/Controllers/UserController.cs index 207690f..32dbe70 100644 --- a/API_SQLuedo/API/Controllers/UserController.cs +++ b/API_SQLuedo/API/Controllers/UserController.cs @@ -29,7 +29,7 @@ namespace API.Controllers return Ok(users); } - [HttpGet("user/{id}")] + [HttpGet("user/{id:int}")] [ProducesResponseType(typeof(UserDTO), 200)] [ProducesResponseType(typeof(string), 404)] public IActionResult GetUserById(int id) @@ -46,7 +46,7 @@ namespace API.Controllers } } - [HttpGet("user/{username}")] + [HttpGet("user/{username:alpha}")] [ProducesResponseType(typeof(UserDTO), 200)] [ProducesResponseType(typeof(string), 404)] public IActionResult GetUserByUsername(string username) From ea4a593bc489e1a5d2d728f621cc7a68fb9e33d6 Mon Sep 17 00:00:00 2001 From: "Johnny.Ratton" Date: Fri, 15 Mar 2024 15:13:32 +0100 Subject: [PATCH 04/21] =?UTF-8?q?Suppression=20des=20propri=C3=A9t=C3=A9s?= =?UTF-8?q?=20de=20navigation=20dans=20InquiryEntity=20qui=20provoquaient?= =?UTF-8?q?=20une=20NullPointerException=20et=20qui=20=C3=A9taient=20inuti?= =?UTF-8?q?les?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../API/Controllers/InquiriesController.cs | 6 +- .../API/Service/InquiryDataServiceAPI.cs | 4 +- .../Service/InquiryDataService.cs | 8 +- API_SQLuedo/Dto/InquiryDTO.cs | 11 +- API_SQLuedo/EntityFramework/InquiryEntity.cs | 31 +--- API_SQLuedo/Model/Inquiry.cs | 6 +- API_SQLuedo/Shared/IInquiryDataService.cs | 2 +- API_SQLuedo/Shared/IInquiryService.cs | 6 +- API_SQLuedo/Shared/InquiryDataService.cs | 6 +- API_SQLuedo/Shared/Mapper/InquiryMapper.cs | 17 +- .../StubbedContextLib/StubbedContext.cs | 6 +- API_SQLuedo/TestConsoleAPI/Program.cs | 166 +++++++++--------- API_SQLuedo/TestConsoleEf/Program.cs | 6 +- 13 files changed, 117 insertions(+), 158 deletions(-) diff --git a/API_SQLuedo/API/Controllers/InquiriesController.cs b/API_SQLuedo/API/Controllers/InquiriesController.cs index e2c7713..045d7a7 100644 --- a/API_SQLuedo/API/Controllers/InquiriesController.cs +++ b/API_SQLuedo/API/Controllers/InquiriesController.cs @@ -95,12 +95,12 @@ namespace API.Controllers [ProducesResponseType(typeof(string), 400)] public IActionResult CreateInquiry([FromBody] InquiryDTO dto) { - if (dto.Title == null || dto.Description == null || dto.Database == null || dto.InquiryTable == null) + if (dto.Title == null || dto.Description == null) { return BadRequest(); } - _logger.LogInformation("[INFORMATION] Une enquête a été créé : title - {title}, description - {description}, isUser - {isUser}, database - {database}, inquiryTable - {inquiryTable}", dto.Title, dto.Description, dto.IsUser, dto.Database, dto.InquiryTable); - return Created(nameof(GetInquiries), _inquiryDataService.CreateInquiry(dto.Title, dto.Description, dto.IsUser, dto.Database, dto.InquiryTable)); + _logger.LogInformation("[INFORMATION] Une enquête a été créé : title - {title}, description - {description}, isUser - {isUser}", dto.Title, dto.Description, dto.IsUser); + return Created(nameof(GetInquiries), _inquiryDataService.CreateInquiry(dto.Title, dto.Description, dto.IsUser)); } [HttpPut("inquiry/{id}")] diff --git a/API_SQLuedo/API/Service/InquiryDataServiceAPI.cs b/API_SQLuedo/API/Service/InquiryDataServiceAPI.cs index 6248d48..7f7ebf4 100644 --- a/API_SQLuedo/API/Service/InquiryDataServiceAPI.cs +++ b/API_SQLuedo/API/Service/InquiryDataServiceAPI.cs @@ -6,9 +6,9 @@ namespace API.Service; public class InquiryDataServiceApi(IInquiryService inquiryService) : IInquiryService { - public InquiryEntity CreateInquiry(string title, string description, bool isUser, int tableId, int solutionId) + public InquiryEntity CreateInquiry(string title, string description, bool isUser) { - return inquiryService.CreateInquiry(title, description, isUser, tableId, solutionId); + return inquiryService.CreateInquiry(title, description, isUser); } public bool DeleteInquiry(int id) diff --git a/API_SQLuedo/DbDataManager/Service/InquiryDataService.cs b/API_SQLuedo/DbDataManager/Service/InquiryDataService.cs index 922e3c9..677fb57 100644 --- a/API_SQLuedo/DbDataManager/Service/InquiryDataService.cs +++ b/API_SQLuedo/DbDataManager/Service/InquiryDataService.cs @@ -68,23 +68,19 @@ public class InquiryDataService : IInquiryService updatingInquiry.Title = inquiry.Title; updatingInquiry.Description = inquiry.Description; updatingInquiry.IsUser = inquiry.IsUser; - updatingInquiry.IdInquiryTable = inquiry.IdInquiryTable; - updatingInquiry.IdDatabase = inquiry.IdDatabase; // Permet d'indiquer en Db que l'entité a été modifiée. DbContext.Entry(updatingInquiry).State = EntityState.Modified; DbContext.SaveChangesAsync(); return updatingInquiry; } - public InquiryEntity CreateInquiry(string title, string description, bool isUser, int tableId, int solutionId) + public InquiryEntity CreateInquiry(string title, string description, bool isUser) { var newInquiryEntity = new InquiryEntity() { Title = title, Description = description, - IsUser = isUser, - IdDatabase = tableId, - IdInquiryTable = solutionId, + IsUser = isUser }; DbContext.Inquiries.Add(newInquiryEntity); DbContext.SaveChangesAsync(); diff --git a/API_SQLuedo/Dto/InquiryDTO.cs b/API_SQLuedo/Dto/InquiryDTO.cs index 258aaab..5a436ed 100644 --- a/API_SQLuedo/Dto/InquiryDTO.cs +++ b/API_SQLuedo/Dto/InquiryDTO.cs @@ -10,25 +10,18 @@ public class InquiryDTO public bool IsUser { get; set; } - public int Database { get; set; } - public int InquiryTable { get; set; } - - public InquiryDTO(int id, string title, string description, bool isUser, int database, int inquiryTable) + public InquiryDTO(int id, string title, string description, bool isUser) { Id = id; Title = title; Description = description; IsUser = isUser; - Database = database; - InquiryTable = inquiryTable; } - public InquiryDTO(string title, string description, bool isUser, int database, int inquiryTable) + public InquiryDTO(string title, string description, bool isUser) { Title = title; Description = description; IsUser = isUser; - Database = database; - InquiryTable = inquiryTable; } } \ No newline at end of file diff --git a/API_SQLuedo/EntityFramework/InquiryEntity.cs b/API_SQLuedo/EntityFramework/InquiryEntity.cs index 3c43ee4..1647f0f 100644 --- a/API_SQLuedo/EntityFramework/InquiryEntity.cs +++ b/API_SQLuedo/EntityFramework/InquiryEntity.cs @@ -1,15 +1,15 @@ -namespace Entities; +using System.ComponentModel.DataAnnotations; +using System.ComponentModel.DataAnnotations.Schema; + +namespace Entities; public class InquiryEntity { + [Key] public int Id { get; } public string Title { get; set; } public string Description { get; set; } public bool IsUser { get; set; } - public int IdDatabase { get; set; } - public InquiryTableEntity Database { get; set; } - public int IdInquiryTable { get; set; } - public SolutionEntity InquiryTable { get; set; } public InquiryEntity() { @@ -20,36 +20,19 @@ public class InquiryEntity Id = id; } - public InquiryEntity(int id, string title, string description, bool isUser, InquiryTableEntity database, - SolutionEntity inquiryTable) - { - Id = id; - Title = title; - Description = description; - IsUser = isUser; - Database = database; - InquiryTable = inquiryTable; - } - - public InquiryEntity(string title, string description, bool isUser, InquiryTableEntity database, - SolutionEntity inquiryTable) + public InquiryEntity(string title, string description, bool isUser) { Id = 0; Title = title; Description = description; IsUser = isUser; - Database = database; - InquiryTable = inquiryTable; } - public InquiryEntity(int id, string title, string description, bool isUser, int database, - int inquiryTable) + public InquiryEntity(int id, string title, string description, bool isUser) { Id = id; Title = title; Description = description; IsUser = isUser; - IdDatabase = database; - IdInquiryTable = inquiryTable; } } \ No newline at end of file diff --git a/API_SQLuedo/Model/Inquiry.cs b/API_SQLuedo/Model/Inquiry.cs index 8aab55a..d2a805f 100644 --- a/API_SQLuedo/Model/Inquiry.cs +++ b/API_SQLuedo/Model/Inquiry.cs @@ -6,18 +6,14 @@ public class Inquiry public string Title { get; set; } public string Description { get; set; } public bool IsUser { get; set; } - public int Database { get; set; } - public int InquiryTable { get; set; } public Inquiry() { } - public Inquiry(int id, string title, string description, bool isUser, int database, int inquiryTable) + public Inquiry(int id, string title, string description, bool isUser) { Id = id; Title = title; Description = description; IsUser = isUser; - Database = database; - InquiryTable = inquiryTable; } } \ No newline at end of file diff --git a/API_SQLuedo/Shared/IInquiryDataService.cs b/API_SQLuedo/Shared/IInquiryDataService.cs index 682e4c6..79085f6 100644 --- a/API_SQLuedo/Shared/IInquiryDataService.cs +++ b/API_SQLuedo/Shared/IInquiryDataService.cs @@ -10,5 +10,5 @@ public interface IInquiryDataService : IInquiryService public InquiryDTO GetInquiryByTitle(string title); public bool DeleteInquiry(int id); public InquiryDTO UpdateInquiry(int id, InquiryDTO inquiry); - public InquiryDTO CreateInquiry(string title, string description, bool isUser, int tableId, int solutionId); + public InquiryDTO CreateInquiry(string title, string description, bool isUser); } \ No newline at end of file diff --git a/API_SQLuedo/Shared/IInquiryService.cs b/API_SQLuedo/Shared/IInquiryService.cs index 5b5f28b..68d27b8 100644 --- a/API_SQLuedo/Shared/IInquiryService.cs +++ b/API_SQLuedo/Shared/IInquiryService.cs @@ -7,7 +7,7 @@ public interface IInquiryService public IEnumerable GetInquiries(int page, int number, InquiryOrderCriteria orderCriteria); public TInquiry GetInquiryById(int id); public TInquiry GetInquiryByTitle(string title); - public bool DeleteInquiry(int id); - public TInquiry UpdateInquiry(int id, TInquiry inquiry); - public TInquiry CreateInquiry(string title, string description, bool isUser, int tableId, int solutionId); + public bool DeleteInquiry(int id); + public TInquiry UpdateInquiry(int id, TInquiry inquiry); + public TInquiry CreateInquiry(string title, string description, bool isUser); } \ No newline at end of file diff --git a/API_SQLuedo/Shared/InquiryDataService.cs b/API_SQLuedo/Shared/InquiryDataService.cs index 012eb4e..d603784 100644 --- a/API_SQLuedo/Shared/InquiryDataService.cs +++ b/API_SQLuedo/Shared/InquiryDataService.cs @@ -60,9 +60,9 @@ public class InquiryDataService : IInquiryDataService return inquiryEntity.FromEntityToDTO(); } - public InquiryDTO CreateInquiry(string title, string description, bool isUser, int tableId, int solutionId) + public InquiryDTO CreateInquiry(string title, string description, bool isUser) { - var newInquiryEntity = new InquiryDTO(title, description, isUser, tableId, solutionId); + var newInquiryEntity = new InquiryDTO(title, description, isUser); DbContext.Inquiries.Add(newInquiryEntity.FromDTOToEntity()); DbContext.SaveChangesAsync(); return newInquiryEntity; @@ -90,8 +90,6 @@ public class InquiryDataService : IInquiryDataService updatingInquiry.Title = inquiry.Title; updatingInquiry.Description = inquiry.Description; updatingInquiry.IsUser = inquiry.IsUser; - updatingInquiry.IdDatabase = inquiry.Database; - updatingInquiry.IdInquiryTable = inquiry.InquiryTable; DbContext.SaveChangesAsync(); return updatingInquiry.FromEntityToDTO(); } diff --git a/API_SQLuedo/Shared/Mapper/InquiryMapper.cs b/API_SQLuedo/Shared/Mapper/InquiryMapper.cs index ace6105..cd18bc9 100644 --- a/API_SQLuedo/Shared/Mapper/InquiryMapper.cs +++ b/API_SQLuedo/Shared/Mapper/InquiryMapper.cs @@ -8,37 +8,32 @@ public static class InquiryMapper { public static Inquiry FromDTOToModel(this InquiryDTO InqDto) { - return new Inquiry(InqDto.Id, InqDto.Title, InqDto.Description, InqDto.IsUser, InqDto.Database, - InqDto.InquiryTable); + return new Inquiry(InqDto.Id, InqDto.Title, InqDto.Description, InqDto.IsUser); } public static Inquiry FromEntityToModel(this InquiryEntity InqEntity) { - return new Inquiry(InqEntity.Id, InqEntity.Title, InqEntity.Description, InqEntity.IsUser, - InqEntity.Database.OwnerId, InqEntity.InquiryTable.OwnerId); + return new Inquiry(InqEntity.Id, InqEntity.Title, InqEntity.Description, InqEntity.IsUser); } public static InquiryEntity FromModelToEntity(this Inquiry Inq) { - return new InquiryEntity(Inq.Id, Inq.Title, Inq.Description, Inq.IsUser, new InquiryTableEntity(Inq.Database), - new SolutionEntity(Inq.InquiryTable)); + return new InquiryEntity(Inq.Id, Inq.Title, Inq.Description, Inq.IsUser); } public static InquiryEntity FromDTOToEntity(this InquiryDTO InqDto) { - return new InquiryEntity(InqDto.Id, InqDto.Title, InqDto.Description, InqDto.IsUser, - new InquiryTableEntity(InqDto.Database), new SolutionEntity(InqDto.InquiryTable)); + return new InquiryEntity(InqDto.Id, InqDto.Title, InqDto.Description, InqDto.IsUser); } public static InquiryDTO FromModelToDTO(this Inquiry Inq) { - return new InquiryDTO(Inq.Id, Inq.Title, Inq.Description, Inq.IsUser, Inq.Database, Inq.InquiryTable); + return new InquiryDTO(Inq.Id, Inq.Title, Inq.Description, Inq.IsUser); } public static InquiryDTO FromEntityToDTO(this InquiryEntity InqEntity) { - return new InquiryDTO(InqEntity.Id, InqEntity.Title, InqEntity.Description, InqEntity.IsUser, - InqEntity.Database.OwnerId, InqEntity.InquiryTable.OwnerId); + return new InquiryDTO(InqEntity.Id, InqEntity.Title, InqEntity.Description, InqEntity.IsUser); } } \ No newline at end of file diff --git a/API_SQLuedo/StubbedContextLib/StubbedContext.cs b/API_SQLuedo/StubbedContextLib/StubbedContext.cs index a926438..925eb10 100644 --- a/API_SQLuedo/StubbedContextLib/StubbedContext.cs +++ b/API_SQLuedo/StubbedContextLib/StubbedContext.cs @@ -62,8 +62,8 @@ public class StubbedContext : UserDbContext new SolutionEntity(3, "Erwan", "Menager", "La salle de bain", "L'arachide", "Parce que c'est Erwan")); modelBuilder.Entity().HasData( - new InquiryEntity(1, "L'enquête de la carotte", "La description de l'inquiry1", true, 1, 1), - new InquiryEntity(2, "L'enquête sur les orang outan", "The new description", false, 2, 2), - new InquiryEntity(3, "L'enquête sur les parapluies", "Il pleuvait", false, 3, 3)); + new InquiryEntity(1, "L'enquête de la carotte", "La description de l'inquiry1", true), + new InquiryEntity(2, "L'enquête sur les orang outan", "The new description", false), + new InquiryEntity(3, "L'enquête sur les parapluies", "Il pleuvait", false)); } } \ No newline at end of file diff --git a/API_SQLuedo/TestConsoleAPI/Program.cs b/API_SQLuedo/TestConsoleAPI/Program.cs index 91c03b5..19866e9 100644 --- a/API_SQLuedo/TestConsoleAPI/Program.cs +++ b/API_SQLuedo/TestConsoleAPI/Program.cs @@ -49,8 +49,8 @@ using (var context = new UserDbContext(options)) { Console.WriteLine(item); } - } - + } + void PrintParagraphs() { Console.WriteLine(); @@ -59,8 +59,8 @@ using (var context = new UserDbContext(options)) { Console.WriteLine(item); } - } - + } + void PrintLessons() { Console.WriteLine(); @@ -69,8 +69,8 @@ using (var context = new UserDbContext(options)) { Console.WriteLine(item); } - } - + } + void PrintSuccesses() { Console.WriteLine(); @@ -106,8 +106,8 @@ using (var context = new UserDbContext(options)) return; } Console.WriteLine(inquiry.Value as InquiryDTO); - } - + } + void SearchParagraphByTitle() { Console.WriteLine("\nVeuillez saisir le titre du paragraphe recherché : "); @@ -120,8 +120,8 @@ using (var context = new UserDbContext(options)) } Console.WriteLine(paragraph.Value as ParagraphDTO); - } - + } + void SearchLessonByTitle() { Console.WriteLine("\nVeuillez saisir le titre de la leçon recherchée : "); @@ -134,8 +134,8 @@ using (var context = new UserDbContext(options)) } Console.WriteLine(lesson.Value as LessonDTO); - } - + } + void SearchSuccessByUserId() { Console.WriteLine("\nVeuillez saisir l'identifiant de l'utilisateur du succès recherché : "); @@ -175,8 +175,8 @@ using (var context = new UserDbContext(options)) return; } Console.WriteLine(inquiry.Value as InquiryDTO); - } - + } + void SearchParagraphById() { Console.WriteLine("\nVeuillez saisir l'identifiant du paragraphe recherché : "); @@ -189,8 +189,8 @@ using (var context = new UserDbContext(options)) } Console.WriteLine(paragraph.Value as ParagraphDTO); - } - + } + void SearchSuccessByInquiryId() { Console.WriteLine("\nVeuillez saisir l'identifiant de l'enquête du succès recherché : "); @@ -203,8 +203,8 @@ using (var context = new UserDbContext(options)) } Console.WriteLine(success.Value as SuccessDTO); - } - + } + void SearchLessonById() { Console.WriteLine("\nVeuillez saisir l'identifiant de la leçon recherchée : "); @@ -228,10 +228,10 @@ using (var context = new UserDbContext(options)) Console.WriteLine("Veuillez saisir un mot de passe :"); var mdp = Console.ReadLine(); var res = userController.CreateUser(new UserDTO(username, mdp, email, false)); - if (res.GetType() == typeof(CreatedResult)) + if (res.GetType() == typeof(CreatedResult)) { Console.WriteLine("\nUtilisateur créé avec succès"); - } + } else { Console.WriteLine("\nErreur lors de la création de l'utilisateur !"); @@ -251,7 +251,7 @@ using (var context = new UserDbContext(options)) var database = Convert.ToInt32(Console.ReadLine()); Console.WriteLine("Veuillez saisir l'id de la solution :"); var solution = Convert.ToInt32(Console.ReadLine()); - var res = inquiryController.CreateInquiry(new InquiryDTO(title, description, false, database, solution)); + var res = inquiryController.CreateInquiry(new InquiryDTO(title, description, false)); if (res.GetType() == typeof(CreatedResult)) { Console.WriteLine("\nEnquête créée avec succès"); @@ -260,8 +260,8 @@ using (var context = new UserDbContext(options)) { Console.WriteLine("\nErreur lors de la création de l'enquête !"); } - } - + } + void AddParagraph() { Console.WriteLine("Veuillez saisir le titre :"); @@ -277,17 +277,17 @@ using (var context = new UserDbContext(options)) Console.WriteLine("Veuillez saisir l'id de la leçon :"); var lesson = Convert.ToInt32(Console.ReadLine()); var res = paragraphController.CreateParagraph(new ParagraphDTO(title, content, info, query, comment, lesson)); - if (res.GetType() == typeof(CreatedResult)) + if (res.GetType() == typeof(CreatedResult)) { Console.WriteLine("\nParagraphe créé avec succès"); - } + } else { Console.WriteLine("\nErreur lors de la création du paragraphe !"); } - } - + } + void AddLesson() { Console.WriteLine("Veuillez saisir le titre :"); @@ -295,17 +295,17 @@ using (var context = new UserDbContext(options)) Console.WriteLine("Veuillez saisir votre nom :"); var lastPublisher = Console.ReadLine(); var res = lessonController.CreateLesson(new LessonDTO(title, lastPublisher, DateOnly.FromDateTime(DateTime.Now))); - if (res.GetType() == typeof(CreatedResult)) + if (res.GetType() == typeof(CreatedResult)) { Console.WriteLine("\nLeçon créée avec succès"); - } + } else { Console.WriteLine("\nErreur lors de la création de la leçon !"); } - } - + } + void AddSuccess() { Console.WriteLine("Veuillez saisir l'identifiant de l'utilisateur lié au succès :"); @@ -315,10 +315,10 @@ using (var context = new UserDbContext(options)) Console.WriteLine("Veuillez indiquer si l'enquête a été complété (true/false) :"); var isFinished = Console.ReadLine(); var res = successController.CreateSuccess(new SuccessDTO(int.Parse(userId), int.Parse(inquiryId), bool.Parse(isFinished))); - if (res.GetType() == typeof(CreatedResult)) + if (res.GetType() == typeof(CreatedResult)) { Console.WriteLine("\nSuccès créé avec succès"); - } + } else { Console.WriteLine("\nErreur lors de la création du succès !"); @@ -331,10 +331,10 @@ using (var context = new UserDbContext(options)) Console.WriteLine("Quel est l'identifiant de l'utilisateur à mettre à jour ?"); var id = int.Parse(Console.ReadLine()); var res = (userController.GetUserById(id)); - if (res.GetType() == typeof(OkObjectResult)) + if (res.GetType() == typeof(OkObjectResult)) { var user = (res as OkObjectResult).Value as UserDTO; - if (user == null) + if (user == null) { Console.WriteLine("Erreur, un problème est survenu"); return; @@ -350,29 +350,29 @@ using (var context = new UserDbContext(options)) 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 + } + else { Console.WriteLine("Une erreur est survenue lors de la mise à jour !"); } - } - + } + void UpdateInquiry() { Console.WriteLine("Quel est l'identifiant de l'enquête à mettre à jour ?"); var id = int.Parse(Console.ReadLine()); var res = (inquiryController.GetInquiryById(id)); - if (res.GetType() == typeof(OkObjectResult)) + if (res.GetType() == typeof(OkObjectResult)) { var user = (res as OkObjectResult).Value as InquiryDTO; - if (user == null) + if (user == null) { Console.WriteLine("Erreur, un problème est survenu"); return; @@ -386,37 +386,37 @@ using (var context = new UserDbContext(options)) var description = Console.ReadLine(); Console.WriteLine("Veuillez indiquer si l'enquête est accessible aux visiteurs (0/1) :"); var isUser = Console.ReadLine(); - Console.WriteLine("Veuillez saisir un commentaire :"); + Console.WriteLine("Veuillez saisir un commentaire :"); var database = Convert.ToInt32(Console.ReadLine()); - Console.WriteLine("Veuillez saisir un commentaire :"); + Console.WriteLine("Veuillez saisir un commentaire :"); var inquiryTable = Convert.ToInt32(Console.ReadLine()); - var retour = inquiryController.UpdateInquiry(id, new InquiryDTO(id, title, description, bool.Parse(isUser), database, inquiryTable)); + var retour = inquiryController.UpdateInquiry(id, new InquiryDTO(id, title, description, bool.Parse(isUser))); 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 + } + else { Console.WriteLine("Une erreur est survenue lors de la mise à jour !"); } - } - + } + void UpdateParagraph() { Console.WriteLine("Quel est l'identifiant du paragraphe à mettre à jour ?"); var id = int.Parse(Console.ReadLine()); var res = (paragraphController.GetParagraphById(id)); - if (res.GetType() == typeof(OkObjectResult)) + if (res.GetType() == typeof(OkObjectResult)) { var paragraph = (res as OkObjectResult).Value as ParagraphDTO; - if (paragraph == null) + if (paragraph == null) { Console.WriteLine("Erreur, un problème est survenu"); return; @@ -434,35 +434,35 @@ using (var context = new UserDbContext(options)) var query = Console.ReadLine(); Console.WriteLine("Veuillez saisir un commentaire :"); var comment = Console.ReadLine(); - Console.WriteLine("Veuillez saisir l'id de la leçon :"); + Console.WriteLine("Veuillez saisir l'id de la leçon :"); var lesson = Convert.ToInt32(Console.ReadLine()); var retour = paragraphController.UpdateParagraph(id, new ParagraphDTO(id, title, content, info, query, comment, lesson)); 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 + } + else { Console.WriteLine("Une erreur est survenue lors de la mise à jour !"); } - } - + } + void UpdateLesson() { Console.WriteLine("Quel est l'identifiant de la leçon à mettre à jour ?"); var id = int.Parse(Console.ReadLine()); var res = (lessonController.GetLessonById(id)); - if (res.GetType() == typeof(OkObjectResult)) + if (res.GetType() == typeof(OkObjectResult)) { var lesson = (res as OkObjectResult).Value as LessonDTO; - if (lesson == null) + if (lesson == null) { Console.WriteLine("Erreur, un problème est survenu"); return; @@ -478,29 +478,29 @@ using (var context = new UserDbContext(options)) 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 + } + else { Console.WriteLine("Une erreur est survenue lors de la mise à jour !"); } - } - + } + void UpdateSuccess() { Console.WriteLine("Quel est l'identifiant de l'utilisateur lié au succès à mettre à jour ?"); var id = int.Parse(Console.ReadLine()); var res = (successController.GetSuccessByUserId(id)); - if (res.GetType() == typeof(OkObjectResult)) + if (res.GetType() == typeof(OkObjectResult)) { var lesson = (res as OkObjectResult).Value as SuccessDTO; - if (lesson == null) + if (lesson == null) { Console.WriteLine("Erreur, un problème est survenu"); return; @@ -518,14 +518,14 @@ using (var context = new UserDbContext(options)) 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 + } + else { Console.WriteLine("Une erreur est survenue lors de la mise à jour !"); } @@ -577,8 +577,8 @@ using (var context = new UserDbContext(options)) Console.WriteLine("Erreur lors de la suppression !"); } - } - + } + void DeleteLesson() { Console.WriteLine("Quel est l'identifiant de la leçon à supprimer ?"); @@ -593,8 +593,8 @@ using (var context = new UserDbContext(options)) Console.WriteLine("Erreur lors de la suppression !"); } - } - + } + void DeleteSuccess() { Console.WriteLine("Quel est l'identifiant de l'utilisateur lié au succès à supprimer ?"); @@ -640,8 +640,8 @@ using (var context = new UserDbContext(options)) Console.WriteLine("| 6 - Supprimer une enquête |"); Console.WriteLine("| q - Quitter |"); Console.WriteLine("|------------------------------------------------|"); - } - + } + void MenuParagraphs() { Console.WriteLine("|------------------------------------------------|"); @@ -655,8 +655,8 @@ using (var context = new UserDbContext(options)) Console.WriteLine("| 6 - Supprimer un paragraphe |"); Console.WriteLine("| q - Quitter |"); Console.WriteLine("|------------------------------------------------|"); - } - + } + void MenuLessons() { Console.WriteLine("|------------------------------------------------|"); @@ -670,8 +670,8 @@ using (var context = new UserDbContext(options)) Console.WriteLine("| 6 - Supprimer une leçon |"); Console.WriteLine("| q - Quitter |"); Console.WriteLine("|------------------------------------------------|"); - } - + } + void MenuSuccesses() { Console.WriteLine("|------------------------------------------------|"); @@ -695,7 +695,7 @@ using (var context = new UserDbContext(options)) Console.WriteLine("\nSaisie :"); var saisie = Console.ReadLine(); - while (saisie != "q") + while (saisie != "q") { switch (saisie) { @@ -772,8 +772,8 @@ using (var context = new UserDbContext(options)) else { var users = res as IEnumerable; - if (users == null) - { + if (users == null) + { Console.WriteLine("\nErreur, les ustilisateurs n'ont pas été trouvés !"); } else diff --git a/API_SQLuedo/TestConsoleEf/Program.cs b/API_SQLuedo/TestConsoleEf/Program.cs index c32e2fa..fb63a8f 100644 --- a/API_SQLuedo/TestConsoleEf/Program.cs +++ b/API_SQLuedo/TestConsoleEf/Program.cs @@ -164,7 +164,7 @@ using (var db = new StubbedContext(options)) Console.WriteLine(sol.MurdererFirstName); var inquirySolution = await inquiries.FirstOrDefaultAsync(i => i.Title == "L'enquête sur les orang outan"); - var i = inquirySolution.InquiryTable; + var i = inquirySolution.Id; foreach (var pptt in typeof(SolutionEntity).GetProperties() .Where(p => p.CanWrite && p.Name != nameof(SolutionEntity.Owner))) { @@ -176,9 +176,7 @@ using (var db = new StubbedContext(options)) var newInquiry = new InquiryEntity( "La nouvelle enquete", "La description de la nouvelle enquete", - true, - null, - null); + true); if (!inquiries.Any(inquiry => inquiry.Title == newInquiry.Title)) { inquiries.Add(newInquiry); From bc6f9dadb157d475d1f9b1c2f5e7ec768e6dbf30 Mon Sep 17 00:00:00 2001 From: clchieu Date: Fri, 15 Mar 2024 15:56:08 +0100 Subject: [PATCH 05/21] =?UTF-8?q?Suppression=20erreur=20de=20m=C3=A9thode?= =?UTF-8?q?=20d'extension?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- API_SQLuedo/EntityFramework/ParagraphEntity.cs | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/API_SQLuedo/EntityFramework/ParagraphEntity.cs b/API_SQLuedo/EntityFramework/ParagraphEntity.cs index 6785189..b7ab14e 100644 --- a/API_SQLuedo/EntityFramework/ParagraphEntity.cs +++ b/API_SQLuedo/EntityFramework/ParagraphEntity.cs @@ -37,10 +37,5 @@ public class ParagraphEntity : ContentLessonEntity Info = info; Query = query; Comment = comment; - } - - public object FromEntityToModel() - { - throw new NotImplementedException(); - } + } } \ No newline at end of file From 4367d53bb8f1ea93587bf01651cfe78baab1fdb9 Mon Sep 17 00:00:00 2001 From: clchieu Date: Fri, 15 Mar 2024 16:14:41 +0100 Subject: [PATCH 06/21] Ajout de tests pour un constructeur de solution --- .../EntitiesTests/TestSolutionEntity.cs | 64 +++++++++++++------ 1 file changed, 45 insertions(+), 19 deletions(-) diff --git a/API_SQLuedo/TestEF/EntitiesTests/TestSolutionEntity.cs b/API_SQLuedo/TestEF/EntitiesTests/TestSolutionEntity.cs index 5e31571..8808fd1 100644 --- a/API_SQLuedo/TestEF/EntitiesTests/TestSolutionEntity.cs +++ b/API_SQLuedo/TestEF/EntitiesTests/TestSolutionEntity.cs @@ -16,7 +16,7 @@ public class TestSolutionEntity public void TestDefaultConstructor() { SolutionEntity solution = new SolutionEntity(); - Assert.Equal(0,solution.OwnerId); + Assert.Equal(0, solution.OwnerId); Assert.Null(solution.Owner); Assert.Null(solution.MurdererFirstName); Assert.Null(solution.MurdererLastName); @@ -24,12 +24,12 @@ public class TestSolutionEntity Assert.Null(solution.MurderWeapon); Assert.Null(solution.Explaination); } - + [Fact] public void TestConstructorWithOnlyId() { SolutionEntity solution = new SolutionEntity(_inquiryId); - Assert.Equal(_inquiryId,solution.OwnerId); + Assert.Equal(_inquiryId, solution.OwnerId); Assert.Null(solution.Owner); Assert.Null(solution.MurdererFirstName); Assert.Null(solution.MurdererLastName); @@ -37,30 +37,56 @@ public class TestSolutionEntity Assert.Null(solution.MurderWeapon); Assert.Null(solution.Explaination); } - + [Fact] public void TestConstructorWithoutOwnerId() { - SolutionEntity solution = new SolutionEntity(_inquiry,_murdererFirstName,_murdererLastName,_murderPlace,_murderWeapon, _explaination); - Assert.Equal(0,solution.OwnerId); - Assert.Equal(_inquiry,solution.Owner); - Assert.Equal(_murdererFirstName,solution.MurdererFirstName); - Assert.Equal(_murdererLastName,solution.MurdererLastName); - Assert.Equal(_murderPlace,solution.MurderPlace); - Assert.Equal(_murderWeapon,solution.MurderWeapon); + SolutionEntity solution = new SolutionEntity(_inquiry, _murdererFirstName, _murdererLastName, _murderPlace, + _murderWeapon, _explaination); + Assert.Equal(0, solution.OwnerId); + Assert.Equal(_inquiry, solution.Owner); + Assert.Equal(_murdererFirstName, solution.MurdererFirstName); + Assert.Equal(_murdererLastName, solution.MurdererLastName); + Assert.Equal(_murderPlace, solution.MurderPlace); + Assert.Equal(_murderWeapon, solution.MurderWeapon); Assert.Equal(_explaination, solution.Explaination); } - + [Fact] public void TestConstructorWithAllAttributes() { - SolutionEntity solution = new SolutionEntity(_inquiryId,_inquiry,_murdererFirstName,_murdererLastName,_murderPlace,_murderWeapon, _explaination); - Assert.Equal(_inquiryId,solution.OwnerId); - Assert.Equal(_inquiry,solution.Owner); - Assert.Equal(_murdererFirstName,solution.MurdererFirstName); - Assert.Equal(_murdererLastName,solution.MurdererLastName); - Assert.Equal(_murderPlace,solution.MurderPlace); - Assert.Equal(_murderWeapon,solution.MurderWeapon); + SolutionEntity solution = new SolutionEntity(_inquiryId, _inquiry, _murdererFirstName, _murdererLastName, + _murderPlace, _murderWeapon, _explaination); + Assert.Equal(_inquiryId, solution.OwnerId); + Assert.Equal(_inquiry, solution.Owner); + Assert.Equal(_murdererFirstName, solution.MurdererFirstName); + Assert.Equal(_murdererLastName, solution.MurdererLastName); + Assert.Equal(_murderPlace, solution.MurderPlace); + Assert.Equal(_murderWeapon, solution.MurderWeapon); Assert.Equal(_explaination, solution.Explaination); } + + [Fact] + public void Constructor_ShouldSetProperties_WhenCalledWithSixParameters() + { + // Arrange + const int ownerId = 1; + const string murdererFirstName = "John"; + const string murdererLastName = "Doe"; + const string murderPlace = "WhiteHouse"; + const string murderWeapon = "Nuclear Bomb"; + const string explanation = "This is an explanation"; + + // Act + var solutionEntity = new SolutionEntity(ownerId, murdererFirstName, murdererLastName, murderPlace, murderWeapon, + explanation); + + // Assert + Assert.Equal(ownerId, solutionEntity.OwnerId); + Assert.Equal(murdererFirstName, solutionEntity.MurdererFirstName); + Assert.Equal(murdererLastName, solutionEntity.MurdererLastName); + Assert.Equal(murderPlace, solutionEntity.MurderPlace); + Assert.Equal(murderWeapon, solutionEntity.MurderWeapon); + Assert.Equal(explanation, solutionEntity.Explaination); + } } \ No newline at end of file From 1d374366269803890410a301abc997205c99fa87 Mon Sep 17 00:00:00 2001 From: clchieu Date: Fri, 15 Mar 2024 16:15:21 +0100 Subject: [PATCH 07/21] Ajout de tests pour la blacklist et gestion des erreurs dans le constructeur --- API_SQLuedo/Model/BlackList.cs | 3 ++ .../EntitiesTests/TestBlackListEntity.cs | 54 +++++++++++++++++++ 2 files changed, 57 insertions(+) create mode 100644 API_SQLuedo/TestEF/EntitiesTests/TestBlackListEntity.cs diff --git a/API_SQLuedo/Model/BlackList.cs b/API_SQLuedo/Model/BlackList.cs index 002b5ba..bce0cf0 100644 --- a/API_SQLuedo/Model/BlackList.cs +++ b/API_SQLuedo/Model/BlackList.cs @@ -7,6 +7,9 @@ public class BlackList public BlackList(string email, DateOnly expirationDate) { + if (email is null or "") + throw new ArgumentException("Email cannot be null or empty"); + ArgumentOutOfRangeException.ThrowIfLessThan(expirationDate, DateOnly.FromDateTime(DateTime.Now)); Email = email; ExpirationDate = expirationDate; } diff --git a/API_SQLuedo/TestEF/EntitiesTests/TestBlackListEntity.cs b/API_SQLuedo/TestEF/EntitiesTests/TestBlackListEntity.cs new file mode 100644 index 0000000..abc2ad6 --- /dev/null +++ b/API_SQLuedo/TestEF/EntitiesTests/TestBlackListEntity.cs @@ -0,0 +1,54 @@ +using Model; + +namespace TestEF.EntitiesTests; + +public class TestBlackListEntity +{ + [Fact] + public void Constructor_ShouldSetProperties_WhenCalledWithTwoParameters() + { + // Arrange + string email = "test@example.com"; + DateOnly expirationDate = DateOnly.FromDateTime(DateTime.Now.AddDays(10)); + + // Act + var blackList = new BlackList(email, expirationDate); + + // Assert + Assert.Equal(email, blackList.Email); + Assert.Equal(expirationDate, blackList.ExpirationDate); + } + + [Fact] + public void Constructor_ShouldThrowArgumentException_WhenEmailIsEmpty() + { + // Arrange + string email = string.Empty; + DateOnly expirationDate = DateOnly.FromDateTime(DateTime.Now.AddDays(10)); + + // Act & Assert + Assert.Throws(() => new BlackList(email, expirationDate)); + } + + [Fact] + public void Constructor_ShouldThrowArgumentException_WhenEmailIsNull() + { + // Arrange + string email = null; + DateOnly expirationDate = DateOnly.FromDateTime(DateTime.Now.AddDays(10)); + + // Act & Assert + Assert.Throws(() => new BlackList(email, expirationDate)); + } + + [Fact] + public void Constructor_ShouldThrowArgumentOutOfRangeException_WhenExpirationDateIsInThePast() + { + // Arrange + string email = "test@example.com"; + DateOnly expirationDate = DateOnly.FromDateTime(DateTime.Now.AddDays(-1)); + + // Act & Assert + Assert.Throws(() => new BlackList(email, expirationDate)); + } +} \ No newline at end of file From d8e041736f0bcd9f9c43141906bc5ef22414fdfb Mon Sep 17 00:00:00 2001 From: clchieu Date: Fri, 15 Mar 2024 16:22:02 +0100 Subject: [PATCH 08/21] Ajout de tests pour le ContentLessonEntity --- .../ConcreteContentLessonEntity.cs | 21 +++++++ .../EntitiesTests/TestContentLessonEntity.cs | 55 +++++++++++++++++++ 2 files changed, 76 insertions(+) create mode 100644 API_SQLuedo/TestEF/EntitiesTests/ConcreteContentLessonEntity.cs create mode 100644 API_SQLuedo/TestEF/EntitiesTests/TestContentLessonEntity.cs diff --git a/API_SQLuedo/TestEF/EntitiesTests/ConcreteContentLessonEntity.cs b/API_SQLuedo/TestEF/EntitiesTests/ConcreteContentLessonEntity.cs new file mode 100644 index 0000000..15789eb --- /dev/null +++ b/API_SQLuedo/TestEF/EntitiesTests/ConcreteContentLessonEntity.cs @@ -0,0 +1,21 @@ +using Entities; + +namespace TestEF.EntitiesTests; + +public class ConcreteContentLessonEntity : ContentLessonEntity +{ + public ConcreteContentLessonEntity(int id, string contentContent, string contentTitle) + : base(id, contentContent, contentTitle) + { + } + + public ConcreteContentLessonEntity(int id, int lessonId, string contentContent, string contentTitle) + : base(id, lessonId, contentContent, contentTitle) + { + } + + public ConcreteContentLessonEntity(string contentContent, string contentTitle) + : base(contentContent, contentTitle) + { + } +} \ No newline at end of file diff --git a/API_SQLuedo/TestEF/EntitiesTests/TestContentLessonEntity.cs b/API_SQLuedo/TestEF/EntitiesTests/TestContentLessonEntity.cs new file mode 100644 index 0000000..6d2bd7e --- /dev/null +++ b/API_SQLuedo/TestEF/EntitiesTests/TestContentLessonEntity.cs @@ -0,0 +1,55 @@ +namespace TestEF.EntitiesTests; + +public class TestContentLessonEntity +{ + [Fact] + public void Constructor_ShouldSetProperties_WhenCalledWithTwoParameters() + { + // Arrange + const string contentContent = "Content"; + const string contentTitle = "Title"; + + // Act + var concreteContentLessonEntity = new ConcreteContentLessonEntity(contentContent, contentTitle); + + // Assert + Assert.Equal(contentContent, concreteContentLessonEntity.ContentContent); + Assert.Equal(contentTitle, concreteContentLessonEntity.ContentTitle); + } + + [Fact] + public void Constructor_ShouldSetProperties_WhenCalledWithThreeParameters() + { + // Arrange + const int id = 1; + const string contentContent = "Content"; + const string contentTitle = "Title"; + + // Act + var concreteContentLessonEntity = new ConcreteContentLessonEntity(id, contentContent, contentTitle); + + // Assert + Assert.Equal(id, concreteContentLessonEntity.Id); + Assert.Equal(contentContent, concreteContentLessonEntity.ContentContent); + Assert.Equal(contentTitle, concreteContentLessonEntity.ContentTitle); + } + + [Fact] + public void Constructor_ShouldSetProperties_WhenCalledWithFourParameters() + { + // Arrange + const int id = 1; + const int lessonId = 2; + const string contentContent = "Content"; + const string contentTitle = "Title"; + + // Act + var concreteContentLessonEntity = new ConcreteContentLessonEntity(id, lessonId, contentContent, contentTitle); + + // Assert + Assert.Equal(id, concreteContentLessonEntity.Id); + Assert.Equal(lessonId, concreteContentLessonEntity.LessonId); + Assert.Equal(contentContent, concreteContentLessonEntity.ContentContent); + Assert.Equal(contentTitle, concreteContentLessonEntity.ContentTitle); + } +} \ No newline at end of file From 1107d035cb12af00951cb07bae7843156e82b5a8 Mon Sep 17 00:00:00 2001 From: clchieu Date: Fri, 15 Mar 2024 16:43:25 +0100 Subject: [PATCH 09/21] Modification du service de inquiry --- .../API/Controllers/InquiriesController.cs | 2 +- API_SQLuedo/API/Program.cs | 4 +- .../API/Service/InquiryDataServiceAPI.cs | 28 ++--- API_SQLuedo/Shared/InquiryDataService.cs | 101 ------------------ API_SQLuedo/TestConsoleAPI/Program.cs | 9 +- 5 files changed, 25 insertions(+), 119 deletions(-) delete mode 100644 API_SQLuedo/Shared/InquiryDataService.cs diff --git a/API_SQLuedo/API/Controllers/InquiriesController.cs b/API_SQLuedo/API/Controllers/InquiriesController.cs index 045d7a7..25977ab 100644 --- a/API_SQLuedo/API/Controllers/InquiriesController.cs +++ b/API_SQLuedo/API/Controllers/InquiriesController.cs @@ -13,7 +13,7 @@ namespace API.Controllers [ApiController] public class InquiriesController : Controller { - private IInquiryService _inquiryDataService; + private readonly IInquiryService _inquiryDataService; private readonly ILogger _logger; public InquiriesController(IInquiryService inquiryDataService, ILogger logger) diff --git a/API_SQLuedo/API/Program.cs b/API_SQLuedo/API/Program.cs index 338e26c..716256e 100644 --- a/API_SQLuedo/API/Program.cs +++ b/API_SQLuedo/API/Program.cs @@ -24,8 +24,8 @@ builder.Services.AddSwaggerGen(); builder.Services.AddScoped, DbDataManager.Service.UserDataService>(); builder.Services.AddScoped, Shared.UserDataService>(); -builder.Services.AddScoped, DbDataManager.Service.InquiryDataService>(); -builder.Services.AddScoped, Shared.InquiryDataService>(); +builder.Services.AddScoped, InquiryDataService>(); +builder.Services.AddScoped, InquiryDataServiceApi>(); builder.Services.AddScoped, DbDataManager.Service.ParagraphDataService>(); builder.Services.AddScoped, Shared.ParagraphDataService>(); diff --git a/API_SQLuedo/API/Service/InquiryDataServiceAPI.cs b/API_SQLuedo/API/Service/InquiryDataServiceAPI.cs index 7f7ebf4..eb69a91 100644 --- a/API_SQLuedo/API/Service/InquiryDataServiceAPI.cs +++ b/API_SQLuedo/API/Service/InquiryDataServiceAPI.cs @@ -1,14 +1,21 @@ -using Entities; +using Dto; +using Entities; using Model.OrderCriteria; using Shared; +using Shared.Mapper; namespace API.Service; -public class InquiryDataServiceApi(IInquiryService inquiryService) : IInquiryService +public class InquiryDataServiceApi(IInquiryService inquiryService) : IInquiryService { - public InquiryEntity CreateInquiry(string title, string description, bool isUser) + public InquiryDTO UpdateInquiry(int id, InquiryDTO inquiry) { - return inquiryService.CreateInquiry(title, description, isUser); + return inquiryService.UpdateInquiry(id, inquiry.FromDTOToEntity()).FromEntityToDTO(); + } + + public InquiryDTO CreateInquiry(string title, string description, bool isUser) + { + return inquiryService.CreateInquiry(title, description, isUser).FromEntityToDTO(); } public bool DeleteInquiry(int id) @@ -16,18 +23,13 @@ public class InquiryDataServiceApi(IInquiryService inquiryService return inquiryService.DeleteInquiry(id); } - public IEnumerable GetInquiries(int page, int number, InquiryOrderCriteria orderCriteria) + public IEnumerable GetInquiries(int page, int number, InquiryOrderCriteria orderCriteria) { var inquiries = inquiryService.GetInquiries(page, number, orderCriteria); - return inquiries.Select(i => i).ToList(); + return inquiries.Select(i => i.FromEntityToDTO()).ToList(); } - public InquiryEntity GetInquiryById(int id) => inquiryService.GetInquiryById(id); + public InquiryDTO GetInquiryById(int id) => inquiryService.GetInquiryById(id).FromEntityToDTO(); - public InquiryEntity GetInquiryByTitle(string title) => inquiryService.GetInquiryByTitle(title); - - public InquiryEntity UpdateInquiry(int id, InquiryEntity inquiry) - { - return inquiryService.UpdateInquiry(id, inquiry); - } + public InquiryDTO GetInquiryByTitle(string title) => inquiryService.GetInquiryByTitle(title).FromEntityToDTO(); } \ No newline at end of file diff --git a/API_SQLuedo/Shared/InquiryDataService.cs b/API_SQLuedo/Shared/InquiryDataService.cs deleted file mode 100644 index 691e24a..0000000 --- a/API_SQLuedo/Shared/InquiryDataService.cs +++ /dev/null @@ -1,101 +0,0 @@ -using Entities; -using Microsoft.EntityFrameworkCore; -using Dto; -using Model.OrderCriteria; -using DbContextLib; -using Shared.Mapper; - -namespace Shared; - -public class InquiryDataService : IInquiryDataService -{ - private UserDbContext DbContext { get; set; } - - public InquiryDataService(UserDbContext context) - { - DbContext = context; - context.Database.EnsureCreated(); - } - - public IEnumerable GetInquiries(int page, int number, InquiryOrderCriteria orderCriteria) - { - IQueryable query = DbContext.Inquiries.Skip((page - 1) * number).Take(number); - switch (orderCriteria) - { - case InquiryOrderCriteria.None: - break; - case InquiryOrderCriteria.ByTitle: - query = query.OrderBy(s => s.Title); - break; - case InquiryOrderCriteria.ByDescription: - query = query.OrderBy(s => s.Description); - break; - case InquiryOrderCriteria.ByIsUser: - query = query.OrderBy(s => s.IsUser); - break; - default: - break; - } - - var inquiries = query.ToList(); - return inquiries.Select(s => s.FromEntityToDTO()); - } - - public InquiryDTO GetInquiryById(int id) - { - var inquiryEntity = DbContext.Inquiries.FirstOrDefault(i => i.Id == id); - if (inquiryEntity == null) - { - throw new ArgumentException("Impossible de trouver l'enquête", nameof(id)); - } - - return inquiryEntity.FromEntityToDTO(); - } - - public InquiryDTO GetInquiryByTitle(string title) - { - var inquiryEntity = DbContext.Inquiries.FirstOrDefault(i => i.Title == title); - if (inquiryEntity == null) - { - throw new ArgumentException("Impossible de trouver l'enquête", nameof(title)); - } - - return inquiryEntity.FromEntityToDTO(); - } - - public InquiryDTO CreateInquiry(string title, string description, bool isUser) - { - var newInquiryEntity = new InquiryDTO(title, description, isUser); - DbContext.Inquiries.Add(newInquiryEntity.FromDTOToEntity()); - DbContext.SaveChangesAsync(); - return newInquiryEntity; - } - - public bool DeleteInquiry(int id) - { - var inquiryEntity = DbContext.Inquiries.FirstOrDefault(u => u.Id == id); - if (inquiryEntity == null) - { - return false; - } - - DbContext.Inquiries.Remove(inquiryEntity); - DbContext.SaveChangesAsync(); - return true; - } - - public InquiryDTO UpdateInquiry(int id, InquiryDTO inquiry) - { - var updatingInquiry = DbContext.Inquiries.FirstOrDefault(u => u.Id == id); - if (updatingInquiry == null) - { - throw new ArgumentException("Impossible de trouver l'enquête", nameof(id)); - } - - updatingInquiry.Title = inquiry.Title; - updatingInquiry.Description = inquiry.Description; - updatingInquiry.IsUser = inquiry.IsUser; - DbContext.SaveChangesAsync(); - return updatingInquiry.FromEntityToDTO(); - } -} \ No newline at end of file diff --git a/API_SQLuedo/TestConsoleAPI/Program.cs b/API_SQLuedo/TestConsoleAPI/Program.cs index 19866e9..07e5a52 100644 --- a/API_SQLuedo/TestConsoleAPI/Program.cs +++ b/API_SQLuedo/TestConsoleAPI/Program.cs @@ -1,14 +1,19 @@ // See https://aka.ms/new-console-template for more information using API.Controllers; +using API.Service; using DbContextLib; +using DbDataManager.Service; using Dto; using Microsoft.AspNetCore.Mvc; using Microsoft.Data.Sqlite; using Microsoft.EntityFrameworkCore; using Microsoft.Extensions.Logging; using Model.OrderCriteria; -using Shared; +using LessonDataService = Shared.LessonDataService; +using ParagraphDataService = Shared.ParagraphDataService; +using SuccessDataService = Shared.SuccessDataService; +using UserDataService = Shared.UserDataService; var connection = new SqliteConnection("DataSource=:memory:"); connection.Open(); @@ -26,7 +31,7 @@ ILogger successLogger = factory.CreateLogger Date: Fri, 15 Mar 2024 16:55:29 +0100 Subject: [PATCH 10/21] Modification du nom de la racine du projet --- API_SQLuedo/DbDataManager/DbDataManager.csproj | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/API_SQLuedo/DbDataManager/DbDataManager.csproj b/API_SQLuedo/DbDataManager/DbDataManager.csproj index 42ff6a0..54b34de 100644 --- a/API_SQLuedo/DbDataManager/DbDataManager.csproj +++ b/API_SQLuedo/DbDataManager/DbDataManager.csproj @@ -4,7 +4,7 @@ net8.0 enable enable - ModelToEntities + DbDataManager From fcd258a2df845e57665aa08959b4ad24b6060183 Mon Sep 17 00:00:00 2001 From: clchieu Date: Fri, 15 Mar 2024 16:56:24 +0100 Subject: [PATCH 11/21] Modification des services de lesson --- API_SQLuedo/API/Program.cs | 14 +-- .../API/Service/LessonDataServiceAPI.cs | 25 +++-- .../Service/InquiryDataService.cs | 53 +++++---- .../Service/LessonDataService.cs | 52 ++++++--- API_SQLuedo/Shared/LessonDataService.cs | 103 ------------------ 5 files changed, 88 insertions(+), 159 deletions(-) delete mode 100644 API_SQLuedo/Shared/LessonDataService.cs diff --git a/API_SQLuedo/API/Program.cs b/API_SQLuedo/API/Program.cs index 716256e..060b520 100644 --- a/API_SQLuedo/API/Program.cs +++ b/API_SQLuedo/API/Program.cs @@ -33,8 +33,8 @@ builder.Services.AddScoped, Shared.ParagraphData builder.Services.AddScoped, DbDataManager.Service.SuccessDataService>(); builder.Services.AddScoped, Shared.SuccessDataService>(); -builder.Services.AddScoped, DbDataManager.Service.LessonDataService>(); -builder.Services.AddScoped, Shared.LessonDataService>(); +builder.Services.AddScoped, LessonDataService>(); +builder.Services.AddScoped, LessonDataServiceApi>(); builder.Services.AddDbContext(); builder.Services.AddDbContext(options => options.UseInMemoryDatabase("appDb")); @@ -72,11 +72,11 @@ builder.Services.AddSwaggerGen(option => { Reference = new OpenApiReference { - Type=ReferenceType.SecurityScheme, - Id="Bearer" + Type = ReferenceType.SecurityScheme, + Id = "Bearer" } }, - new string[]{} + new string[] { } } }); }); @@ -86,7 +86,7 @@ var app = builder.Build(); // Configure the HTTP request pipeline. if (app.Environment.IsDevelopment()) { - app.UseSwagger(); + app.UseSwagger(); app.UseSwaggerUI(); } @@ -98,4 +98,4 @@ app.MapControllers(); app.MapIdentityApi(); -app.Run(); +app.Run(); \ No newline at end of file diff --git a/API_SQLuedo/API/Service/LessonDataServiceAPI.cs b/API_SQLuedo/API/Service/LessonDataServiceAPI.cs index 7b26363..391d081 100644 --- a/API_SQLuedo/API/Service/LessonDataServiceAPI.cs +++ b/API_SQLuedo/API/Service/LessonDataServiceAPI.cs @@ -1,26 +1,31 @@ -using Entities; +using Dto; +using Entities; using Model.OrderCriteria; using Shared; +using Shared.Mapper; namespace API.Service; -public class LessonDataServiceApi(ILessonService lessonService) : ILessonService +public class LessonDataServiceApi(ILessonService lessonService) : ILessonService { - public IEnumerable GetLessons(int page, int number, LessonOrderCriteria orderCriteria) + public IEnumerable GetLessons(int page, int number, LessonOrderCriteria orderCriteria) { var lessonsEntities = lessonService.GetLessons(page, number, orderCriteria); - return lessonsEntities.Select(e => e).ToList(); + return lessonsEntities.Select(e => e.FromEntityToDTO()).ToList(); } - public LessonEntity GetLessonById(int id) => lessonService.GetLessonById(id); + public LessonDTO GetLessonById(int id) => lessonService.GetLessonById(id).FromEntityToDTO(); - public LessonEntity GetLessonByTitle(string title) => lessonService.GetLessonByTitle(title); + public LessonDTO GetLessonByTitle(string title) => lessonService.GetLessonByTitle(title).FromEntityToDTO(); public bool DeleteLesson(int id) => lessonService.DeleteLesson(id); - public LessonEntity UpdateLesson(int id, LessonEntity lesson) => - lessonService.UpdateLesson(id, lesson); + public LessonDTO UpdateLesson(int id, LessonDTO lesson) => + lessonService.UpdateLesson(id, lesson.FromDTOToEntity()).FromEntityToDTO(); - public LessonEntity CreateLesson(string title, string lastPublisher, DateOnly? lastEdit) => - lessonService.CreateLesson(title, lastPublisher, lastEdit); + public LessonDTO UpdateLesson(int id, LessonEntity lesson) => + lessonService.UpdateLesson(id, lesson).FromEntityToDTO(); + + public LessonDTO CreateLesson(string title, string lastPublisher, DateOnly? lastEdit) => + lessonService.CreateLesson(title, lastPublisher, lastEdit).FromEntityToDTO(); } \ No newline at end of file diff --git a/API_SQLuedo/DbDataManager/Service/InquiryDataService.cs b/API_SQLuedo/DbDataManager/Service/InquiryDataService.cs index 2f9b580..df9c2ce 100644 --- a/API_SQLuedo/DbDataManager/Service/InquiryDataService.cs +++ b/API_SQLuedo/DbDataManager/Service/InquiryDataService.cs @@ -8,7 +8,7 @@ namespace DbDataManager.Service; public class InquiryDataService : IInquiryService { - private UserDbContext DbContext { get; } + private UserDbContext DbContext { get; set; } public InquiryDataService(UserDbContext context) { @@ -16,9 +16,33 @@ public class InquiryDataService : IInquiryService context.Database.EnsureCreated(); } + public IEnumerable GetInquiries(int page, int number, InquiryOrderCriteria orderCriteria) + { + IQueryable query = DbContext.Inquiries.Skip((page - 1) * number).Take(number); + switch (orderCriteria) + { + case InquiryOrderCriteria.None: + break; + case InquiryOrderCriteria.ByTitle: + query = query.OrderBy(s => s.Title); + break; + case InquiryOrderCriteria.ByDescription: + query = query.OrderBy(s => s.Description); + break; + case InquiryOrderCriteria.ByIsUser: + query = query.OrderBy(s => s.IsUser); + break; + default: + break; + } + + var inquiries = query.ToList(); + return inquiries.Select(s => s); + } + public InquiryEntity GetInquiryById(int id) { - var inquiryEntity = DbContext.Inquiries.FirstOrDefault(u => u.Id == id); + var inquiryEntity = DbContext.Inquiries.FirstOrDefault(i => i.Id == id); if (inquiryEntity == null) { throw new ArgumentException("Impossible de trouver l'enquête", nameof(id)); @@ -29,7 +53,7 @@ public class InquiryDataService : IInquiryService public InquiryEntity GetInquiryByTitle(string title) { - var inquiryEntity = DbContext.Inquiries.FirstOrDefault(u => u.Title == title); + var inquiryEntity = DbContext.Inquiries.FirstOrDefault(i => i.Title == title); if (inquiryEntity == null) { throw new ArgumentException("Impossible de trouver l'enquête", nameof(title)); @@ -38,10 +62,12 @@ public class InquiryDataService : IInquiryService return inquiryEntity; } - public IEnumerable GetInquiries(int page, int number, InquiryOrderCriteria orderCriteria) + public InquiryEntity CreateInquiry(string title, string description, bool isUser) { - return DbContext.Inquiries.Skip((page - 1) * number).Take(number).ToList() - .Select(u => u); + var newInquiryEntity = new InquiryEntity(title, description, isUser); + DbContext.Inquiries.Add(newInquiryEntity); + DbContext.SaveChangesAsync(); + return newInquiryEntity; } public bool DeleteInquiry(int id) @@ -68,22 +94,7 @@ public class InquiryDataService : IInquiryService updatingInquiry.Title = inquiry.Title; updatingInquiry.Description = inquiry.Description; updatingInquiry.IsUser = inquiry.IsUser; - // Permet d'indiquer en Db que l'entité a été modifiée. - DbContext.Entry(updatingInquiry).State = EntityState.Modified; DbContext.SaveChangesAsync(); return updatingInquiry; } - - public InquiryEntity CreateInquiry(string title, string description, bool isUser) - { - var newInquiryEntity = new InquiryEntity() - { - Title = title, - Description = description, - IsUser = isUser, - }; - DbContext.Inquiries.Add(newInquiryEntity); - DbContext.SaveChangesAsync(); - return newInquiryEntity; - } } \ No newline at end of file diff --git a/API_SQLuedo/DbDataManager/Service/LessonDataService.cs b/API_SQLuedo/DbDataManager/Service/LessonDataService.cs index 65ed957..c932f74 100644 --- a/API_SQLuedo/DbDataManager/Service/LessonDataService.cs +++ b/API_SQLuedo/DbDataManager/Service/LessonDataService.cs @@ -1,11 +1,11 @@ -using DbContextLib; -using Entities; -using Microsoft.EntityFrameworkCore; -using Model.OrderCriteria; -using Shared; - -namespace DbDataManager.Service; - +using DbContextLib; +using Entities; +using Microsoft.EntityFrameworkCore; +using Model.OrderCriteria; +using Shared; + +namespace DbDataManager.Service; + public class LessonDataService : ILessonService { private UserDbContext DbContext { get; set; } @@ -16,6 +16,30 @@ public class LessonDataService : ILessonService context.Database.EnsureCreated(); } + public IEnumerable GetLessons(int page, int number, LessonOrderCriteria orderCriteria) + { + IQueryable query = DbContext.Lessons.Skip((page - 1) * number).Take(number); + switch (orderCriteria) + { + case LessonOrderCriteria.None: + break; + case LessonOrderCriteria.ByTitle: + query = query.OrderBy(s => s.Title); + break; + case LessonOrderCriteria.ByLastPublisher: + query = query.OrderBy(s => s.LastPublisher); + break; + case LessonOrderCriteria.ByLastEdit: + query = query.OrderBy(s => s.LastEdit); + break; + default: + break; + } + + var lessons = query.ToList(); + return lessons.Select(s => s); + } + public LessonEntity GetLessonById(int id) { var lessonEntity = DbContext.Lessons.FirstOrDefault(u => u.Id == id); @@ -38,15 +62,9 @@ public class LessonDataService : ILessonService return lessonEntity; } - public IEnumerable GetLessons(int page, int number, LessonOrderCriteria orderCriteria) - { - return DbContext.Lessons.Skip((page - 1) * number).Take(number).ToList() - .Select(u => u); - } - public bool DeleteLesson(int id) { - var lessonEntity = DbContext.Lessons.FirstOrDefault(u => u.Id == id); + var lessonEntity = DbContext.Lessons.FirstOrDefault(l => l.Id == id); if (lessonEntity == null) { return false; @@ -59,7 +77,7 @@ public class LessonDataService : ILessonService public LessonEntity UpdateLesson(int id, LessonEntity lesson) { - var updatingLesson = DbContext.Lessons.FirstOrDefault(u => u.Id == id); + var updatingLesson = DbContext.Lessons.FirstOrDefault(l => l.Id == id); if (updatingLesson == null) { throw new ArgumentException("Impossible de trouver la leçon", nameof(id)); @@ -68,8 +86,6 @@ public class LessonDataService : ILessonService updatingLesson.Title = lesson.Title; updatingLesson.LastPublisher = lesson.LastPublisher; updatingLesson.LastEdit = lesson.LastEdit; - // Permet d'indiquer en Db que l'entité a été modifiée. - DbContext.Entry(updatingLesson).State = EntityState.Modified; DbContext.SaveChangesAsync(); return updatingLesson; } diff --git a/API_SQLuedo/Shared/LessonDataService.cs b/API_SQLuedo/Shared/LessonDataService.cs deleted file mode 100644 index e37b67e..0000000 --- a/API_SQLuedo/Shared/LessonDataService.cs +++ /dev/null @@ -1,103 +0,0 @@ -using DbContextLib; -using Entities; -using Microsoft.EntityFrameworkCore; -using Dto; -using Model.OrderCriteria; -using Shared.Mapper; - -namespace Shared; - -public class LessonDataService : ILessonDataService -{ - private UserDbContext DbContext { get; set; } - public LessonDataService(UserDbContext context) - { - DbContext = context; - context.Database.EnsureCreated(); - } - public IEnumerable GetLessons(int page, int number, LessonOrderCriteria orderCriteria) - { - IQueryable query = DbContext.Lessons.Skip((page - 1) * number).Take(number); - switch (orderCriteria) - { - case LessonOrderCriteria.None: - break; - case LessonOrderCriteria.ByTitle: - query = query.OrderBy(s => s.Title); - break; - case LessonOrderCriteria.ByLastPublisher: - query = query.OrderBy(s => s.LastPublisher); - break; - case LessonOrderCriteria.ByLastEdit: - query = query.OrderBy(s => s.LastEdit); - break; - default: - break; - } - var lessons = query.ToList(); - return lessons.Select(s => s.FromEntityToDTO()); - } - - public LessonDTO GetLessonById(int id) - { - var lessonEntity = DbContext.Lessons.FirstOrDefault(u => u.Id == id); - if (lessonEntity == null) - { - throw new ArgumentException("Impossible de trouver la leçon", nameof(id)); - } - - return lessonEntity.FromEntityToDTO(); - } - - public LessonDTO GetLessonByTitle(string title) - { - var lessonEntity = DbContext.Lessons.FirstOrDefault(u => u.Title == title); - if (lessonEntity == null) - { - throw new ArgumentException("Impossible de trouver la leçon", nameof(title)); - } - - return lessonEntity.FromEntityToDTO(); - } - - public bool DeleteLesson(int id) - { - var lessonEntity = DbContext.Lessons.FirstOrDefault(l => l.Id == id); - if (lessonEntity == null) - { - return false; - } - - DbContext.Lessons.Remove(lessonEntity); - DbContext.SaveChangesAsync(); - return true; - } - - public LessonDTO UpdateLesson(int id, LessonDTO lesson) - { - var updatingLesson = DbContext.Lessons.FirstOrDefault(l => l.Id == id); - if (updatingLesson == null) - { - throw new ArgumentException("Impossible de trouver la leçon", nameof(id)); - } - - updatingLesson.Title = lesson.Title; - updatingLesson.LastPublisher = lesson.LastPublisher; - updatingLesson.LastEdit = lesson.LastEdit; - DbContext.SaveChangesAsync(); - return updatingLesson.FromEntityToDTO(); - } - - public LessonDTO CreateLesson(string title, string lastPublisher, DateOnly? lastEdit) - { - var newLessonEntity = new LessonDTO() - { - Title = title, - LastPublisher = lastPublisher, - LastEdit = lastEdit, - }; - DbContext.Lessons.Add(newLessonEntity.FromDTOToEntity()); - DbContext.SaveChangesAsync(); - return newLessonEntity; - } -} \ No newline at end of file From b4722228bfe83609c1091f18e2445d7b569f37d9 Mon Sep 17 00:00:00 2001 From: clchieu Date: Fri, 15 Mar 2024 16:57:17 +0100 Subject: [PATCH 12/21] Modification du test pour s'adapter aux changements de service --- API_SQLuedo/TestConsoleAPI/Program.cs | 65 +++++++++++++-------------- 1 file changed, 32 insertions(+), 33 deletions(-) diff --git a/API_SQLuedo/TestConsoleAPI/Program.cs b/API_SQLuedo/TestConsoleAPI/Program.cs index 07e5a52..5c6486a 100644 --- a/API_SQLuedo/TestConsoleAPI/Program.cs +++ b/API_SQLuedo/TestConsoleAPI/Program.cs @@ -10,16 +10,16 @@ using Microsoft.Data.Sqlite; using Microsoft.EntityFrameworkCore; using Microsoft.Extensions.Logging; using Model.OrderCriteria; -using LessonDataService = Shared.LessonDataService; using ParagraphDataService = Shared.ParagraphDataService; +using Service_LessonDataService = DbDataManager.Service.LessonDataService; using SuccessDataService = Shared.SuccessDataService; using UserDataService = Shared.UserDataService; var connection = new SqliteConnection("DataSource=:memory:"); connection.Open(); var options = new DbContextOptionsBuilder() - .UseSqlite(connection) - .Options; + .UseSqlite(connection) + .Options; using ILoggerFactory factory = new LoggerFactory(); ILogger userLogger = factory.CreateLogger(); ILogger inquiryLogger = factory.CreateLogger(); @@ -31,9 +31,11 @@ ILogger successLogger = factory.CreateLogger Date: Fri, 15 Mar 2024 17:02:27 +0100 Subject: [PATCH 13/21] Modification du service de Paragraph --- .../API/Controllers/LessonsController.cs | 2 +- .../API/Controllers/ParagraphsController.cs | 2 +- .../API/Controllers/SuccessesController.cs | 2 +- API_SQLuedo/API/Program.cs | 6 +- .../API/Service/ParagraphDataServiceAPI.cs | 22 ++-- .../Service/ParagraphDataService.cs | 58 ++++++--- API_SQLuedo/Shared/ParagraphDataService.cs | 116 ------------------ API_SQLuedo/TestConsoleAPI/Program.cs | 4 +- 8 files changed, 59 insertions(+), 153 deletions(-) delete mode 100644 API_SQLuedo/Shared/ParagraphDataService.cs diff --git a/API_SQLuedo/API/Controllers/LessonsController.cs b/API_SQLuedo/API/Controllers/LessonsController.cs index eaaec1b..ba99163 100644 --- a/API_SQLuedo/API/Controllers/LessonsController.cs +++ b/API_SQLuedo/API/Controllers/LessonsController.cs @@ -13,7 +13,7 @@ namespace API.Controllers [ApiController] public class LessonsController : Controller { - private ILessonService _lessonDataService; + private readonly ILessonService _lessonDataService; private readonly ILogger _logger; diff --git a/API_SQLuedo/API/Controllers/ParagraphsController.cs b/API_SQLuedo/API/Controllers/ParagraphsController.cs index 9196e21..9be8fd9 100644 --- a/API_SQLuedo/API/Controllers/ParagraphsController.cs +++ b/API_SQLuedo/API/Controllers/ParagraphsController.cs @@ -13,7 +13,7 @@ namespace API.Controllers [ApiController] public class ParagraphsController : Controller { - private IParagraphService _paragraphDataService; + private readonly IParagraphService _paragraphDataService; private readonly ILogger _logger; diff --git a/API_SQLuedo/API/Controllers/SuccessesController.cs b/API_SQLuedo/API/Controllers/SuccessesController.cs index 09df742..a399979 100644 --- a/API_SQLuedo/API/Controllers/SuccessesController.cs +++ b/API_SQLuedo/API/Controllers/SuccessesController.cs @@ -13,7 +13,7 @@ namespace API.Controllers [ApiController] public class SuccessesController : Controller { - private ISuccessService _successDataService; + private readonly ISuccessService _successDataService; private readonly ILogger _logger; diff --git a/API_SQLuedo/API/Program.cs b/API_SQLuedo/API/Program.cs index 060b520..98766d0 100644 --- a/API_SQLuedo/API/Program.cs +++ b/API_SQLuedo/API/Program.cs @@ -6,9 +6,7 @@ using DbDataManager.Service; using Dto; using Entities; using Microsoft.AspNetCore.Identity; -using Microsoft.AspNetCore.Mvc; using Microsoft.EntityFrameworkCore; -using Microsoft.Extensions.DependencyInjection; using Microsoft.OpenApi.Models; using Shared; @@ -27,8 +25,8 @@ builder.Services.AddScoped, Shared.UserDataService>(); builder.Services.AddScoped, InquiryDataService>(); builder.Services.AddScoped, InquiryDataServiceApi>(); -builder.Services.AddScoped, DbDataManager.Service.ParagraphDataService>(); -builder.Services.AddScoped, Shared.ParagraphDataService>(); +builder.Services.AddScoped, ParagraphDataService>(); +builder.Services.AddScoped, ParagraphDataServiceApi>(); builder.Services.AddScoped, DbDataManager.Service.SuccessDataService>(); builder.Services.AddScoped, Shared.SuccessDataService>(); diff --git a/API_SQLuedo/API/Service/ParagraphDataServiceAPI.cs b/API_SQLuedo/API/Service/ParagraphDataServiceAPI.cs index c29f89d..af09a6b 100644 --- a/API_SQLuedo/API/Service/ParagraphDataServiceAPI.cs +++ b/API_SQLuedo/API/Service/ParagraphDataServiceAPI.cs @@ -1,26 +1,28 @@ -using Entities; +using Dto; +using Entities; using Model.OrderCriteria; using Shared; +using Shared.Mapper; namespace API.Service; -public class ParagraphDataServiceApi(IParagraphService paragraphService) : IParagraphService +public class ParagraphDataServiceApi(IParagraphService paragraphService) : IParagraphService { - public IEnumerable GetParagraphs(int page, int number, ParagraphOrderCriteria orderCriteria) + public IEnumerable GetParagraphs(int page, int number, ParagraphOrderCriteria orderCriteria) { var paragraphsEntities = paragraphService.GetParagraphs(page, number, orderCriteria); - return paragraphsEntities.Select(e => e).ToList(); + return paragraphsEntities.Select(e => e.FromEntityToDTO()).ToList(); } - public ParagraphEntity GetParagraphById(int id) => paragraphService.GetParagraphById(id); + public ParagraphDTO GetParagraphById(int id) => paragraphService.GetParagraphById(id).FromEntityToDTO(); - public ParagraphEntity GetParagraphByTitle(string title) => paragraphService.GetParagraphByTitle(title); + public ParagraphDTO GetParagraphByTitle(string title) => paragraphService.GetParagraphByTitle(title).FromEntityToDTO(); public bool DeleteParagraph(int id) => paragraphService.DeleteParagraph(id); - public ParagraphEntity UpdateParagraph(int id, ParagraphEntity paragraph) => - paragraphService.UpdateParagraph(id, paragraph); + public ParagraphDTO UpdateParagraph(int id, ParagraphDTO paragraph) => + paragraphService.UpdateParagraph(id, paragraph.FromDTOToEntity()).FromEntityToDTO(); - public ParagraphEntity CreateParagraph(string title, string content, string info, string query, string comment, int lessonId) => - paragraphService.CreateParagraph(title, content, info, query, comment, lessonId); + public ParagraphDTO CreateParagraph(string title, string content, string info, string query, string comment, int lessonId) => + paragraphService.CreateParagraph(title, content, info, query, comment, lessonId).FromEntityToDTO(); } \ No newline at end of file diff --git a/API_SQLuedo/DbDataManager/Service/ParagraphDataService.cs b/API_SQLuedo/DbDataManager/Service/ParagraphDataService.cs index d561261..fa92a29 100644 --- a/API_SQLuedo/DbDataManager/Service/ParagraphDataService.cs +++ b/API_SQLuedo/DbDataManager/Service/ParagraphDataService.cs @@ -16,6 +16,36 @@ public class ParagraphDataService : IParagraphService context.Database.EnsureCreated(); } + public IEnumerable GetParagraphs(int page, int number, ParagraphOrderCriteria orderCriteria) + { + IQueryable query = DbContext.Paragraphs.Skip((page - 1) * number).Take(number); + switch (orderCriteria) + { + case ParagraphOrderCriteria.None: + break; + case ParagraphOrderCriteria.ByTitle: + query = query.OrderBy(s => s.Title); + break; + case ParagraphOrderCriteria.ByContent: + query = query.OrderBy(s => s.Content); + break; + case ParagraphOrderCriteria.ByInfo: + query = query.OrderBy(s => s.Info); + break; + case ParagraphOrderCriteria.ByQuery: + query = query.OrderBy(s => s.Query); + break; + case ParagraphOrderCriteria.ByComment: + query = query.OrderBy(s => s.Comment); + break; + default: + break; + } + + var paragraphs = query.ToList(); + return paragraphs.Select(s => s); + } + public ParagraphEntity GetParagraphById(int id) { var paragraphEntity = DbContext.Paragraphs.FirstOrDefault(u => u.Id == id); @@ -38,15 +68,9 @@ public class ParagraphDataService : IParagraphService return paragraphEntity; } - public IEnumerable GetParagraphs(int page, int number, ParagraphOrderCriteria orderCriteria) - { - return DbContext.Paragraphs.Skip((page - 1) * number).Take(number).ToList() - .Select(u => u); - } - public bool DeleteParagraph(int id) { - var paragraphEntity = DbContext.Paragraphs.FirstOrDefault(u => u.Id == id); + var paragraphEntity = DbContext.Paragraphs.FirstOrDefault(p => p.Id == id); if (paragraphEntity == null) { return false; @@ -57,27 +81,25 @@ public class ParagraphDataService : IParagraphService return true; } - public ParagraphEntity UpdateParagraph(int id, ParagraphEntity paragraph) + public ParagraphEntity UpdateParagraph(int id, ParagraphEntity paragraphDTO) { - var updatingParagraph = DbContext.Paragraphs.FirstOrDefault(u => u.Id == id); + var updatingParagraph = DbContext.Paragraphs.FirstOrDefault(p => p.Id == id); if (updatingParagraph == null) { throw new ArgumentException("Impossible de trouver le paragraphe", nameof(id)); } - updatingParagraph.Title = paragraph.Title; - updatingParagraph.Content = paragraph.Content; - updatingParagraph.Info = paragraph.Info; - updatingParagraph.Query = paragraph.Query; - updatingParagraph.Comment = paragraph.Comment; - updatingParagraph.LessonId = paragraph.LessonId; - // Permet d'indiquer en Db que l'entité a été modifiée. - DbContext.Entry(updatingParagraph).State = EntityState.Modified; + updatingParagraph.Title = paragraphDTO.Title; + updatingParagraph.Content = paragraphDTO.Content; + updatingParagraph.Info = paragraphDTO.Info; + updatingParagraph.Query = paragraphDTO.Query; + updatingParagraph.Comment = paragraphDTO.Comment; DbContext.SaveChangesAsync(); return updatingParagraph; } - public ParagraphEntity CreateParagraph(string title, string content, string info, string query, string comment, int lessonId) + public ParagraphEntity CreateParagraph(string title, string content, string info, string query, string comment, + int lessonId) { var newParagraphEntity = new ParagraphEntity() { diff --git a/API_SQLuedo/Shared/ParagraphDataService.cs b/API_SQLuedo/Shared/ParagraphDataService.cs deleted file mode 100644 index 7954f78..0000000 --- a/API_SQLuedo/Shared/ParagraphDataService.cs +++ /dev/null @@ -1,116 +0,0 @@ -using Entities; -using Microsoft.EntityFrameworkCore; -using Dto; -using DbContextLib; -using Model.OrderCriteria; -using Shared; -using Shared.Mapper; - -namespace Shared; - -public class ParagraphDataService : IParagraphDataService -{ - private UserDbContext DbContext { get; set; } - public ParagraphDataService(UserDbContext context) - { - DbContext = context; - context.Database.EnsureCreated(); - } - - public IEnumerable GetParagraphs(int page, int number, ParagraphOrderCriteria orderCriteria) - { - IQueryable query = DbContext.Paragraphs.Skip((page - 1) * number).Take(number); - switch (orderCriteria) - { - case ParagraphOrderCriteria.None: - break; - case ParagraphOrderCriteria.ByTitle: - query = query.OrderBy(s => s.Title); - break; - case ParagraphOrderCriteria.ByContent: - query = query.OrderBy(s => s.Content); - break; - case ParagraphOrderCriteria.ByInfo: - query = query.OrderBy(s => s.Info); - break; - case ParagraphOrderCriteria.ByQuery: - query = query.OrderBy(s => s.Query); - break; - case ParagraphOrderCriteria.ByComment: - query = query.OrderBy(s => s.Comment); - break; - default: - break; - } - var paragraphs = query.ToList(); - return paragraphs.Select(s => s.FromEntityToDTO()); - } - - public ParagraphDTO GetParagraphById(int id) - { - var paragraphEntity = DbContext.Paragraphs.FirstOrDefault(u => u.Id == id); - if (paragraphEntity == null) - { - throw new ArgumentException("Impossible de trouver le paragraphe", nameof(id)); - } - - return paragraphEntity.FromEntityToDTO(); - } - - public ParagraphDTO GetParagraphByTitle(string title) - { - var paragraphEntity = DbContext.Paragraphs.FirstOrDefault(u => u.Title == title); - if (paragraphEntity == null) - { - throw new ArgumentException("Impossible de trouver le paragraphe", nameof(title)); - } - - return paragraphEntity.FromEntityToDTO(); - } - - public bool DeleteParagraph(int id) - { - var paragraphEntity = DbContext.Paragraphs.FirstOrDefault(p => p.Id == id); - if (paragraphEntity == null) - { - return false; - } - - DbContext.Paragraphs.Remove(paragraphEntity); - DbContext.SaveChangesAsync(); - return true; - } - - public ParagraphDTO UpdateParagraph(int id, ParagraphDTO paragraphDTO) - { - var updatingParagraph = DbContext.Paragraphs.FirstOrDefault(p => p.Id == id); - if (updatingParagraph == null) - { - throw new ArgumentException("Impossible de trouver le paragraphe", nameof(id)); - } - - updatingParagraph.Title = paragraphDTO.Title; - updatingParagraph.Content = paragraphDTO.Content; - updatingParagraph.Info = paragraphDTO.Info; - updatingParagraph.Query = paragraphDTO.Query; - updatingParagraph.Comment = paragraphDTO.Comment; - DbContext.SaveChangesAsync(); - return updatingParagraph.FromEntityToDTO(); - } - - public ParagraphDTO CreateParagraph(string title, string content, string info, string query, string comment, int lessonId) - { - var newParagraphEntity = new ParagraphDTO() - { - Title = title, - Content = content, - Info = info, - Query = query, - Comment = comment, - LessonId = lessonId - }; - DbContext.Paragraphs.Add(newParagraphEntity.FromDTOToEntity()); - DbContext.SaveChangesAsync(); - return newParagraphEntity; - } -} \ No newline at end of file diff --git a/API_SQLuedo/TestConsoleAPI/Program.cs b/API_SQLuedo/TestConsoleAPI/Program.cs index 5c6486a..6921e72 100644 --- a/API_SQLuedo/TestConsoleAPI/Program.cs +++ b/API_SQLuedo/TestConsoleAPI/Program.cs @@ -10,8 +10,8 @@ using Microsoft.Data.Sqlite; using Microsoft.EntityFrameworkCore; using Microsoft.Extensions.Logging; using Model.OrderCriteria; -using ParagraphDataService = Shared.ParagraphDataService; using Service_LessonDataService = DbDataManager.Service.LessonDataService; +using Service_ParagraphDataService = DbDataManager.Service.ParagraphDataService; using SuccessDataService = Shared.SuccessDataService; using UserDataService = Shared.UserDataService; @@ -33,7 +33,7 @@ using (var context = new UserDbContext(options)) var userController = new UsersController(userLogger, new UserDataService(context)); var inquiryController = new InquiriesController(new InquiryDataServiceApi(new InquiryDataService(context)), inquiryLogger); - var paragraphController = new ParagraphsController(new ParagraphDataService(context), paragraphLogger); + var paragraphController = new ParagraphsController(new ParagraphDataServiceApi(new Service_ParagraphDataService(context)), paragraphLogger); var lessonController = new LessonsController(new LessonDataServiceApi(new Service_LessonDataService(context)), lessonLogger); var successController = new SuccessesController(new SuccessDataService(context), successLogger); From 5686b7267a13b96c340962da1ba7b5995efac37b Mon Sep 17 00:00:00 2001 From: clchieu Date: Fri, 15 Mar 2024 17:07:01 +0100 Subject: [PATCH 14/21] =?UTF-8?q?Am=C3=A9lioration=20du=20code?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Service/InquiryDataService.cs | 2 +- .../Service/LessonDataService.cs | 2 +- .../Service/ParagraphDataService.cs | 2 +- API_SQLuedo/Shared/SuccessDataService.cs | 103 ------------------ 4 files changed, 3 insertions(+), 106 deletions(-) delete mode 100644 API_SQLuedo/Shared/SuccessDataService.cs diff --git a/API_SQLuedo/DbDataManager/Service/InquiryDataService.cs b/API_SQLuedo/DbDataManager/Service/InquiryDataService.cs index df9c2ce..8244c63 100644 --- a/API_SQLuedo/DbDataManager/Service/InquiryDataService.cs +++ b/API_SQLuedo/DbDataManager/Service/InquiryDataService.cs @@ -37,7 +37,7 @@ public class InquiryDataService : IInquiryService } var inquiries = query.ToList(); - return inquiries.Select(s => s); + return inquiries; } public InquiryEntity GetInquiryById(int id) diff --git a/API_SQLuedo/DbDataManager/Service/LessonDataService.cs b/API_SQLuedo/DbDataManager/Service/LessonDataService.cs index c932f74..41838ad 100644 --- a/API_SQLuedo/DbDataManager/Service/LessonDataService.cs +++ b/API_SQLuedo/DbDataManager/Service/LessonDataService.cs @@ -37,7 +37,7 @@ public class LessonDataService : ILessonService } var lessons = query.ToList(); - return lessons.Select(s => s); + return lessons; } public LessonEntity GetLessonById(int id) diff --git a/API_SQLuedo/DbDataManager/Service/ParagraphDataService.cs b/API_SQLuedo/DbDataManager/Service/ParagraphDataService.cs index fa92a29..d50e0fb 100644 --- a/API_SQLuedo/DbDataManager/Service/ParagraphDataService.cs +++ b/API_SQLuedo/DbDataManager/Service/ParagraphDataService.cs @@ -43,7 +43,7 @@ public class ParagraphDataService : IParagraphService } var paragraphs = query.ToList(); - return paragraphs.Select(s => s); + return paragraphs; } public ParagraphEntity GetParagraphById(int id) diff --git a/API_SQLuedo/Shared/SuccessDataService.cs b/API_SQLuedo/Shared/SuccessDataService.cs deleted file mode 100644 index f2f7b88..0000000 --- a/API_SQLuedo/Shared/SuccessDataService.cs +++ /dev/null @@ -1,103 +0,0 @@ -using Entities; -using Microsoft.EntityFrameworkCore; -using Dto; -using DbContextLib; -using Model.OrderCriteria; -using Shared.Mapper; - -namespace Shared; - -public class SuccessDataService : ISuccessDataService -{ - private UserDbContext DbContext { get; set; } - public SuccessDataService(UserDbContext context) - { - DbContext = context; - context.Database.EnsureCreated(); - } - public IEnumerable GetSuccesses(int page, int number, SuccessOrderCriteria orderCriteria) - { - IQueryable query = DbContext.Successes.Skip((page - 1) * number).Take(number); - switch (orderCriteria) - { - case SuccessOrderCriteria.None: - break; - case SuccessOrderCriteria.ByUserId: - query = query.OrderBy(s => s.UserId); - break; - case SuccessOrderCriteria.ByInquiryId: - query = query.OrderBy(s => s.InquiryId); - break; - case SuccessOrderCriteria.ByIsFinished: - query = query.OrderBy(s => s.IsFinished); - break; - default: - break; - } - var successes = query.ToList(); - return successes.Select(s => s.FromEntityToDTO()); - } - - public SuccessDTO GetSuccessByUserId(int id) - { - var userEntity = DbContext.Successes.FirstOrDefault(u => u.UserId == id); - if (userEntity == null) - { - throw new ArgumentException("Impossible de trouver le succès", nameof(id)); - } - - return userEntity.FromEntityToDTO(); - } - - public SuccessDTO GetSuccessByInquiryId(int id) - { - var userEntity = DbContext.Successes.FirstOrDefault(u => u.InquiryId == id); - if (userEntity == null) - { - throw new ArgumentException("Impossible de trouver le succès", nameof(id)); - } - - return userEntity.FromEntityToDTO(); - } - - public bool DeleteSuccess(int id) - { - var successEntity = DbContext.Successes.FirstOrDefault(u => u.UserId == id); - if (successEntity == null) - { - return false; - } - - DbContext.Successes.Remove(successEntity); - DbContext.SaveChangesAsync(); - return true; - } - - public SuccessDTO UpdateSuccess(int id, SuccessDTO success) - { - var updatingSuccess = DbContext.Successes.FirstOrDefault(u => u.UserId == id); - if (updatingSuccess == null) - { - throw new ArgumentException("Impossible de trouver le succès", nameof(id)); - } - - updatingSuccess.UserId = success.UserId; - updatingSuccess.InquiryId = success.InquiryId; - updatingSuccess.IsFinished = success.IsFinished; - DbContext.SaveChangesAsync(); - return updatingSuccess.FromEntityToDTO(); - } - - public SuccessDTO CreateSuccess(int userId, int inquiryId, bool isFinished) - { - var newSuccessEntity = new SuccessDTO() - { - UserId = userId, - InquiryId = inquiryId, - IsFinished = isFinished, - }; - DbContext.Successes.Add(newSuccessEntity.FromDTOToEntity()); - DbContext.SaveChangesAsync(); - return newSuccessEntity; - } -} \ No newline at end of file From 4eee15fa4dc630776cab45650a4e3afb144e4b28 Mon Sep 17 00:00:00 2001 From: clchieu Date: Fri, 15 Mar 2024 17:07:21 +0100 Subject: [PATCH 15/21] =?UTF-8?q?Modification=20du=20service=20des=20succ?= =?UTF-8?q?=C3=A8s?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- API_SQLuedo/API/Program.cs | 4 +- .../API/Service/SuccessDataServiceAPI.cs | 22 ++++---- .../Service/SuccessDataService.cs | 54 ++++++++++++------- API_SQLuedo/TestConsoleAPI/Program.cs | 4 +- 4 files changed, 51 insertions(+), 33 deletions(-) diff --git a/API_SQLuedo/API/Program.cs b/API_SQLuedo/API/Program.cs index 98766d0..286d6a2 100644 --- a/API_SQLuedo/API/Program.cs +++ b/API_SQLuedo/API/Program.cs @@ -28,8 +28,8 @@ builder.Services.AddScoped, InquiryDataServiceApi>() builder.Services.AddScoped, ParagraphDataService>(); builder.Services.AddScoped, ParagraphDataServiceApi>(); -builder.Services.AddScoped, DbDataManager.Service.SuccessDataService>(); -builder.Services.AddScoped, Shared.SuccessDataService>(); +builder.Services.AddScoped, SuccessDataService>(); +builder.Services.AddScoped, SuccessDataServiceApi>(); builder.Services.AddScoped, LessonDataService>(); builder.Services.AddScoped, LessonDataServiceApi>(); diff --git a/API_SQLuedo/API/Service/SuccessDataServiceAPI.cs b/API_SQLuedo/API/Service/SuccessDataServiceAPI.cs index 7433a91..af403c5 100644 --- a/API_SQLuedo/API/Service/SuccessDataServiceAPI.cs +++ b/API_SQLuedo/API/Service/SuccessDataServiceAPI.cs @@ -1,26 +1,28 @@ -using Entities; +using Dto; +using Entities; using Model.OrderCriteria; using Shared; +using Shared.Mapper; namespace API.Service; -public class SuccessDataServiceApi(ISuccessService sucessService) : ISuccessService +public class SuccessDataServiceApi(ISuccessService sucessService) : ISuccessService { - public IEnumerable GetSuccesses(int page, int number, SuccessOrderCriteria orderCriteria) + public IEnumerable GetSuccesses(int page, int number, SuccessOrderCriteria orderCriteria) { var successesEntities = sucessService.GetSuccesses(page, number, orderCriteria); - return successesEntities.Select(e => e).ToList(); + return successesEntities.Select(e => e.FromEntityToDTO()).ToList(); } - public SuccessEntity GetSuccessByUserId(int id) => sucessService.GetSuccessByUserId(id); + public SuccessDTO GetSuccessByUserId(int id) => sucessService.GetSuccessByUserId(id).FromEntityToDTO(); - public SuccessEntity GetSuccessByInquiryId(int id) => sucessService.GetSuccessByInquiryId(id); + public SuccessDTO GetSuccessByInquiryId(int id) => sucessService.GetSuccessByInquiryId(id).FromEntityToDTO(); public bool DeleteSuccess(int id) => sucessService.DeleteSuccess(id); - public SuccessEntity UpdateSuccess(int id, SuccessEntity success) => - sucessService.UpdateSuccess(id, success); + public SuccessDTO UpdateSuccess(int id, SuccessDTO success) => + sucessService.UpdateSuccess(id, success.FromDTOToEntity()).FromEntityToDTO(); - public SuccessEntity CreateSuccess(int userId, int inquiryId, bool isFinished) => - sucessService.CreateSuccess(userId, inquiryId, isFinished); + public SuccessDTO CreateSuccess(int userId, int inquiryId, bool isFinished) => + sucessService.CreateSuccess(userId, inquiryId, isFinished).FromEntityToDTO(); } \ No newline at end of file diff --git a/API_SQLuedo/DbDataManager/Service/SuccessDataService.cs b/API_SQLuedo/DbDataManager/Service/SuccessDataService.cs index 4a079fa..22e3b2e 100644 --- a/API_SQLuedo/DbDataManager/Service/SuccessDataService.cs +++ b/API_SQLuedo/DbDataManager/Service/SuccessDataService.cs @@ -16,43 +16,61 @@ public class SuccessDataService : ISuccessService context.Database.EnsureCreated(); } - public SuccessEntity GetSuccessByUserId(int id) + public IEnumerable GetSuccesses(int page, int number, SuccessOrderCriteria orderCriteria) { - var successEntity = DbContext.Successes.FirstOrDefault(u => u.UserId == id); - if (successEntity == null) + IQueryable query = DbContext.Successes.Skip((page - 1) * number).Take(number); + switch (orderCriteria) { - throw new ArgumentException("Impossible de trouver le succès avec l'user id", nameof(id)); + case SuccessOrderCriteria.None: + break; + case SuccessOrderCriteria.ByUserId: + query = query.OrderBy(s => s.UserId); + break; + case SuccessOrderCriteria.ByInquiryId: + query = query.OrderBy(s => s.InquiryId); + break; + case SuccessOrderCriteria.ByIsFinished: + query = query.OrderBy(s => s.IsFinished); + break; + default: + break; } - return successEntity; + var successes = query.ToList(); + return successes; } - public SuccessEntity GetSuccessByInquiryId(int id) + public SuccessEntity GetSuccessByUserId(int id) { - var successEntity = DbContext.Successes.FirstOrDefault(u => u.InquiryId == id); - if (successEntity == null) + var userEntity = DbContext.Successes.FirstOrDefault(u => u.UserId == id); + if (userEntity == null) { - throw new ArgumentException("Impossible de trouver le succès avec l'inquiry id", nameof(id)); + throw new ArgumentException("Impossible de trouver le succès", nameof(id)); } - return successEntity; + return userEntity; } - public IEnumerable GetSuccesses(int page, int number, SuccessOrderCriteria orderCriteria) + public SuccessEntity GetSuccessByInquiryId(int id) { - return DbContext.Successes.Skip((page - 1) * number).Take(number).ToList() - .Select(u => u); + var userEntity = DbContext.Successes.FirstOrDefault(u => u.InquiryId == id); + if (userEntity == null) + { + throw new ArgumentException("Impossible de trouver le succès", nameof(id)); + } + + return userEntity; } public bool DeleteSuccess(int id) { - var userEntity = DbContext.Successes.FirstOrDefault(u => u.UserId == id); - if (userEntity == null) + var successEntity = DbContext.Successes.FirstOrDefault(u => u.UserId == id); + if (successEntity == null) { return false; } - DbContext.Successes.Remove(userEntity); + DbContext.Successes.Remove(successEntity); DbContext.SaveChangesAsync(); return true; } @@ -62,14 +80,12 @@ public class SuccessDataService : ISuccessService var updatingSuccess = DbContext.Successes.FirstOrDefault(u => u.UserId == id); if (updatingSuccess == null) { - throw new ArgumentException("Impossible de trouver le succès avec l'user id", nameof(id)); + throw new ArgumentException("Impossible de trouver le succès", nameof(id)); } updatingSuccess.UserId = success.UserId; updatingSuccess.InquiryId = success.InquiryId; updatingSuccess.IsFinished = success.IsFinished; - // Permet d'indiquer en Db que l'entité a été modifiée. - DbContext.Entry(updatingSuccess).State = EntityState.Modified; DbContext.SaveChangesAsync(); return updatingSuccess; } diff --git a/API_SQLuedo/TestConsoleAPI/Program.cs b/API_SQLuedo/TestConsoleAPI/Program.cs index 6921e72..9243568 100644 --- a/API_SQLuedo/TestConsoleAPI/Program.cs +++ b/API_SQLuedo/TestConsoleAPI/Program.cs @@ -12,7 +12,7 @@ using Microsoft.Extensions.Logging; using Model.OrderCriteria; using Service_LessonDataService = DbDataManager.Service.LessonDataService; using Service_ParagraphDataService = DbDataManager.Service.ParagraphDataService; -using SuccessDataService = Shared.SuccessDataService; +using Service_SuccessDataService = DbDataManager.Service.SuccessDataService; using UserDataService = Shared.UserDataService; var connection = new SqliteConnection("DataSource=:memory:"); @@ -36,7 +36,7 @@ using (var context = new UserDbContext(options)) var paragraphController = new ParagraphsController(new ParagraphDataServiceApi(new Service_ParagraphDataService(context)), paragraphLogger); var lessonController = new LessonsController(new LessonDataServiceApi(new Service_LessonDataService(context)), lessonLogger); - var successController = new SuccessesController(new SuccessDataService(context), successLogger); + var successController = new SuccessesController(new SuccessDataServiceApi(new Service_SuccessDataService(context)), successLogger); void PrintUsers() { From 1cff605b0d557c782e3d340fb7e1c2312dcdd254 Mon Sep 17 00:00:00 2001 From: clchieu Date: Fri, 15 Mar 2024 17:11:28 +0100 Subject: [PATCH 16/21] :construction: Modification du service User --- API_SQLuedo/API/Program.cs | 4 +- API_SQLuedo/API/Service/UserDataServiceAPI.cs | 22 ++-- .../DbDataManager/Service/UserDataService.cs | 31 ++++- API_SQLuedo/Shared/UserDataService.cs | 121 ------------------ API_SQLuedo/TestConsoleAPI/Program.cs | 11 +- 5 files changed, 45 insertions(+), 144 deletions(-) delete mode 100644 API_SQLuedo/Shared/UserDataService.cs diff --git a/API_SQLuedo/API/Program.cs b/API_SQLuedo/API/Program.cs index 286d6a2..a2ef3df 100644 --- a/API_SQLuedo/API/Program.cs +++ b/API_SQLuedo/API/Program.cs @@ -19,8 +19,8 @@ builder.Services.AddControllers(); builder.Services.AddEndpointsApiExplorer(); builder.Services.AddSwaggerGen(); -builder.Services.AddScoped, DbDataManager.Service.UserDataService>(); -builder.Services.AddScoped, Shared.UserDataService>(); +builder.Services.AddScoped, UserDataService>(); +builder.Services.AddScoped, UserDataServiceApi>(); builder.Services.AddScoped, InquiryDataService>(); builder.Services.AddScoped, InquiryDataServiceApi>(); diff --git a/API_SQLuedo/API/Service/UserDataServiceAPI.cs b/API_SQLuedo/API/Service/UserDataServiceAPI.cs index c1d4997..482a679 100644 --- a/API_SQLuedo/API/Service/UserDataServiceAPI.cs +++ b/API_SQLuedo/API/Service/UserDataServiceAPI.cs @@ -1,26 +1,28 @@ -using Entities; +using Dto; +using Entities; using Model.OrderCriteria; using Shared; +using Shared.Mapper; namespace API.Service; -public class UserDataServiceApi(IUserService userService) : IUserService +public class UserDataServiceApi(IUserService userService) : IUserService { - public IEnumerable GetUsers(int page, int number, UserOrderCriteria orderCriteria) + public IEnumerable GetUsers(int page, int number, UserOrderCriteria orderCriteria) { var usersEntities = userService.GetUsers(page, number, orderCriteria); - return usersEntities.Select(e => e).ToList(); + return usersEntities.Select(e => e.FromEntityToDTO()).ToList(); } - public UserEntity GetUserById(int id) => userService.GetUserById(id); + public UserDTO GetUserById(int id) => userService.GetUserById(id).FromEntityToDTO(); - public UserEntity GetUserByUsername(string username) => userService.GetUserByUsername(username); + public UserDTO GetUserByUsername(string username) => userService.GetUserByUsername(username).FromEntityToDTO(); public bool DeleteUser(int id) => userService.DeleteUser(id); - public UserEntity UpdateUser(int id, UserEntity user) => - userService.UpdateUser(id, user); + public UserDTO UpdateUser(int id, UserDTO user) => + userService.UpdateUser(id, user.FromDTOToEntity()).FromEntityToDTO(); - public UserEntity CreateUser(string username, string password, string email, bool isAdmin) => - userService.CreateUser(username, password, email, isAdmin); + public UserDTO CreateUser(string username, string password, string email, bool isAdmin) => + userService.CreateUser(username, password, email, isAdmin).FromEntityToDTO(); } \ No newline at end of file diff --git a/API_SQLuedo/DbDataManager/Service/UserDataService.cs b/API_SQLuedo/DbDataManager/Service/UserDataService.cs index b4de650..b3c30dd 100644 --- a/API_SQLuedo/DbDataManager/Service/UserDataService.cs +++ b/API_SQLuedo/DbDataManager/Service/UserDataService.cs @@ -1,6 +1,5 @@ using DbContextLib; using Entities; -using Microsoft.EntityFrameworkCore; using Model.OrderCriteria; using Shared; @@ -8,7 +7,6 @@ namespace DbDataManager.Service; public class UserDataService : IUserService { - private UserDbContext DbContext { get; set; } public UserDataService(UserDbContext context) @@ -41,8 +39,29 @@ public class UserDataService : IUserService public IEnumerable GetUsers(int page, int number, UserOrderCriteria orderCriteria) { - return DbContext.Users.Skip((page - 1) * number).Take(number).ToList() - .Select(u => u); + IQueryable query = DbContext.Users.Skip((page - 1) * number).Take(number); + switch (orderCriteria) + { + case UserOrderCriteria.None: + break; + case UserOrderCriteria.ById: + query = query.OrderBy(s => s.Id); + break; + case UserOrderCriteria.ByUsername: + query = query.OrderBy(s => s.Username); + break; + case UserOrderCriteria.ByEmail: + query = query.OrderBy(s => s.Email); + break; + case UserOrderCriteria.ByIsAdmin: + query = query.OrderBy(s => s.IsAdmin); + break; + default: + break; + } + + var users = query.ToList(); + return users; } public bool DeleteUser(int id) @@ -70,15 +89,13 @@ public class UserDataService : IUserService updatingUser.Password = user.Password; updatingUser.Email = user.Email; updatingUser.IsAdmin = user.IsAdmin; - // Permet d'indiquer en Db que l'entité a été modifiée. - DbContext.Entry(updatingUser).State = EntityState.Modified; DbContext.SaveChangesAsync(); return updatingUser; } public UserEntity CreateUser(string username, string password, string email, bool isAdmin) { - var newUserEntity = new UserEntity() + var newUserEntity = new UserEntity { Username = username, Password = password, diff --git a/API_SQLuedo/Shared/UserDataService.cs b/API_SQLuedo/Shared/UserDataService.cs deleted file mode 100644 index a90b809..0000000 --- a/API_SQLuedo/Shared/UserDataService.cs +++ /dev/null @@ -1,121 +0,0 @@ -using Dto; -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using Microsoft.EntityFrameworkCore; -using Entities; -using Shared.Mapper; -using DbContextLib; -using Model.OrderCriteria; - -namespace Shared -{ - public class UserDataService : IUserDataService - { - private UserDbContext DbContext { get; set; } - - public UserDataService(UserDbContext context) - { - DbContext = context; - context.Database.EnsureCreated(); - } - - public UserDTO GetUserById(int id) - { - var userEntity = DbContext.Users.FirstOrDefault(u => u.Id == id); - if (userEntity == null) - { - throw new ArgumentException("Impossible de trouver l'utilisateur", nameof(id)); - } - - return userEntity.FromEntityToDTO(); - - } - - public UserDTO GetUserByUsername(string username) - { - var userEntity = DbContext.Users.FirstOrDefault(u => u.Username == username); - if (userEntity == null) - { - throw new ArgumentException("Impossible de trouver l'utilisateur", nameof(username)); - } - - return userEntity.FromEntityToDTO(); - - } - - public IEnumerable GetUsers(int page, int number, UserOrderCriteria orderCriteria) - { - IQueryable query = DbContext.Users.Skip((page - 1) * number).Take(number); - switch (orderCriteria) - { - case UserOrderCriteria.None: - break; - case UserOrderCriteria.ById: - query = query.OrderBy(s => s.Id); - break; - case UserOrderCriteria.ByUsername: - query = query.OrderBy(s => s.Username); - break; - case UserOrderCriteria.ByEmail: - query = query.OrderBy(s => s.Email); - break; - case UserOrderCriteria.ByIsAdmin: - query = query.OrderBy(s => s.IsAdmin); - break; - default: - break; - } - var users = query.ToList(); - return users.Select(s => s.FromEntityToDTO()); - } - - public bool DeleteUser(int id) - { - var userEntity = DbContext.Users.FirstOrDefault(u => u.Id == id); - if (userEntity == null) - { - return false; - } - - DbContext.Users.Remove(userEntity); - DbContext.SaveChangesAsync(); - return true; - - } - - public UserDTO UpdateUser(int id, UserDTO user) - { - var updatingUser = DbContext.Users.FirstOrDefault(u => u.Id == id); - if (updatingUser == null) - { - throw new ArgumentException("Impossible de trouver l'utilisateur", nameof(id)); - } - - updatingUser.Username = user.Username; - updatingUser.Password = user.Password; - updatingUser.Email = user.Email; - updatingUser.IsAdmin = user.IsAdmin; - DbContext.SaveChangesAsync(); - return updatingUser.FromEntityToDTO(); - - } - - public UserDTO CreateUser(string username, string password, string email, bool isAdmin) - { - var newUserEntity = new UserDTO - { - Username = username, - Password = password, - Email = email, - IsAdmin = isAdmin - }; - DbContext.Users.Add(newUserEntity.FromDTOToEntity()); - DbContext.SaveChangesAsync(); - return newUserEntity; - - } - } -} diff --git a/API_SQLuedo/TestConsoleAPI/Program.cs b/API_SQLuedo/TestConsoleAPI/Program.cs index 9243568..a3b4275 100644 --- a/API_SQLuedo/TestConsoleAPI/Program.cs +++ b/API_SQLuedo/TestConsoleAPI/Program.cs @@ -13,7 +13,7 @@ using Model.OrderCriteria; using Service_LessonDataService = DbDataManager.Service.LessonDataService; using Service_ParagraphDataService = DbDataManager.Service.ParagraphDataService; using Service_SuccessDataService = DbDataManager.Service.SuccessDataService; -using UserDataService = Shared.UserDataService; +using Service_UserDataService = DbDataManager.Service.UserDataService; var connection = new SqliteConnection("DataSource=:memory:"); connection.Open(); @@ -30,13 +30,16 @@ ILogger successLogger = factory.CreateLogger Date: Fri, 15 Mar 2024 17:16:01 +0100 Subject: [PATCH 17/21] =?UTF-8?q?Suppression=20d'interfaces=20typ=C3=A9s?= =?UTF-8?q?=20pour=20rien?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- API_SQLuedo/Shared/IInquiryDataService.cs | 14 -------------- API_SQLuedo/Shared/ILessonDataService.cs | 15 --------------- API_SQLuedo/Shared/IParagraphDataService.cs | 14 -------------- API_SQLuedo/Shared/ISuccessDataService.cs | 14 -------------- API_SQLuedo/Shared/IUserDataService.cs | 14 -------------- 5 files changed, 71 deletions(-) delete mode 100644 API_SQLuedo/Shared/IInquiryDataService.cs delete mode 100644 API_SQLuedo/Shared/ILessonDataService.cs delete mode 100644 API_SQLuedo/Shared/IParagraphDataService.cs delete mode 100644 API_SQLuedo/Shared/ISuccessDataService.cs delete mode 100644 API_SQLuedo/Shared/IUserDataService.cs diff --git a/API_SQLuedo/Shared/IInquiryDataService.cs b/API_SQLuedo/Shared/IInquiryDataService.cs deleted file mode 100644 index 79085f6..0000000 --- a/API_SQLuedo/Shared/IInquiryDataService.cs +++ /dev/null @@ -1,14 +0,0 @@ -using Dto; -using Model.OrderCriteria; - -namespace Shared; - -public interface IInquiryDataService : IInquiryService -{ - public IEnumerable GetInquiries(int page, int number, InquiryOrderCriteria orderCriteria); - public InquiryDTO GetInquiryById(int id); - public InquiryDTO GetInquiryByTitle(string title); - public bool DeleteInquiry(int id); - public InquiryDTO UpdateInquiry(int id, InquiryDTO inquiry); - public InquiryDTO CreateInquiry(string title, string description, bool isUser); -} \ No newline at end of file diff --git a/API_SQLuedo/Shared/ILessonDataService.cs b/API_SQLuedo/Shared/ILessonDataService.cs deleted file mode 100644 index eb16c98..0000000 --- a/API_SQLuedo/Shared/ILessonDataService.cs +++ /dev/null @@ -1,15 +0,0 @@ -using Dto; -using Model.OrderCriteria; - -namespace Shared; - -public interface ILessonDataService : ILessonService -{ - public IEnumerable GetLessons(int page, int number, LessonOrderCriteria orderCriteria); - public LessonDTO GetLessonById(int id); - public LessonDTO GetLessonByTitle(string title); - public bool DeleteLesson(int id); - public LessonDTO UpdateLesson(int id, LessonDTO lesson); - public LessonDTO CreateLesson(string title, string lastPublisher, DateOnly? lastEdit); - -} \ No newline at end of file diff --git a/API_SQLuedo/Shared/IParagraphDataService.cs b/API_SQLuedo/Shared/IParagraphDataService.cs deleted file mode 100644 index 1919860..0000000 --- a/API_SQLuedo/Shared/IParagraphDataService.cs +++ /dev/null @@ -1,14 +0,0 @@ -using Dto; -using Model.OrderCriteria; - -namespace Shared; - -public interface IParagraphDataService : IParagraphService -{ - public IEnumerable GetParagraphs(int page, int number, ParagraphOrderCriteria orderCriteria); - public ParagraphDTO GetParagraphById(int id); - public ParagraphDTO GetParagraphByTitle(string title); - public bool DeleteParagraph(int id); - public ParagraphDTO UpdateParagraph(int id, ParagraphDTO paragraph); - public ParagraphDTO CreateParagraph(string title, string content, string info, string query, string comment, int lessonId); -} \ No newline at end of file diff --git a/API_SQLuedo/Shared/ISuccessDataService.cs b/API_SQLuedo/Shared/ISuccessDataService.cs deleted file mode 100644 index 701024d..0000000 --- a/API_SQLuedo/Shared/ISuccessDataService.cs +++ /dev/null @@ -1,14 +0,0 @@ -using Dto; -using Model.OrderCriteria; - -namespace Shared; - -public interface ISuccessDataService : ISuccessService -{ - public IEnumerable GetSuccesses(int page, int number, SuccessOrderCriteria orderCriteria); - public SuccessDTO GetSuccessByUserId(int id); - public SuccessDTO GetSuccessByInquiryId(int id); - public bool DeleteSuccess(int id); - public SuccessDTO UpdateSuccess(int id, SuccessDTO success); - public SuccessDTO CreateSuccess(int userId, int inquiryId, bool isFinished); -} \ No newline at end of file diff --git a/API_SQLuedo/Shared/IUserDataService.cs b/API_SQLuedo/Shared/IUserDataService.cs deleted file mode 100644 index 1e615a6..0000000 --- a/API_SQLuedo/Shared/IUserDataService.cs +++ /dev/null @@ -1,14 +0,0 @@ -using Dto; -using Model.OrderCriteria; - -namespace Shared; - -public interface IUserDataService : IUserService -{ - public IEnumerable GetUsers(int page, int number, UserOrderCriteria orderCriteria); - public UserDTO GetUserById(int id); - public UserDTO GetUserByUsername(string username); - public bool DeleteUser(int id); - public UserDTO UpdateUser(int id, UserDTO user); - public UserDTO CreateUser(string username, string password, string email, bool isAdmin); -} \ No newline at end of file From 241802f3d587d494580a5287cf0606017792c07a Mon Sep 17 00:00:00 2001 From: clchieu Date: Fri, 15 Mar 2024 17:37:30 +0100 Subject: [PATCH 18/21] Formatage du code --- .../API/Controllers/InquiriesController.cs | 17 ++++-- .../API/Controllers/LessonsController.cs | 16 ++++-- .../API/Controllers/ParagraphsController.cs | 53 ++++++++++++------- .../API/Controllers/SuccessesController.cs | 53 ++++++++++++------- API_SQLuedo/API/Controllers/UserController.cs | 2 +- .../API/Service/ParagraphDataServiceAPI.cs | 9 ++-- API_SQLuedo/API/WebAPIDbContext.cs | 6 ++- API_SQLuedo/DbContextLib/UserDbContext.cs | 9 +++- .../Service/InquiryDataService.cs | 9 ++-- .../Service/LessonDataService.cs | 9 ++-- .../Service/ParagraphDataService.cs | 13 ++--- .../Service/SuccessDataService.cs | 9 ++-- .../DbDataManager/Service/UserDataService.cs | 10 ++-- API_SQLuedo/Dto/InquiryDTO.cs | 2 +- API_SQLuedo/Dto/InquiryTableDTO.cs | 5 +- API_SQLuedo/Dto/LessonDTO.cs | 5 +- API_SQLuedo/Dto/NotepadDTO.cs | 5 +- API_SQLuedo/Dto/ParagraphDTO.cs | 12 ++--- API_SQLuedo/Dto/SolutionDTO.cs | 13 +++-- API_SQLuedo/Dto/SuccessDTO.cs | 4 +- API_SQLuedo/Dto/UserDTO.cs | 5 +- .../EntityFramework/BlackListEntity.cs | 9 ++-- .../EntityFramework/InquiryTableEntity.cs | 6 ++- API_SQLuedo/EntityFramework/LessonEntity.cs | 4 +- API_SQLuedo/EntityFramework/NotepadEntity.cs | 11 ++-- API_SQLuedo/EntityFramework/SolutionEntity.cs | 19 +++++-- API_SQLuedo/EntityFramework/SuccessEntity.cs | 10 ++-- API_SQLuedo/Model/Inquiry.cs | 4 +- API_SQLuedo/Model/InquiryTable.cs | 6 ++- API_SQLuedo/Model/Notepad.cs | 7 ++- .../OrderCriteria/InquiryOrderCriteria.cs | 5 +- .../OrderCriteria/LessonOrderCriteria.cs | 5 +- .../OrderCriteria/ParagraphOrderCriteria.cs | 7 ++- .../OrderCriteria/SuccessOrderCriteria.cs | 5 +- .../Model/OrderCriteria/UserOrderCriteria.cs | 6 ++- API_SQLuedo/Model/Solution.cs | 13 +++-- API_SQLuedo/Model/Success.cs | 4 +- API_SQLuedo/Model/User.cs | 5 +- API_SQLuedo/Shared/IParagraphService.cs | 4 +- .../StubbedContextLib/StubbedContext.cs | 4 +- API_SQLuedo/TestAPI/UnitTest1.cs | 1 - API_SQLuedo/TestConsoleEf/Program.cs | 4 +- .../TestEF/EntitiesTests/TestInquiryEntity.cs | 18 +++---- .../EntitiesTests/TestInquiryTableEntity.cs | 30 +++++------ .../TestEF/EntitiesTests/TestLessonEntity.cs | 20 +++---- .../TestEF/EntitiesTests/TestNotepadEntity.cs | 38 ++++++------- .../EntitiesTests/TestParagraphEntity.cs | 28 +++++----- .../TestEF/EntitiesTests/TestSuccessEntity.cs | 24 ++++----- .../TestEF/EntitiesTests/TestUserEntity.cs | 11 ++-- 49 files changed, 359 insertions(+), 215 deletions(-) diff --git a/API_SQLuedo/API/Controllers/InquiriesController.cs b/API_SQLuedo/API/Controllers/InquiriesController.cs index 25977ab..daa748a 100644 --- a/API_SQLuedo/API/Controllers/InquiriesController.cs +++ b/API_SQLuedo/API/Controllers/InquiriesController.cs @@ -16,6 +16,7 @@ namespace API.Controllers private readonly IInquiryService _inquiryDataService; private readonly ILogger _logger; + public InquiriesController(IInquiryService inquiryDataService, ILogger logger) { _inquiryDataService = inquiryDataService; @@ -33,6 +34,7 @@ namespace API.Controllers _logger.LogError("[ERREUR] Aucune enquête trouvée."); return StatusCode(204); } + _logger.LogInformation("[INFORMATION] {nb} Enquête(s) trouvée(s)", nbInquiry); return Ok(_inquiryDataService.GetInquiries(page, number, orderCriteria)); } @@ -87,7 +89,6 @@ namespace API.Controllers _logger.LogError("[ERREUR] Aucune enquête trouvée avec l'id {id}.", id); return NotFound(); } - } [HttpPost] @@ -99,8 +100,12 @@ namespace API.Controllers { return BadRequest(); } - _logger.LogInformation("[INFORMATION] Une enquête a été créé : title - {title}, description - {description}, isUser - {isUser}", dto.Title, dto.Description, dto.IsUser); - return Created(nameof(GetInquiries), _inquiryDataService.CreateInquiry(dto.Title, dto.Description, dto.IsUser)); + + _logger.LogInformation( + "[INFORMATION] Une enquête a été créé : title - {title}, description - {description}, isUser - {isUser}", + dto.Title, dto.Description, dto.IsUser); + return Created(nameof(GetInquiries), + _inquiryDataService.CreateInquiry(dto.Title, dto.Description, dto.IsUser)); } [HttpPut("inquiry/{id}")] @@ -114,16 +119,20 @@ namespace API.Controllers _logger.LogError("[ERREUR] Problème ID - La mise à jour de l'enquête avec l'id {id} a échouée.", id); return BadRequest(); } + if (!ModelState.IsValid) { - _logger.LogError("[ERREUR] Problème controlleur - La mise à jour de l'enquête avec l'id {id} a échouée.", id); + _logger.LogError( + "[ERREUR] Problème controlleur - La mise à jour de l'enquête avec l'id {id} a échouée.", id); return BadRequest(); } + if (inquiryDTO != null) { _logger.LogInformation("[INFORMATION] La mise à jour de l'enquête avec l'id {id} a été effectuée", id); return Ok(_inquiryDataService.UpdateInquiry(id, inquiryDTO)); } + _logger.LogError("[ERREUR] Aucune enquête trouvée avec l'id {id}.", id); return NotFound(); } diff --git a/API_SQLuedo/API/Controllers/LessonsController.cs b/API_SQLuedo/API/Controllers/LessonsController.cs index ba99163..eae7eb9 100644 --- a/API_SQLuedo/API/Controllers/LessonsController.cs +++ b/API_SQLuedo/API/Controllers/LessonsController.cs @@ -34,6 +34,7 @@ namespace API.Controllers _logger.LogError("[ERREUR] Aucune leçon trouvée."); return StatusCode(204); } + _logger.LogInformation("[INFORMATION] {nb} Leçon(s) trouvée(s)", nbLesson); return Ok(_lessonDataService.GetLessons(page, number, orderCriteria)); } @@ -88,7 +89,6 @@ namespace API.Controllers _logger.LogError("[ERREUR] Aucune leçon trouvée avec l'id {id}.", id); return NotFound(); } - } [HttpPost] @@ -100,8 +100,12 @@ namespace API.Controllers { return BadRequest(); } - _logger.LogInformation("[INFORMATION] Une leçon a été créé : title - {title}, lastPublisher - {publisher}, lastEdit - {lastEdit}", dto.Title, dto.LastPublisher, dto.LastEdit); - return Created(nameof(GetLessons), _lessonDataService.CreateLesson(dto.Title, dto.LastPublisher, dto.LastEdit)); + + _logger.LogInformation( + "[INFORMATION] Une leçon a été créé : title - {title}, lastPublisher - {publisher}, lastEdit - {lastEdit}", + dto.Title, dto.LastPublisher, dto.LastEdit); + return Created(nameof(GetLessons), + _lessonDataService.CreateLesson(dto.Title, dto.LastPublisher, dto.LastEdit)); } [HttpPut("lesson/{id}")] @@ -115,16 +119,20 @@ namespace API.Controllers _logger.LogError("[ERREUR] Problème ID - La mise à jour de la leçon avec l'id {id} a échouée.", id); return BadRequest(); } + if (!ModelState.IsValid) { - _logger.LogError("[ERREUR] Problème controlleur - La mise à jour de la leçon avec l'id {id} a échouée.", id); + _logger.LogError("[ERREUR] Problème controlleur - La mise à jour de la leçon avec l'id {id} a échouée.", + id); return BadRequest(); } + if (lessonDTO != null) { _logger.LogInformation("[INFORMATION] La mise à jour de la leçon avec l'id {id} a été effectuée", id); return Ok(_lessonDataService.UpdateLesson(id, lessonDTO)); } + _logger.LogError("[ERREUR] Aucune leçon trouvée avec l'id {id}.", id); return NotFound(); } diff --git a/API_SQLuedo/API/Controllers/ParagraphsController.cs b/API_SQLuedo/API/Controllers/ParagraphsController.cs index 9be8fd9..7d648ea 100644 --- a/API_SQLuedo/API/Controllers/ParagraphsController.cs +++ b/API_SQLuedo/API/Controllers/ParagraphsController.cs @@ -17,7 +17,8 @@ namespace API.Controllers private readonly ILogger _logger; - public ParagraphsController(IParagraphService paragraphDataService, ILogger logger) + public ParagraphsController(IParagraphService paragraphDataService, + ILogger logger) { _paragraphDataService = paragraphDataService; _logger = logger; @@ -26,14 +27,15 @@ namespace API.Controllers [HttpGet("paragraphs/{page}/{number}/{orderCriteria}")] [ProducesResponseType(typeof(ParagraphDTO), 200)] [ProducesResponseType(typeof(string), 204)] - public IActionResult GetParagraphs(int page, int number, ParagraphOrderCriteria orderCriteria) + public IActionResult GetParagraphs(int page, int number, ParagraphOrderCriteria orderCriteria) { - var nbParagraph = ( _paragraphDataService.GetParagraphs(page, number, orderCriteria)).ToList().Count(); - if(nbParagraph == 0) + var nbParagraph = (_paragraphDataService.GetParagraphs(page, number, orderCriteria)).ToList().Count(); + if (nbParagraph == 0) { _logger.LogError("[ERREUR] Aucun paragraphe trouvé."); return StatusCode(204); } + _logger.LogInformation("[INFORMATION] {nb} Paragraphe(s) trouvé(s)", nbParagraph); return Ok(_paragraphDataService.GetParagraphs(page, number, orderCriteria)); } @@ -47,7 +49,8 @@ namespace API.Controllers { _logger.LogInformation("[INFORMATION] Le paragraphe avec l'id {id} a été trouvé.", id); return Ok(_paragraphDataService.GetParagraphById(id)); - } catch (ArgumentException) + } + catch (ArgumentException) { _logger.LogError("[ERREUR] Aucun paragraphe trouvé avec l'id {id}.", id); return NotFound(); @@ -63,12 +66,12 @@ namespace API.Controllers { _logger.LogInformation("[INFORMATION] Le paragraphe avec le titre {title} a été trouvé.", title); return Ok(_paragraphDataService.GetParagraphByTitle(title)); - }catch (ArgumentException) + } + catch (ArgumentException) { _logger.LogError("[ERREUR] Aucun paragraphe trouvé avec le titre {title}.", title); return NotFound(); } - } [HttpDelete("paragraph/{id}")] @@ -77,16 +80,16 @@ namespace API.Controllers public IActionResult DeleteParagraph(int id) { var success = _paragraphDataService.DeleteParagraph(id); - if(success) + if (success) { _logger.LogInformation("[INFORMATION] Le paragraphe avec l'id {id} a été supprimé.", id); return Ok(_paragraphDataService.DeleteParagraph(id)); - } else + } + else { _logger.LogError("[ERREUR] Aucun paragraphe trouvé avec l'id {id}.", id); - return NotFound(); + return NotFound(); } - } [HttpPost] @@ -94,12 +97,18 @@ namespace API.Controllers [ProducesResponseType(typeof(string), 400)] public IActionResult CreateParagraph([FromBody] ParagraphDTO dto) { - if (dto.Title == null || dto.Content == null || dto.Info == null || dto.Query == null || dto.Comment == null) + if (dto.Title == null || dto.Content == null || dto.Info == null || dto.Query == null || + dto.Comment == null) { return BadRequest(); } - _logger.LogInformation("[INFORMATION] Un paragraphe a été créé : title - {title}, content - {content}, info - {info}, query - {query}, comment - {comment}", dto.Title, dto.Content, dto.Info, dto.Query, dto.Comment); - return Created(nameof(GetParagraphs), _paragraphDataService.CreateParagraph(dto.Title, dto.Content, dto.Info, dto.Query, dto.Comment, dto.LessonId)); + + _logger.LogInformation( + "[INFORMATION] Un paragraphe a été créé : title - {title}, content - {content}, info - {info}, query - {query}, comment - {comment}", + dto.Title, dto.Content, dto.Info, dto.Query, dto.Comment); + return Created(nameof(GetParagraphs), + _paragraphDataService.CreateParagraph(dto.Title, dto.Content, dto.Info, dto.Query, dto.Comment, + dto.LessonId)); } [HttpPut("paragraph/{id}")] @@ -108,23 +117,27 @@ namespace API.Controllers [ProducesResponseType(typeof(string), 404)] public IActionResult UpdateParagraph(int id, [FromBody] ParagraphDTO paragraphDTO) { - if(id != paragraphDTO.Id) + if (id != paragraphDTO.Id) { _logger.LogError("[ERREUR] Problème ID - La mise à jour du paragraphe avec l'id {id} a échouée.", id); return BadRequest(); } - if(!ModelState.IsValid) + + if (!ModelState.IsValid) { - _logger.LogError("[ERREUR] Problème controlleur - La mise à jour du paragraphe avec l'id {id} a échouée.", id); + _logger.LogError( + "[ERREUR] Problème controlleur - La mise à jour du paragraphe avec l'id {id} a échouée.", id); return BadRequest(); } - if(paragraphDTO != null) + + if (paragraphDTO != null) { _logger.LogInformation("[INFORMATION] La mise à jour du paragraphe avec l'id {id} a été effectuée", id); return Ok(_paragraphDataService.UpdateParagraph(id, paragraphDTO)); } + _logger.LogError("[ERREUR] Aucun paragraphe trouvé avec l'id {id}.", id); - return NotFound(); + return NotFound(); } } -} +} \ No newline at end of file diff --git a/API_SQLuedo/API/Controllers/SuccessesController.cs b/API_SQLuedo/API/Controllers/SuccessesController.cs index a399979..28b0ddc 100644 --- a/API_SQLuedo/API/Controllers/SuccessesController.cs +++ b/API_SQLuedo/API/Controllers/SuccessesController.cs @@ -26,14 +26,15 @@ namespace API.Controllers [HttpGet("successes/{page}/{number}/{orderCriteria}")] [ProducesResponseType(typeof(SuccessDTO), 200)] [ProducesResponseType(typeof(string), 204)] - public IActionResult GetSuccesses(int page, int number, SuccessOrderCriteria orderCriteria) + public IActionResult GetSuccesses(int page, int number, SuccessOrderCriteria orderCriteria) { var nbUser = (_successDataService.GetSuccesses(page, number, orderCriteria)).ToList().Count(); - if(nbUser == 0) + if (nbUser == 0) { _logger.LogError("[ERREUR] Aucun utilisateur trouvé."); return StatusCode(204); } + _logger.LogInformation("[INFORMATION] {nb} Utilisateur(s) trouvé(s)", nbUser); return Ok(_successDataService.GetSuccesses(page, number, orderCriteria)); } @@ -47,7 +48,8 @@ namespace API.Controllers { _logger.LogInformation("[INFORMATION] Le succès avec l'id de l'utilisateur {id} a été trouvé.", userId); return Ok(_successDataService.GetSuccessByUserId(userId)); - } catch (ArgumentException) + } + catch (ArgumentException) { _logger.LogError("[ERREUR] Aucun utilisateur trouvé avec l'id de l'utilisateur {id}.", userId); return NotFound(); @@ -61,14 +63,15 @@ namespace API.Controllers { try { - _logger.LogInformation("[INFORMATION] Utilisateur avec l'id de l'enquête {inquiryId} a été trouvé.", inquiryId); + _logger.LogInformation("[INFORMATION] Utilisateur avec l'id de l'enquête {inquiryId} a été trouvé.", + inquiryId); return Ok(_successDataService.GetSuccessByInquiryId(inquiryId)); - }catch (ArgumentException) + } + catch (ArgumentException) { _logger.LogError("[ERREUR] Aucun utilisateur trouvé avec l'id de l'enquête {inquiryId}.", inquiryId); return NotFound(); } - } [HttpDelete("success/{id}")] @@ -77,16 +80,16 @@ namespace API.Controllers public IActionResult DeleteSuccess(int id) { var success = _successDataService.DeleteSuccess(id); - if(success) + if (success) { _logger.LogInformation("[INFORMATION] Le succès avec l'id {id} a été supprimé.", id); return Ok(_successDataService.DeleteSuccess(id)); - } else + } + else { _logger.LogError("[ERREUR] Aucun succès trouvé avec l'id {id}.", id); - return NotFound(); + return NotFound(); } - } [HttpPost] @@ -98,8 +101,11 @@ namespace API.Controllers { return BadRequest(); }*/ - _logger.LogInformation("[INFORMATION] Un succès a été créé : userId - {userId}, inquiryId - {inquiryId}, isFinished - {isFinished}", dto.UserId, dto.InquiryId, dto.IsFinished); - return Created(nameof(GetSuccesses), _successDataService.CreateSuccess(dto.UserId, dto.InquiryId, dto.IsFinished)); + _logger.LogInformation( + "[INFORMATION] Un succès a été créé : userId - {userId}, inquiryId - {inquiryId}, isFinished - {isFinished}", + dto.UserId, dto.InquiryId, dto.IsFinished); + return Created(nameof(GetSuccesses), + _successDataService.CreateSuccess(dto.UserId, dto.InquiryId, dto.IsFinished)); } [HttpPut("success/{id}")] @@ -108,23 +114,30 @@ namespace API.Controllers [ProducesResponseType(typeof(string), 404)] public IActionResult UpdateSuccess(int id, [FromBody] SuccessDTO successDTO) { - if(id != successDTO.UserId) + if (id != successDTO.UserId) { - _logger.LogError("[ERREUR] Problème ID - La mise à jour du succès avec l'id de l'utilisateur {id} a échouée.", id); + _logger.LogError( + "[ERREUR] Problème ID - La mise à jour du succès avec l'id de l'utilisateur {id} a échouée.", id); return BadRequest(); } - if(!ModelState.IsValid) + + if (!ModelState.IsValid) { - _logger.LogError("[ERREUR] Problème controlleur - La mise à jour du succès avec l'id de l'utilisateur {id} a échouée.", id); + _logger.LogError( + "[ERREUR] Problème controlleur - La mise à jour du succès avec l'id de l'utilisateur {id} a échouée.", + id); return BadRequest(); } - if(successDTO != null) + + if (successDTO != null) { - _logger.LogInformation("[INFORMATION] La mise à jour du succès avec l'id de l'utilisateur {id} a été effectuée", id); + _logger.LogInformation( + "[INFORMATION] La mise à jour du succès avec l'id de l'utilisateur {id} a été effectuée", id); return Ok(_successDataService.UpdateSuccess(id, successDTO)); } + _logger.LogError("[ERREUR] Aucun succès trouvé avec l'id de l'utilisateur {id}.", id); - return NotFound(); + return NotFound(); } } -} +} \ No newline at end of file diff --git a/API_SQLuedo/API/Controllers/UserController.cs b/API_SQLuedo/API/Controllers/UserController.cs index 32dbe70..11717a9 100644 --- a/API_SQLuedo/API/Controllers/UserController.cs +++ b/API_SQLuedo/API/Controllers/UserController.cs @@ -72,7 +72,7 @@ namespace API.Controllers if (success) { logger.LogInformation("[INFORMATION] L'utilisateur avec l'id {id} a été supprimé.", id); - return Ok(userService.DeleteUser(id)); + return Ok(); } else { diff --git a/API_SQLuedo/API/Service/ParagraphDataServiceAPI.cs b/API_SQLuedo/API/Service/ParagraphDataServiceAPI.cs index af09a6b..3892c65 100644 --- a/API_SQLuedo/API/Service/ParagraphDataServiceAPI.cs +++ b/API_SQLuedo/API/Service/ParagraphDataServiceAPI.cs @@ -6,7 +6,8 @@ using Shared.Mapper; namespace API.Service; -public class ParagraphDataServiceApi(IParagraphService paragraphService) : IParagraphService +public class ParagraphDataServiceApi(IParagraphService paragraphService) + : IParagraphService { public IEnumerable GetParagraphs(int page, int number, ParagraphOrderCriteria orderCriteria) { @@ -16,13 +17,15 @@ public class ParagraphDataServiceApi(IParagraphService paragrap public ParagraphDTO GetParagraphById(int id) => paragraphService.GetParagraphById(id).FromEntityToDTO(); - public ParagraphDTO GetParagraphByTitle(string title) => paragraphService.GetParagraphByTitle(title).FromEntityToDTO(); + public ParagraphDTO GetParagraphByTitle(string title) => + paragraphService.GetParagraphByTitle(title).FromEntityToDTO(); public bool DeleteParagraph(int id) => paragraphService.DeleteParagraph(id); public ParagraphDTO UpdateParagraph(int id, ParagraphDTO paragraph) => paragraphService.UpdateParagraph(id, paragraph.FromDTOToEntity()).FromEntityToDTO(); - public ParagraphDTO CreateParagraph(string title, string content, string info, string query, string comment, int lessonId) => + public ParagraphDTO CreateParagraph(string title, string content, string info, string query, string comment, + int lessonId) => paragraphService.CreateParagraph(title, content, info, query, comment, lessonId).FromEntityToDTO(); } \ No newline at end of file diff --git a/API_SQLuedo/API/WebAPIDbContext.cs b/API_SQLuedo/API/WebAPIDbContext.cs index afc8996..9a060e7 100644 --- a/API_SQLuedo/API/WebAPIDbContext.cs +++ b/API_SQLuedo/API/WebAPIDbContext.cs @@ -6,6 +6,8 @@ namespace API { public class WebAPIDbContext : IdentityDbContext { - public WebAPIDbContext(DbContextOptions options) : base(options) { } + public WebAPIDbContext(DbContextOptions options) : base(options) + { + } } -} +} \ No newline at end of file diff --git a/API_SQLuedo/DbContextLib/UserDbContext.cs b/API_SQLuedo/DbContextLib/UserDbContext.cs index 0bcf02a..7b48173 100644 --- a/API_SQLuedo/DbContextLib/UserDbContext.cs +++ b/API_SQLuedo/DbContextLib/UserDbContext.cs @@ -17,13 +17,18 @@ namespace DbContextLib public DbSet Solutions { get; set; } public DbSet Successes { get; set; } public DbSet Notepads { get; set; } - public UserDbContext(DbContextOptions options) : base(options) { } + + public UserDbContext(DbContextOptions options) : base(options) + { + } + protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) { if (!optionsBuilder.IsConfigured) { optionsBuilder.UseNpgsql("Host=localhost;Database=SQLuedo;Username=admin;Password=motdepasse"); } + base.OnConfiguring(optionsBuilder); } @@ -36,4 +41,4 @@ namespace DbContextLib base.OnModelCreating(modelBuilder); } } -} +} \ No newline at end of file diff --git a/API_SQLuedo/DbDataManager/Service/InquiryDataService.cs b/API_SQLuedo/DbDataManager/Service/InquiryDataService.cs index 8244c63..f682367 100644 --- a/API_SQLuedo/DbDataManager/Service/InquiryDataService.cs +++ b/API_SQLuedo/DbDataManager/Service/InquiryDataService.cs @@ -91,9 +91,12 @@ public class InquiryDataService : IInquiryService throw new ArgumentException("Impossible de trouver l'enquête", nameof(id)); } - updatingInquiry.Title = inquiry.Title; - updatingInquiry.Description = inquiry.Description; - updatingInquiry.IsUser = inquiry.IsUser; + foreach (var pptt in typeof(InquiryEntity).GetProperties() + .Where(p => p.CanWrite && p.Name != nameof(InquiryEntity.Id))) + { + pptt.SetValue(updatingInquiry, pptt.GetValue(inquiry)); + } + DbContext.SaveChangesAsync(); return updatingInquiry; } diff --git a/API_SQLuedo/DbDataManager/Service/LessonDataService.cs b/API_SQLuedo/DbDataManager/Service/LessonDataService.cs index 41838ad..024096b 100644 --- a/API_SQLuedo/DbDataManager/Service/LessonDataService.cs +++ b/API_SQLuedo/DbDataManager/Service/LessonDataService.cs @@ -83,9 +83,12 @@ public class LessonDataService : ILessonService throw new ArgumentException("Impossible de trouver la leçon", nameof(id)); } - updatingLesson.Title = lesson.Title; - updatingLesson.LastPublisher = lesson.LastPublisher; - updatingLesson.LastEdit = lesson.LastEdit; + foreach (var pptt in typeof(LessonEntity).GetProperties() + .Where(p => p.CanWrite && p.Name != nameof(LessonEntity.Id))) + { + pptt.SetValue(updatingLesson, pptt.GetValue(lesson)); + } + DbContext.SaveChangesAsync(); return updatingLesson; } diff --git a/API_SQLuedo/DbDataManager/Service/ParagraphDataService.cs b/API_SQLuedo/DbDataManager/Service/ParagraphDataService.cs index d50e0fb..ddf2d34 100644 --- a/API_SQLuedo/DbDataManager/Service/ParagraphDataService.cs +++ b/API_SQLuedo/DbDataManager/Service/ParagraphDataService.cs @@ -81,7 +81,7 @@ public class ParagraphDataService : IParagraphService return true; } - public ParagraphEntity UpdateParagraph(int id, ParagraphEntity paragraphDTO) + public ParagraphEntity UpdateParagraph(int id, ParagraphEntity paragraph) { var updatingParagraph = DbContext.Paragraphs.FirstOrDefault(p => p.Id == id); if (updatingParagraph == null) @@ -89,11 +89,12 @@ public class ParagraphDataService : IParagraphService throw new ArgumentException("Impossible de trouver le paragraphe", nameof(id)); } - updatingParagraph.Title = paragraphDTO.Title; - updatingParagraph.Content = paragraphDTO.Content; - updatingParagraph.Info = paragraphDTO.Info; - updatingParagraph.Query = paragraphDTO.Query; - updatingParagraph.Comment = paragraphDTO.Comment; + foreach (var pptt in typeof(ParagraphEntity).GetProperties().Where(p => + p.CanWrite && p.Name != nameof(ParagraphEntity.Id) && p.Name != nameof(ParagraphEntity.LessonId))) + { + pptt.SetValue(updatingParagraph, pptt.GetValue(paragraph)); + } + DbContext.SaveChangesAsync(); return updatingParagraph; } diff --git a/API_SQLuedo/DbDataManager/Service/SuccessDataService.cs b/API_SQLuedo/DbDataManager/Service/SuccessDataService.cs index 22e3b2e..36335d3 100644 --- a/API_SQLuedo/DbDataManager/Service/SuccessDataService.cs +++ b/API_SQLuedo/DbDataManager/Service/SuccessDataService.cs @@ -83,9 +83,12 @@ public class SuccessDataService : ISuccessService throw new ArgumentException("Impossible de trouver le succès", nameof(id)); } - updatingSuccess.UserId = success.UserId; - updatingSuccess.InquiryId = success.InquiryId; - updatingSuccess.IsFinished = success.IsFinished; + foreach (var pptt in typeof(SuccessEntity).GetProperties().Where(p => + p.CanWrite && p.Name != nameof(SuccessEntity.UserId) && p.Name != nameof(SuccessEntity.InquiryId))) + { + pptt.SetValue(updatingSuccess, pptt.GetValue(success)); + } + DbContext.SaveChangesAsync(); return updatingSuccess; } diff --git a/API_SQLuedo/DbDataManager/Service/UserDataService.cs b/API_SQLuedo/DbDataManager/Service/UserDataService.cs index b3c30dd..0162348 100644 --- a/API_SQLuedo/DbDataManager/Service/UserDataService.cs +++ b/API_SQLuedo/DbDataManager/Service/UserDataService.cs @@ -85,10 +85,12 @@ public class UserDataService : IUserService throw new ArgumentException("Impossible de trouver l'utilisateur", nameof(id)); } - updatingUser.Username = user.Username; - updatingUser.Password = user.Password; - updatingUser.Email = user.Email; - updatingUser.IsAdmin = user.IsAdmin; + foreach (var pptt in typeof(UserEntity).GetProperties() + .Where(p => p.CanWrite && p.Name != nameof(UserEntity.Id))) + { + pptt.SetValue(updatingUser, pptt.GetValue(user)); + } + DbContext.SaveChangesAsync(); return updatingUser; } diff --git a/API_SQLuedo/Dto/InquiryDTO.cs b/API_SQLuedo/Dto/InquiryDTO.cs index 5a436ed..f3df8a3 100644 --- a/API_SQLuedo/Dto/InquiryDTO.cs +++ b/API_SQLuedo/Dto/InquiryDTO.cs @@ -2,7 +2,7 @@ public class InquiryDTO { - public int Id { get;} + public int Id { get; } public string Title { get; set; } diff --git a/API_SQLuedo/Dto/InquiryTableDTO.cs b/API_SQLuedo/Dto/InquiryTableDTO.cs index a636053..6c28790 100644 --- a/API_SQLuedo/Dto/InquiryTableDTO.cs +++ b/API_SQLuedo/Dto/InquiryTableDTO.cs @@ -2,12 +2,13 @@ public class InquiryTableDTO { - public int OwnerId { get; set; } public string DatabaseName { get; set; } public string ConnectionInfo { get; set; } - public InquiryTableDTO() { } + public InquiryTableDTO() + { + } public InquiryTableDTO(int ownerId, string databaseName, string connectionInfo) { diff --git a/API_SQLuedo/Dto/LessonDTO.cs b/API_SQLuedo/Dto/LessonDTO.cs index 8e70b4f..ab8008f 100644 --- a/API_SQLuedo/Dto/LessonDTO.cs +++ b/API_SQLuedo/Dto/LessonDTO.cs @@ -8,7 +8,10 @@ public class LessonDTO public DateOnly? LastEdit { get; set; } public ICollection Content { get; set; } = new List(); - public LessonDTO() { } + public LessonDTO() + { + } + public LessonDTO(int id, string title, string lastPublisher, DateOnly? lastEdit) { Id = id; diff --git a/API_SQLuedo/Dto/NotepadDTO.cs b/API_SQLuedo/Dto/NotepadDTO.cs index c49e155..0c14762 100644 --- a/API_SQLuedo/Dto/NotepadDTO.cs +++ b/API_SQLuedo/Dto/NotepadDTO.cs @@ -7,7 +7,9 @@ public class NotepadDTO public int InquiryId { get; set; } public string Notes { get; set; } - public NotepadDTO() { } + public NotepadDTO() + { + } public NotepadDTO(int id, int userId, int inquiryId, string notes) { @@ -16,6 +18,7 @@ public class NotepadDTO InquiryId = inquiryId; Notes = notes; } + public NotepadDTO(int userId, int inquiryId, string notes) { UserId = userId; diff --git a/API_SQLuedo/Dto/ParagraphDTO.cs b/API_SQLuedo/Dto/ParagraphDTO.cs index f6925dd..9e08d8f 100644 --- a/API_SQLuedo/Dto/ParagraphDTO.cs +++ b/API_SQLuedo/Dto/ParagraphDTO.cs @@ -19,7 +19,7 @@ public class ParagraphDTO : ContentLessonDTO Comment = comment; } - public ParagraphDTO(int id, string title, string content, string info, string query, string comment, int lessonId) : + public ParagraphDTO(int id, string title, string content, string info, string query, string comment, int lessonId) : base(id, content, title, lessonId) { @@ -29,9 +29,9 @@ public class ParagraphDTO : ContentLessonDTO Info = info; Query = query; Comment = comment; - } - - public ParagraphDTO() : base() - { - } + } + + public ParagraphDTO() : base() + { + } } \ No newline at end of file diff --git a/API_SQLuedo/Dto/SolutionDTO.cs b/API_SQLuedo/Dto/SolutionDTO.cs index b13daf6..e5087c2 100644 --- a/API_SQLuedo/Dto/SolutionDTO.cs +++ b/API_SQLuedo/Dto/SolutionDTO.cs @@ -8,8 +8,13 @@ public class SolutionDTO public string MurderPlace { get; set; } public string MurderWeapon { get; set; } public string Explanation { get; set; } - public SolutionDTO() { } - public SolutionDTO(int ownerId, string murdererFirstName, string murdererLastName, string murderPlace, string murderWeapon, string explanation) + + public SolutionDTO() + { + } + + public SolutionDTO(int ownerId, string murdererFirstName, string murdererLastName, string murderPlace, + string murderWeapon, string explanation) { OwnerId = ownerId; MurdererFirstName = murdererFirstName; @@ -18,7 +23,9 @@ public class SolutionDTO MurderWeapon = murderWeapon; Explanation = explanation; } - public SolutionDTO(string murdererFirstName, string murdererLastName, string murderPlace, string murderWeapon, string explanation) + + public SolutionDTO(string murdererFirstName, string murdererLastName, string murderPlace, string murderWeapon, + string explanation) { MurdererFirstName = murdererFirstName; MurdererLastName = murdererLastName; diff --git a/API_SQLuedo/Dto/SuccessDTO.cs b/API_SQLuedo/Dto/SuccessDTO.cs index 87c26a3..579f209 100644 --- a/API_SQLuedo/Dto/SuccessDTO.cs +++ b/API_SQLuedo/Dto/SuccessDTO.cs @@ -6,7 +6,9 @@ public class SuccessDTO public int InquiryId { get; set; } public bool IsFinished { get; set; } - public SuccessDTO() { } + public SuccessDTO() + { + } public SuccessDTO(int userId, int inquiryId, bool isFinished) { diff --git a/API_SQLuedo/Dto/UserDTO.cs b/API_SQLuedo/Dto/UserDTO.cs index b2553f5..85d6ac7 100644 --- a/API_SQLuedo/Dto/UserDTO.cs +++ b/API_SQLuedo/Dto/UserDTO.cs @@ -8,7 +8,10 @@ public class UserDTO public string Email { get; set; } public bool IsAdmin { get; set; } - public UserDTO() { } + public UserDTO() + { + } + public UserDTO(int id, string username, string password, string email, bool isAdmin) { Id = id; diff --git a/API_SQLuedo/EntityFramework/BlackListEntity.cs b/API_SQLuedo/EntityFramework/BlackListEntity.cs index e4b744b..8a2ce16 100644 --- a/API_SQLuedo/EntityFramework/BlackListEntity.cs +++ b/API_SQLuedo/EntityFramework/BlackListEntity.cs @@ -6,10 +6,13 @@ namespace Entities; [Table("BlackList")] public class BlackListEntity { - [Key] - public string Email { get; set; } + [Key] public string Email { get; set; } public DateOnly ExpirationDate { get; set; } - public BlackListEntity() { } + + public BlackListEntity() + { + } + public BlackListEntity(string email, DateOnly expirationDate) { Email = email; diff --git a/API_SQLuedo/EntityFramework/InquiryTableEntity.cs b/API_SQLuedo/EntityFramework/InquiryTableEntity.cs index c8798b9..3fe43db 100644 --- a/API_SQLuedo/EntityFramework/InquiryTableEntity.cs +++ b/API_SQLuedo/EntityFramework/InquiryTableEntity.cs @@ -11,16 +11,20 @@ public class InquiryTableEntity [DatabaseGenerated(DatabaseGeneratedOption.Identity)] [Required] public int OwnerId { get; set; } + public InquiryEntity Owner { get; set; } public string DatabaseName { get; set; } public string ConnectionInfo { get; set; } - public InquiryTableEntity() { } + public InquiryTableEntity() + { + } public InquiryTableEntity(int inquiryId) { OwnerId = inquiryId; } + public InquiryTableEntity(int inquiryId, string databaseName, string connectionInfo) { OwnerId = inquiryId; diff --git a/API_SQLuedo/EntityFramework/LessonEntity.cs b/API_SQLuedo/EntityFramework/LessonEntity.cs index 902465e..6bf5436 100644 --- a/API_SQLuedo/EntityFramework/LessonEntity.cs +++ b/API_SQLuedo/EntityFramework/LessonEntity.cs @@ -11,7 +11,9 @@ public class LessonEntity public DateOnly? LastEdit { get; set; } public ICollection Content { get; set; } = new List(); - public LessonEntity() { } + public LessonEntity() + { + } public LessonEntity(int id, string title, string lastPublisher, DateOnly? lastEdit) { diff --git a/API_SQLuedo/EntityFramework/NotepadEntity.cs b/API_SQLuedo/EntityFramework/NotepadEntity.cs index 0a3f9c9..da47cd9 100644 --- a/API_SQLuedo/EntityFramework/NotepadEntity.cs +++ b/API_SQLuedo/EntityFramework/NotepadEntity.cs @@ -7,16 +7,16 @@ public class NotepadEntity { public int Id { get; set; } - [ForeignKey(nameof(User))] - public int UserId { get; set; } + [ForeignKey(nameof(User))] public int UserId { get; set; } public UserEntity User { get; set; } - [ForeignKey(nameof(Inquiry))] - public int InquiryId { get; set; } + [ForeignKey(nameof(Inquiry))] public int InquiryId { get; set; } public InquiryEntity Inquiry { get; set; } public string Notes { get; set; } - public NotepadEntity() { } + public NotepadEntity() + { + } public NotepadEntity(int id, int userId, UserEntity user, int inquiryId, InquiryEntity inquiry, string notes) { @@ -27,6 +27,7 @@ public class NotepadEntity Inquiry = inquiry; Notes = notes; } + public NotepadEntity(int userId, UserEntity user, int inquiryId, InquiryEntity inquiry, string notes) { UserId = userId; diff --git a/API_SQLuedo/EntityFramework/SolutionEntity.cs b/API_SQLuedo/EntityFramework/SolutionEntity.cs index 8b57c1a..9f10225 100644 --- a/API_SQLuedo/EntityFramework/SolutionEntity.cs +++ b/API_SQLuedo/EntityFramework/SolutionEntity.cs @@ -11,18 +11,25 @@ public class SolutionEntity [DatabaseGenerated(DatabaseGeneratedOption.Identity)] [Required] public int OwnerId { get; set; } + public InquiryEntity? Owner { get; set; } public string? MurdererFirstName { get; set; } public string? MurdererLastName { get; set; } public string? MurderPlace { get; set; } public string? MurderWeapon { get; set; } public string? Explaination { get; set; } - public SolutionEntity() { } + + public SolutionEntity() + { + } + public SolutionEntity(int ownerId) { OwnerId = ownerId; } - public SolutionEntity(int ownerId, InquiryEntity? owner, string murdererFirstName, string murdererLastName, string murderPlace, string murderWeapon, string explaination) + + public SolutionEntity(int ownerId, InquiryEntity? owner, string murdererFirstName, string murdererLastName, + string murderPlace, string murderWeapon, string explaination) { OwnerId = ownerId; Owner = owner; @@ -32,7 +39,9 @@ public class SolutionEntity MurderWeapon = murderWeapon; Explaination = explaination; } - public SolutionEntity(InquiryEntity? owner, string murdererFirstName, string murdererLastName, string murderPlace, string murderWeapon, string explaination) + + public SolutionEntity(InquiryEntity? owner, string murdererFirstName, string murdererLastName, string murderPlace, + string murderWeapon, string explaination) { Owner = owner; MurdererFirstName = murdererFirstName; @@ -41,7 +50,9 @@ public class SolutionEntity MurderWeapon = murderWeapon; Explaination = explaination; } - public SolutionEntity(int ownerId, string murdererFirstName, string murdererLastName, string murderPlace, string murderWeapon, string explanation) + + public SolutionEntity(int ownerId, string murdererFirstName, string murdererLastName, string murderPlace, + string murderWeapon, string explanation) { OwnerId = ownerId; MurdererFirstName = murdererFirstName; diff --git a/API_SQLuedo/EntityFramework/SuccessEntity.cs b/API_SQLuedo/EntityFramework/SuccessEntity.cs index 10f21a9..4a69b11 100644 --- a/API_SQLuedo/EntityFramework/SuccessEntity.cs +++ b/API_SQLuedo/EntityFramework/SuccessEntity.cs @@ -5,16 +5,16 @@ namespace Entities; [Table("Success")] public class SuccessEntity { - [ForeignKey(nameof(User))] - public int UserId { get; set; } + [ForeignKey(nameof(User))] public int UserId { get; set; } public UserEntity User { get; set; } - [ForeignKey(nameof(Inquiry))] - public int InquiryId { get; set; } + [ForeignKey(nameof(Inquiry))] public int InquiryId { get; set; } public InquiryEntity Inquiry { get; set; } public bool IsFinished { get; set; } - public SuccessEntity() { } + public SuccessEntity() + { + } public SuccessEntity(int userId, UserEntity user, int inquiryId, InquiryEntity inquiry, bool isFinished) { diff --git a/API_SQLuedo/Model/Inquiry.cs b/API_SQLuedo/Model/Inquiry.cs index d2a805f..464d7df 100644 --- a/API_SQLuedo/Model/Inquiry.cs +++ b/API_SQLuedo/Model/Inquiry.cs @@ -7,7 +7,9 @@ public class Inquiry public string Description { get; set; } public bool IsUser { get; set; } - public Inquiry() { } + public Inquiry() + { + } public Inquiry(int id, string title, string description, bool isUser) { diff --git a/API_SQLuedo/Model/InquiryTable.cs b/API_SQLuedo/Model/InquiryTable.cs index 060702a..ecca3f4 100644 --- a/API_SQLuedo/Model/InquiryTable.cs +++ b/API_SQLuedo/Model/InquiryTable.cs @@ -6,12 +6,14 @@ public class InquiryTable public string DatabaseName { get; set; } public string ConnectionInfo { get; set; } - public InquiryTable() { } + public InquiryTable() + { + } + public InquiryTable(int inquiryId, string databaseName, string connectionInfo) { OwnerId = inquiryId; DatabaseName = databaseName; ConnectionInfo = connectionInfo; } - } \ No newline at end of file diff --git a/API_SQLuedo/Model/Notepad.cs b/API_SQLuedo/Model/Notepad.cs index ce91168..989990d 100644 --- a/API_SQLuedo/Model/Notepad.cs +++ b/API_SQLuedo/Model/Notepad.cs @@ -7,7 +7,9 @@ public class Notepad public int InquiryId { get; set; } public string Notes { get; set; } - public Notepad() { } + public Notepad() + { + } public Notepad(int id, int userId, int inquiryId, string notes) { @@ -16,7 +18,8 @@ public class Notepad InquiryId = inquiryId; Notes = notes; } - public Notepad(int userId, int inquiryId, string notes) + + public Notepad(int userId, int inquiryId, string notes) { UserId = userId; InquiryId = inquiryId; diff --git a/API_SQLuedo/Model/OrderCriteria/InquiryOrderCriteria.cs b/API_SQLuedo/Model/OrderCriteria/InquiryOrderCriteria.cs index bc40b5d..f800b0e 100644 --- a/API_SQLuedo/Model/OrderCriteria/InquiryOrderCriteria.cs +++ b/API_SQLuedo/Model/OrderCriteria/InquiryOrderCriteria.cs @@ -2,5 +2,8 @@ namespace Model.OrderCriteria; public enum InquiryOrderCriteria { - None, ByTitle, ByDescription, ByIsUser + None, + ByTitle, + ByDescription, + ByIsUser } \ No newline at end of file diff --git a/API_SQLuedo/Model/OrderCriteria/LessonOrderCriteria.cs b/API_SQLuedo/Model/OrderCriteria/LessonOrderCriteria.cs index 004879c..db06097 100644 --- a/API_SQLuedo/Model/OrderCriteria/LessonOrderCriteria.cs +++ b/API_SQLuedo/Model/OrderCriteria/LessonOrderCriteria.cs @@ -2,5 +2,8 @@ namespace Model.OrderCriteria; public enum LessonOrderCriteria { - None, ByTitle, ByLastPublisher, ByLastEdit + None, + ByTitle, + ByLastPublisher, + ByLastEdit } \ No newline at end of file diff --git a/API_SQLuedo/Model/OrderCriteria/ParagraphOrderCriteria.cs b/API_SQLuedo/Model/OrderCriteria/ParagraphOrderCriteria.cs index bd9cc93..5cdf11d 100644 --- a/API_SQLuedo/Model/OrderCriteria/ParagraphOrderCriteria.cs +++ b/API_SQLuedo/Model/OrderCriteria/ParagraphOrderCriteria.cs @@ -2,5 +2,10 @@ namespace Model.OrderCriteria; public enum ParagraphOrderCriteria { - None, ByTitle, ByContent, ByInfo, ByQuery, ByComment + None, + ByTitle, + ByContent, + ByInfo, + ByQuery, + ByComment } \ No newline at end of file diff --git a/API_SQLuedo/Model/OrderCriteria/SuccessOrderCriteria.cs b/API_SQLuedo/Model/OrderCriteria/SuccessOrderCriteria.cs index a2c8d76..34c8b46 100644 --- a/API_SQLuedo/Model/OrderCriteria/SuccessOrderCriteria.cs +++ b/API_SQLuedo/Model/OrderCriteria/SuccessOrderCriteria.cs @@ -2,5 +2,8 @@ namespace Model.OrderCriteria; public enum SuccessOrderCriteria { - None, ByUserId, ByInquiryId, ByIsFinished + None, + ByUserId, + ByInquiryId, + ByIsFinished } \ No newline at end of file diff --git a/API_SQLuedo/Model/OrderCriteria/UserOrderCriteria.cs b/API_SQLuedo/Model/OrderCriteria/UserOrderCriteria.cs index 42ab10c..c5b35b9 100644 --- a/API_SQLuedo/Model/OrderCriteria/UserOrderCriteria.cs +++ b/API_SQLuedo/Model/OrderCriteria/UserOrderCriteria.cs @@ -2,5 +2,9 @@ namespace Model.OrderCriteria; public enum UserOrderCriteria { - None, ById, ByUsername, ByEmail, ByIsAdmin + None, + ById, + ByUsername, + ByEmail, + ByIsAdmin } \ No newline at end of file diff --git a/API_SQLuedo/Model/Solution.cs b/API_SQLuedo/Model/Solution.cs index bee801b..8d167f8 100644 --- a/API_SQLuedo/Model/Solution.cs +++ b/API_SQLuedo/Model/Solution.cs @@ -8,8 +8,13 @@ public class Solution public string MurderPlace { get; set; } public string MurderWeapon { get; set; } public string Explanation { get; set; } - public Solution() { } - public Solution(int ownerId, string murdererFirstName, string murdererLastName, string murderPlace, string murderWeapon, string explanation) + + public Solution() + { + } + + public Solution(int ownerId, string murdererFirstName, string murdererLastName, string murderPlace, + string murderWeapon, string explanation) { OwnerId = ownerId; MurdererFirstName = murdererFirstName; @@ -18,7 +23,9 @@ public class Solution MurderWeapon = murderWeapon; Explanation = explanation; } - public Solution(string murdererFirstName, string murdererLastName, string murderPlace, string murderWeapon, string explanation) + + public Solution(string murdererFirstName, string murdererLastName, string murderPlace, string murderWeapon, + string explanation) { MurdererFirstName = murdererFirstName; MurdererLastName = murdererLastName; diff --git a/API_SQLuedo/Model/Success.cs b/API_SQLuedo/Model/Success.cs index 1301b0f..4d4cc09 100644 --- a/API_SQLuedo/Model/Success.cs +++ b/API_SQLuedo/Model/Success.cs @@ -6,7 +6,9 @@ public class Success public int InquiryId { get; set; } public bool IsFinished { get; set; } - public Success() { } + public Success() + { + } public Success(int userId, int inquiryId, bool isFinished) { diff --git a/API_SQLuedo/Model/User.cs b/API_SQLuedo/Model/User.cs index 8031378..88dff7f 100644 --- a/API_SQLuedo/Model/User.cs +++ b/API_SQLuedo/Model/User.cs @@ -8,7 +8,10 @@ public class User public string Email { get; set; } public bool IsAdmin { get; set; } - public User() { } + public User() + { + } + public User(int id, string username, string password, string email, bool isAdmin) { Id = id; diff --git a/API_SQLuedo/Shared/IParagraphService.cs b/API_SQLuedo/Shared/IParagraphService.cs index 7b59ede..aa2fe7a 100644 --- a/API_SQLuedo/Shared/IParagraphService.cs +++ b/API_SQLuedo/Shared/IParagraphService.cs @@ -9,6 +9,8 @@ namespace Shared public TParagraph GetParagraphByTitle(string title); public bool DeleteParagraph(int id); public TParagraph UpdateParagraph(int id, TParagraph paragraph); - public TParagraph CreateParagraph(string title, string content, string info, string query, string comment, int lessonId); + + public TParagraph CreateParagraph(string title, string content, string info, string query, string comment, + int lessonId); } } \ No newline at end of file diff --git a/API_SQLuedo/StubbedContextLib/StubbedContext.cs b/API_SQLuedo/StubbedContextLib/StubbedContext.cs index 925eb10..fec0d75 100644 --- a/API_SQLuedo/StubbedContextLib/StubbedContext.cs +++ b/API_SQLuedo/StubbedContextLib/StubbedContext.cs @@ -47,7 +47,7 @@ public class StubbedContext : UserDbContext prf: KeyDerivationPrf.HMACSHA256, iterationCount: 100000, numBytesRequested: 256 / 8)), "Victor.GABORIT@etu.uca.fr", true)); - + modelBuilder.Entity().HasData( new InquiryTableEntity(1, "Inquiry1", "Server=localhost;Database=Inquiry1;Trusted_Connection=True;MultipleActiveResultSets=true"), @@ -60,7 +60,7 @@ public class StubbedContext : UserDbContext new SolutionEntity(1, "Maxime", "Sapountzis", "La cuisine", "Le couteau", "Parce que c'est Maxime"), new SolutionEntity(2, "Johnny", "Ratton", "La cuisine", "Le couteau", "Parce que il est ra****"), new SolutionEntity(3, "Erwan", "Menager", "La salle de bain", "L'arachide", "Parce que c'est Erwan")); - + modelBuilder.Entity().HasData( new InquiryEntity(1, "L'enquête de la carotte", "La description de l'inquiry1", true), new InquiryEntity(2, "L'enquête sur les orang outan", "The new description", false), diff --git a/API_SQLuedo/TestAPI/UnitTest1.cs b/API_SQLuedo/TestAPI/UnitTest1.cs index c22e82f..161aaab 100644 --- a/API_SQLuedo/TestAPI/UnitTest1.cs +++ b/API_SQLuedo/TestAPI/UnitTest1.cs @@ -5,7 +5,6 @@ namespace TestAPI [Fact] public void Test1() { - } } } \ No newline at end of file diff --git a/API_SQLuedo/TestConsoleEf/Program.cs b/API_SQLuedo/TestConsoleEf/Program.cs index fb63a8f..7921b88 100644 --- a/API_SQLuedo/TestConsoleEf/Program.cs +++ b/API_SQLuedo/TestConsoleEf/Program.cs @@ -159,10 +159,10 @@ using (var db = new StubbedContext(options)) // Affichage de la solution de l'enquete sur les orang outan Console.WriteLine("\nAffichage de la solution de l'enquete sur les orang outan"); - + var sol = await solutions.FirstOrDefaultAsync(s => s.Owner.Title == "L'enquête sur les orang outan"); Console.WriteLine(sol.MurdererFirstName); - + var inquirySolution = await inquiries.FirstOrDefaultAsync(i => i.Title == "L'enquête sur les orang outan"); var i = inquirySolution.Id; foreach (var pptt in typeof(SolutionEntity).GetProperties() diff --git a/API_SQLuedo/TestEF/EntitiesTests/TestInquiryEntity.cs b/API_SQLuedo/TestEF/EntitiesTests/TestInquiryEntity.cs index bee3d00..8b54d26 100644 --- a/API_SQLuedo/TestEF/EntitiesTests/TestInquiryEntity.cs +++ b/API_SQLuedo/TestEF/EntitiesTests/TestInquiryEntity.cs @@ -18,7 +18,7 @@ public class TestInquiryEntity Assert.Null(inquiry.Description); Assert.False(inquiry.IsUser); } - + [Fact] public void TestConstructorWithOnlyId() { @@ -28,24 +28,24 @@ public class TestInquiryEntity Assert.Null(inquiry.Description); Assert.False(inquiry.IsUser); } - + [Fact] public void TestConstructorWithoutId() { - InquiryEntity inquiry = new InquiryEntity(_title,_description,_isUser); + InquiryEntity inquiry = new InquiryEntity(_title, _description, _isUser); Assert.Equal(0, inquiry.Id); - Assert.Equal(_title,inquiry.Title); - Assert.Equal(_description,inquiry.Description); + Assert.Equal(_title, inquiry.Title); + Assert.Equal(_description, inquiry.Description); Assert.True(inquiry.IsUser); } - + [Fact] public void TestConstructorWithAllAttributes() { - InquiryEntity inquiry = new InquiryEntity(_id,_title,_description,_isUser); + InquiryEntity inquiry = new InquiryEntity(_id, _title, _description, _isUser); Assert.Equal(_id, inquiry.Id); - Assert.Equal(_title,inquiry.Title); - Assert.Equal(_description,inquiry.Description); + Assert.Equal(_title, inquiry.Title); + Assert.Equal(_description, inquiry.Description); Assert.True(inquiry.IsUser); } } \ No newline at end of file diff --git a/API_SQLuedo/TestEF/EntitiesTests/TestInquiryTableEntity.cs b/API_SQLuedo/TestEF/EntitiesTests/TestInquiryTableEntity.cs index 7751046..72d4d23 100644 --- a/API_SQLuedo/TestEF/EntitiesTests/TestInquiryTableEntity.cs +++ b/API_SQLuedo/TestEF/EntitiesTests/TestInquiryTableEntity.cs @@ -13,40 +13,40 @@ public class TestInquiryTableEntity public void TestDefaultConstructor() { InquiryTableEntity tableEntity = new InquiryTableEntity(); - Assert.Equal(0,tableEntity.OwnerId); + Assert.Equal(0, tableEntity.OwnerId); Assert.Null(tableEntity.Owner); Assert.Null(tableEntity.DatabaseName); Assert.Null(tableEntity.ConnectionInfo); } - + [Fact] public void TestConstructorWithOnlyId() { InquiryTableEntity tableEntity = new InquiryTableEntity(_inquiryId); - Assert.Equal(_inquiryId,tableEntity.OwnerId); + Assert.Equal(_inquiryId, tableEntity.OwnerId); Assert.Null(tableEntity.Owner); Assert.Null(tableEntity.DatabaseName); Assert.Null(tableEntity.ConnectionInfo); } - - + + [Fact] public void TestConstructorWithoutId() { - InquiryTableEntity tableEntity = new InquiryTableEntity(_inquiry,_databaseName,_connectionInfo); - Assert.Equal(0,tableEntity.OwnerId); - Assert.Equal(_inquiry,tableEntity.Owner); - Assert.Equal(_databaseName,tableEntity.DatabaseName); - Assert.Equal(_connectionInfo,tableEntity.ConnectionInfo); + InquiryTableEntity tableEntity = new InquiryTableEntity(_inquiry, _databaseName, _connectionInfo); + Assert.Equal(0, tableEntity.OwnerId); + Assert.Equal(_inquiry, tableEntity.Owner); + Assert.Equal(_databaseName, tableEntity.DatabaseName); + Assert.Equal(_connectionInfo, tableEntity.ConnectionInfo); } - + [Fact] public void TestConstructorWithoutNavigationProperty() { - InquiryTableEntity tableEntity = new InquiryTableEntity(_inquiryId,_databaseName,_connectionInfo); - Assert.Equal(_inquiryId,tableEntity.OwnerId); + InquiryTableEntity tableEntity = new InquiryTableEntity(_inquiryId, _databaseName, _connectionInfo); + Assert.Equal(_inquiryId, tableEntity.OwnerId); Assert.Null(tableEntity.Owner); - Assert.Equal(_databaseName,tableEntity.DatabaseName); - Assert.Equal(_connectionInfo,tableEntity.ConnectionInfo); + Assert.Equal(_databaseName, tableEntity.DatabaseName); + Assert.Equal(_connectionInfo, tableEntity.ConnectionInfo); } } \ No newline at end of file diff --git a/API_SQLuedo/TestEF/EntitiesTests/TestLessonEntity.cs b/API_SQLuedo/TestEF/EntitiesTests/TestLessonEntity.cs index 42a02d1..4566dad 100644 --- a/API_SQLuedo/TestEF/EntitiesTests/TestLessonEntity.cs +++ b/API_SQLuedo/TestEF/EntitiesTests/TestLessonEntity.cs @@ -19,24 +19,24 @@ public class TestLessonEntity Assert.Null(lesson.LastPublisher); Assert.Null(lesson.LastEdit); } - + [Fact] public void TestConstructorWithoutId() { - LessonEntity lesson = new LessonEntity(_title,_lastPublisher,_lastEdit); + LessonEntity lesson = new LessonEntity(_title, _lastPublisher, _lastEdit); Assert.Equal(0, lesson.Id); - Assert.Equal(_title,lesson.Title); - Assert.Equal(_lastPublisher,lesson.LastPublisher); - Assert.Equal(_lastEdit,lesson.LastEdit); + Assert.Equal(_title, lesson.Title); + Assert.Equal(_lastPublisher, lesson.LastPublisher); + Assert.Equal(_lastEdit, lesson.LastEdit); } - + [Fact] public void TestConstructorWithAllAttributes() { - LessonEntity lesson = new LessonEntity(_id,_title,_lastPublisher,_lastEdit); + LessonEntity lesson = new LessonEntity(_id, _title, _lastPublisher, _lastEdit); Assert.Equal(_id, lesson.Id); - Assert.Equal(_title,lesson.Title); - Assert.Equal(_lastPublisher,lesson.LastPublisher); - Assert.Equal(_lastEdit,lesson.LastEdit); + Assert.Equal(_title, lesson.Title); + Assert.Equal(_lastPublisher, lesson.LastPublisher); + Assert.Equal(_lastEdit, lesson.LastEdit); } } \ No newline at end of file diff --git a/API_SQLuedo/TestEF/EntitiesTests/TestNotepadEntity.cs b/API_SQLuedo/TestEF/EntitiesTests/TestNotepadEntity.cs index 4d3ba35..09e5807 100644 --- a/API_SQLuedo/TestEF/EntitiesTests/TestNotepadEntity.cs +++ b/API_SQLuedo/TestEF/EntitiesTests/TestNotepadEntity.cs @@ -15,35 +15,35 @@ public class TestNotepadEntity public void TestDefaultConstructor() { NotepadEntity notepad = new NotepadEntity(); - Assert.Equal(0,notepad.Id); - Assert.Equal(0,notepad.UserId); + Assert.Equal(0, notepad.Id); + Assert.Equal(0, notepad.UserId); Assert.Null(notepad.User); - Assert.Equal(0,notepad.InquiryId); + Assert.Equal(0, notepad.InquiryId); Assert.Null(notepad.Inquiry); Assert.Null(notepad.Notes); } - + [Fact] public void TestConstructorWithoutId() { - NotepadEntity notepad = new NotepadEntity(_userId,_userEntity,_inquiryId,_inquiryEntity,_notes); - Assert.Equal(0,notepad.Id); - Assert.Equal(_userId,notepad.UserId); - Assert.Equal(_userEntity,notepad.User); - Assert.Equal(_inquiryId,notepad.InquiryId); - Assert.Equal(_inquiryEntity,notepad.Inquiry); - Assert.Equal(_notes,notepad.Notes); + NotepadEntity notepad = new NotepadEntity(_userId, _userEntity, _inquiryId, _inquiryEntity, _notes); + Assert.Equal(0, notepad.Id); + Assert.Equal(_userId, notepad.UserId); + Assert.Equal(_userEntity, notepad.User); + Assert.Equal(_inquiryId, notepad.InquiryId); + Assert.Equal(_inquiryEntity, notepad.Inquiry); + Assert.Equal(_notes, notepad.Notes); } - + [Fact] public void TestConstructorWithAllAttributes() { - NotepadEntity notepad = new NotepadEntity(_id,_userId,_userEntity,_inquiryId,_inquiryEntity,_notes); - Assert.Equal(_id,notepad.Id); - Assert.Equal(_userId,notepad.UserId); - Assert.Equal(_userEntity,notepad.User); - Assert.Equal(_inquiryId,notepad.InquiryId); - Assert.Equal(_inquiryEntity,notepad.Inquiry); - Assert.Equal(_notes,notepad.Notes); + NotepadEntity notepad = new NotepadEntity(_id, _userId, _userEntity, _inquiryId, _inquiryEntity, _notes); + Assert.Equal(_id, notepad.Id); + Assert.Equal(_userId, notepad.UserId); + Assert.Equal(_userEntity, notepad.User); + Assert.Equal(_inquiryId, notepad.InquiryId); + Assert.Equal(_inquiryEntity, notepad.Inquiry); + Assert.Equal(_notes, notepad.Notes); } } \ No newline at end of file diff --git a/API_SQLuedo/TestEF/EntitiesTests/TestParagraphEntity.cs b/API_SQLuedo/TestEF/EntitiesTests/TestParagraphEntity.cs index 1f2228d..227a06a 100644 --- a/API_SQLuedo/TestEF/EntitiesTests/TestParagraphEntity.cs +++ b/API_SQLuedo/TestEF/EntitiesTests/TestParagraphEntity.cs @@ -22,29 +22,29 @@ public class TestParagraphEntity Assert.Null(paragraph.Query); Assert.Null(paragraph.Comment); } - + [Fact] public void TestConstructorWithoutId() { - ParagraphEntity paragraph = new ParagraphEntity(_title,_content,_info,_query,_comment); + ParagraphEntity paragraph = new ParagraphEntity(_title, _content, _info, _query, _comment); Assert.Equal(0, paragraph.Id); - Assert.Equal(_title,paragraph.Title); - Assert.Equal(_info,paragraph.Info); - Assert.Equal(_content,paragraph.Content); - Assert.Equal(_query,paragraph.Query); - Assert.Equal(_comment,paragraph.Comment); + Assert.Equal(_title, paragraph.Title); + Assert.Equal(_info, paragraph.Info); + Assert.Equal(_content, paragraph.Content); + Assert.Equal(_query, paragraph.Query); + Assert.Equal(_comment, paragraph.Comment); } - + [Fact] public void TestConstructorWithAllAttributes() { - ParagraphEntity paragraph = new ParagraphEntity(_id,_title,_content,_info,_query,_comment,10); + ParagraphEntity paragraph = new ParagraphEntity(_id, _title, _content, _info, _query, _comment, 10); Assert.Equal(_id, paragraph.Id); - Assert.Equal(_title,paragraph.Title); - Assert.Equal(_info,paragraph.Info); - Assert.Equal(_content,paragraph.Content); - Assert.Equal(_query,paragraph.Query); - Assert.Equal(_comment,paragraph.Comment); + Assert.Equal(_title, paragraph.Title); + Assert.Equal(_info, paragraph.Info); + Assert.Equal(_content, paragraph.Content); + Assert.Equal(_query, paragraph.Query); + Assert.Equal(_comment, paragraph.Comment); Assert.Equal(10, paragraph.LessonId); } } \ No newline at end of file diff --git a/API_SQLuedo/TestEF/EntitiesTests/TestSuccessEntity.cs b/API_SQLuedo/TestEF/EntitiesTests/TestSuccessEntity.cs index 251a00a..e5a7d50 100644 --- a/API_SQLuedo/TestEF/EntitiesTests/TestSuccessEntity.cs +++ b/API_SQLuedo/TestEF/EntitiesTests/TestSuccessEntity.cs @@ -12,46 +12,46 @@ public class TestSuccessEntity public void TestDefaultConstructor() { SuccessEntity success = new SuccessEntity(); - Assert.Equal(0,success.UserId); + Assert.Equal(0, success.UserId); Assert.Null(success.User); - Assert.Equal(0,success.InquiryId); + Assert.Equal(0, success.InquiryId); Assert.Null(success.Inquiry); Assert.False(success.IsFinished); } - + [Fact] public void TestConstructorWithIds() { SuccessEntity success = new SuccessEntity(_userId, _inquiryId, _isFinished); - Assert.Equal(_userId,success.UserId); + Assert.Equal(_userId, success.UserId); Assert.Null(success.User); - Assert.Equal(_inquiryId,success.InquiryId); + Assert.Equal(_inquiryId, success.InquiryId); Assert.Null(success.Inquiry); Assert.True(success.IsFinished); } - + [Fact] public void TestConstructorWithNavigationProperties() { UserEntity user = new UserEntity(); InquiryEntity inquiry = new InquiryEntity(); SuccessEntity success = new SuccessEntity(user, inquiry, _isFinished); - Assert.Equal(0,success.UserId); + Assert.Equal(0, success.UserId); Assert.NotNull(success.User); - Assert.Equal(0,success.InquiryId); + Assert.Equal(0, success.InquiryId); Assert.NotNull(success.Inquiry); Assert.True(success.IsFinished); } - + [Fact] public void TestConstructorWithAllAttributes() { UserEntity user = new UserEntity(); InquiryEntity inquiry = new InquiryEntity(); - SuccessEntity success = new SuccessEntity(_userId, user, _inquiryId, inquiry, _isFinished); - Assert.Equal(_userId,success.UserId); + SuccessEntity success = new SuccessEntity(_userId, user, _inquiryId, inquiry, _isFinished); + Assert.Equal(_userId, success.UserId); Assert.NotNull(success.User); - Assert.Equal(_inquiryId,success.InquiryId); + Assert.Equal(_inquiryId, success.InquiryId); Assert.NotNull(success.Inquiry); Assert.True(success.IsFinished); } diff --git a/API_SQLuedo/TestEF/EntitiesTests/TestUserEntity.cs b/API_SQLuedo/TestEF/EntitiesTests/TestUserEntity.cs index 8f99022..7e07927 100644 --- a/API_SQLuedo/TestEF/EntitiesTests/TestUserEntity.cs +++ b/API_SQLuedo/TestEF/EntitiesTests/TestUserEntity.cs @@ -9,11 +9,12 @@ namespace TestEF private const string _password = "password"; private const bool _isAdmin = true; private const int _id = 42; + [Fact] public void TestDefaultConstructor() { UserEntity user = new UserEntity(); - Assert.Equal(0,user.Id); + Assert.Equal(0, user.Id); Assert.Null(user.Username); Assert.Null(user.Email); Assert.Null(user.Password); @@ -24,7 +25,7 @@ namespace TestEF public void TestConstructorWithOnlyId() { UserEntity user = new UserEntity(_id); - Assert.Equal(_id,user.Id); + Assert.Equal(_id, user.Id); Assert.Null(user.Username); Assert.Null(user.Email); Assert.Null(user.Password); @@ -35,18 +36,18 @@ namespace TestEF public void TestConstructorWithoutId() { UserEntity user = new UserEntity(_username, _password, _email, _isAdmin); - Assert.Equal(0,user.Id); + Assert.Equal(0, user.Id); Assert.Equal(_username, user.Username); Assert.Equal(_email, user.Email); Assert.Equal(_password, user.Password); Assert.True(user.IsAdmin); } - + [Fact] public void TestConstructorWithoutAllAttributes() { UserEntity user = new UserEntity(_id, _username, _password, _email, _isAdmin); - Assert.Equal(_id,user.Id); + Assert.Equal(_id, user.Id); Assert.Equal(_username, user.Username); Assert.Equal(_email, user.Email); Assert.Equal(_password, user.Password); From bbf5448dabea0bd449e58b2cadbe5f0b33d3c3b9 Mon Sep 17 00:00:00 2001 From: clchieu Date: Fri, 15 Mar 2024 17:44:00 +0100 Subject: [PATCH 19/21] =?UTF-8?q?Ajout=20de=20contraintes=20sur=20les=20pa?= =?UTF-8?q?ram=C3=A8tres=20donn=C3=A9s=20dans=20les=20controller?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../API/Controllers/InquiriesController.cs | 6 ++--- .../API/Controllers/LessonsController.cs | 4 +-- .../API/Controllers/ParagraphsController.cs | 6 ++--- .../API/Controllers/SuccessesController.cs | 26 +++++++++---------- API_SQLuedo/API/Controllers/UserController.cs | 6 ++--- 5 files changed, 24 insertions(+), 24 deletions(-) diff --git a/API_SQLuedo/API/Controllers/InquiriesController.cs b/API_SQLuedo/API/Controllers/InquiriesController.cs index daa748a..d35db6d 100644 --- a/API_SQLuedo/API/Controllers/InquiriesController.cs +++ b/API_SQLuedo/API/Controllers/InquiriesController.cs @@ -23,7 +23,7 @@ namespace API.Controllers _logger = logger; } - [HttpGet("inquiries/{page}/{number}/{orderCriteria}")] + [HttpGet("inquiries/{page:int}/{number:int}/{orderCriteria}")] [ProducesResponseType(typeof(InquiryDTO), 200)] [ProducesResponseType(typeof(string), 204)] public IActionResult GetInquiries(int page, int number, InquiryOrderCriteria orderCriteria) @@ -73,7 +73,7 @@ namespace API.Controllers } } - [HttpDelete("inquiry/{id}")] + [HttpDelete("inquiry/{id:int}")] [ProducesResponseType(typeof(InquiryDTO), 200)] [ProducesResponseType(typeof(string), 404)] public IActionResult DeleteInquiry(int id) @@ -108,7 +108,7 @@ namespace API.Controllers _inquiryDataService.CreateInquiry(dto.Title, dto.Description, dto.IsUser)); } - [HttpPut("inquiry/{id}")] + [HttpPut("inquiry/{id:int}")] [ProducesResponseType(typeof(InquiryDTO), 200)] [ProducesResponseType(typeof(string), 400)] [ProducesResponseType(typeof(string), 404)] diff --git a/API_SQLuedo/API/Controllers/LessonsController.cs b/API_SQLuedo/API/Controllers/LessonsController.cs index eae7eb9..bfb0738 100644 --- a/API_SQLuedo/API/Controllers/LessonsController.cs +++ b/API_SQLuedo/API/Controllers/LessonsController.cs @@ -73,7 +73,7 @@ namespace API.Controllers } } - [HttpDelete("lesson/{id}")] + [HttpDelete("lesson/{id:int}")] [ProducesResponseType(typeof(LessonDTO), 200)] [ProducesResponseType(typeof(string), 404)] public IActionResult DeleteLesson(int id) @@ -108,7 +108,7 @@ namespace API.Controllers _lessonDataService.CreateLesson(dto.Title, dto.LastPublisher, dto.LastEdit)); } - [HttpPut("lesson/{id}")] + [HttpPut("lesson/{id:int}")] [ProducesResponseType(typeof(LessonDTO), 200)] [ProducesResponseType(typeof(string), 400)] [ProducesResponseType(typeof(string), 404)] diff --git a/API_SQLuedo/API/Controllers/ParagraphsController.cs b/API_SQLuedo/API/Controllers/ParagraphsController.cs index 7d648ea..df0bfff 100644 --- a/API_SQLuedo/API/Controllers/ParagraphsController.cs +++ b/API_SQLuedo/API/Controllers/ParagraphsController.cs @@ -24,7 +24,7 @@ namespace API.Controllers _logger = logger; } - [HttpGet("paragraphs/{page}/{number}/{orderCriteria}")] + [HttpGet("paragraphs/{page:int}/{number:int}/{orderCriteria}")] [ProducesResponseType(typeof(ParagraphDTO), 200)] [ProducesResponseType(typeof(string), 204)] public IActionResult GetParagraphs(int page, int number, ParagraphOrderCriteria orderCriteria) @@ -74,7 +74,7 @@ namespace API.Controllers } } - [HttpDelete("paragraph/{id}")] + [HttpDelete("paragraph/{id:int}")] [ProducesResponseType(typeof(ParagraphDTO), 200)] [ProducesResponseType(typeof(string), 404)] public IActionResult DeleteParagraph(int id) @@ -111,7 +111,7 @@ namespace API.Controllers dto.LessonId)); } - [HttpPut("paragraph/{id}")] + [HttpPut("paragraph/{id:int}")] [ProducesResponseType(typeof(ParagraphDTO), 200)] [ProducesResponseType(typeof(string), 400)] [ProducesResponseType(typeof(string), 404)] diff --git a/API_SQLuedo/API/Controllers/SuccessesController.cs b/API_SQLuedo/API/Controllers/SuccessesController.cs index 28b0ddc..ca9a8a6 100644 --- a/API_SQLuedo/API/Controllers/SuccessesController.cs +++ b/API_SQLuedo/API/Controllers/SuccessesController.cs @@ -23,12 +23,12 @@ namespace API.Controllers _logger = logger; } - [HttpGet("successes/{page}/{number}/{orderCriteria}")] + [HttpGet("successes/{page:int}/{number:int}/{orderCriteria}")] [ProducesResponseType(typeof(SuccessDTO), 200)] [ProducesResponseType(typeof(string), 204)] public IActionResult GetSuccesses(int page, int number, SuccessOrderCriteria orderCriteria) { - var nbUser = (_successDataService.GetSuccesses(page, number, orderCriteria)).ToList().Count(); + var nbUser = _successDataService.GetSuccesses(page, number, orderCriteria).ToList().Count; if (nbUser == 0) { _logger.LogError("[ERREUR] Aucun utilisateur trouvé."); @@ -42,39 +42,39 @@ namespace API.Controllers [HttpGet("success/user/{id:int}")] [ProducesResponseType(typeof(SuccessDTO), 200)] [ProducesResponseType(typeof(string), 404)] - public IActionResult GetSuccessByUserId(int userId) + public IActionResult GetSuccessByUserId(int id) { try { - _logger.LogInformation("[INFORMATION] Le succès avec l'id de l'utilisateur {id} a été trouvé.", userId); - return Ok(_successDataService.GetSuccessByUserId(userId)); + _logger.LogInformation("[INFORMATION] Le succès avec l'id de l'utilisateur {id} a été trouvé.", id); + return Ok(_successDataService.GetSuccessByUserId(id)); } catch (ArgumentException) { - _logger.LogError("[ERREUR] Aucun utilisateur trouvé avec l'id de l'utilisateur {id}.", userId); + _logger.LogError("[ERREUR] Aucun utilisateur trouvé avec l'id de l'utilisateur {id}.", id); return NotFound(); } } - [HttpGet("success/inquiry/{inquiryId:int}")] + [HttpGet("success/inquiry/{id:int}")] [ProducesResponseType(typeof(SuccessDTO), 200)] [ProducesResponseType(typeof(string), 404)] - public IActionResult GetSuccessByInquiryId(int inquiryId) + public IActionResult GetSuccessByInquiryId(int id) { try { _logger.LogInformation("[INFORMATION] Utilisateur avec l'id de l'enquête {inquiryId} a été trouvé.", - inquiryId); - return Ok(_successDataService.GetSuccessByInquiryId(inquiryId)); + id); + return Ok(_successDataService.GetSuccessByInquiryId(id)); } catch (ArgumentException) { - _logger.LogError("[ERREUR] Aucun utilisateur trouvé avec l'id de l'enquête {inquiryId}.", inquiryId); + _logger.LogError("[ERREUR] Aucun utilisateur trouvé avec l'id de l'enquête {inquiryId}.", id); return NotFound(); } } - [HttpDelete("success/{id}")] + [HttpDelete("success/{id:int}")] [ProducesResponseType(typeof(SuccessDTO), 200)] [ProducesResponseType(typeof(string), 404)] public IActionResult DeleteSuccess(int id) @@ -108,7 +108,7 @@ namespace API.Controllers _successDataService.CreateSuccess(dto.UserId, dto.InquiryId, dto.IsFinished)); } - [HttpPut("success/{id}")] + [HttpPut("success/{id:int}")] [ProducesResponseType(typeof(SuccessDTO), 200)] [ProducesResponseType(typeof(string), 400)] [ProducesResponseType(typeof(string), 404)] diff --git a/API_SQLuedo/API/Controllers/UserController.cs b/API_SQLuedo/API/Controllers/UserController.cs index 11717a9..63fe068 100644 --- a/API_SQLuedo/API/Controllers/UserController.cs +++ b/API_SQLuedo/API/Controllers/UserController.cs @@ -13,7 +13,7 @@ namespace API.Controllers [ApiController] public class UsersController(ILogger logger, IUserService userService) : ControllerBase { - [HttpGet("users/{page}/{number}")] + [HttpGet("users/{page:int}/{number:int}")] [ProducesResponseType(typeof(UserDTO), 200)] [ProducesResponseType(typeof(string), 204)] public IActionResult GetUsers(int page, int number, UserOrderCriteria orderCriteria) @@ -63,7 +63,7 @@ namespace API.Controllers } } - [HttpDelete("user/{id}")] + [HttpDelete("user/{id:int}")] [ProducesResponseType(typeof(UserDTO), 200)] [ProducesResponseType(typeof(string), 404)] public IActionResult DeleteUser(int id) @@ -99,7 +99,7 @@ namespace API.Controllers userService.CreateUser(dto.Username, dto.Password, dto.Email, dto.IsAdmin)); } - [HttpPut("user/{id}")] + [HttpPut("user/{id:int}")] [ProducesResponseType(typeof(UserDTO), 200)] [ProducesResponseType(typeof(string), 400)] [ProducesResponseType(typeof(string), 404)] From 3f7e5be073f92fb4a944a4bc7fa2a0d86347a87b Mon Sep 17 00:00:00 2001 From: clchieu Date: Fri, 15 Mar 2024 17:48:24 +0100 Subject: [PATCH 20/21] Ajout de contraintes dans les controllers --- API_SQLuedo/API/Controllers/LessonsController.cs | 2 +- API_SQLuedo/API/Controllers/ParagraphsController.cs | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/API_SQLuedo/API/Controllers/LessonsController.cs b/API_SQLuedo/API/Controllers/LessonsController.cs index bfb0738..dfbbd14 100644 --- a/API_SQLuedo/API/Controllers/LessonsController.cs +++ b/API_SQLuedo/API/Controllers/LessonsController.cs @@ -23,7 +23,7 @@ namespace API.Controllers _logger = logger; } - [HttpGet("lessons/{page}/{number}/{orderCriteria}")] + [HttpGet("lessons/{page:int}/{number:int}/{orderCriteria}")] [ProducesResponseType(typeof(LessonDTO), 200)] [ProducesResponseType(typeof(string), 204)] public IActionResult GetLessons(int page, int number, LessonOrderCriteria orderCriteria) diff --git a/API_SQLuedo/API/Controllers/ParagraphsController.cs b/API_SQLuedo/API/Controllers/ParagraphsController.cs index df0bfff..c6d64a5 100644 --- a/API_SQLuedo/API/Controllers/ParagraphsController.cs +++ b/API_SQLuedo/API/Controllers/ParagraphsController.cs @@ -29,7 +29,7 @@ namespace API.Controllers [ProducesResponseType(typeof(string), 204)] public IActionResult GetParagraphs(int page, int number, ParagraphOrderCriteria orderCriteria) { - var nbParagraph = (_paragraphDataService.GetParagraphs(page, number, orderCriteria)).ToList().Count(); + var nbParagraph = _paragraphDataService.GetParagraphs(page, number, orderCriteria).ToList().Count; if (nbParagraph == 0) { _logger.LogError("[ERREUR] Aucun paragraphe trouvé."); From 231f9bd878700aebdcf8adc4a45959072c37fbe3 Mon Sep 17 00:00:00 2001 From: "Johnny.Ratton" Date: Fri, 15 Mar 2024 17:53:48 +0100 Subject: [PATCH 21/21] Ajout de constructeur vide pour les DTO qui n'en avaient pas --- API_SQLuedo/Dto/BlackListDTO.cs | 1 + API_SQLuedo/Dto/InquiryDTO.cs | 1 + API_SQLuedo/Dto/ParagraphDTO.cs | 10 +++++----- 3 files changed, 7 insertions(+), 5 deletions(-) diff --git a/API_SQLuedo/Dto/BlackListDTO.cs b/API_SQLuedo/Dto/BlackListDTO.cs index 913aaa0..a8a5a63 100644 --- a/API_SQLuedo/Dto/BlackListDTO.cs +++ b/API_SQLuedo/Dto/BlackListDTO.cs @@ -5,6 +5,7 @@ public class BlackListDTO public string Email { get; set; } public DateOnly ExpirationDate { get; set; } + public BlackListDTO() {} public BlackListDTO(string email, DateOnly expirationDate) { Email = email; diff --git a/API_SQLuedo/Dto/InquiryDTO.cs b/API_SQLuedo/Dto/InquiryDTO.cs index 5a436ed..f734ce7 100644 --- a/API_SQLuedo/Dto/InquiryDTO.cs +++ b/API_SQLuedo/Dto/InquiryDTO.cs @@ -10,6 +10,7 @@ public class InquiryDTO public bool IsUser { get; set; } + public InquiryDTO(){} public InquiryDTO(int id, string title, string description, bool isUser) { Id = id; diff --git a/API_SQLuedo/Dto/ParagraphDTO.cs b/API_SQLuedo/Dto/ParagraphDTO.cs index f6925dd..13c702f 100644 --- a/API_SQLuedo/Dto/ParagraphDTO.cs +++ b/API_SQLuedo/Dto/ParagraphDTO.cs @@ -29,9 +29,9 @@ public class ParagraphDTO : ContentLessonDTO Info = info; Query = query; Comment = comment; - } - - public ParagraphDTO() : base() - { - } + } + + public ParagraphDTO() : base() + { + } } \ No newline at end of file