From edbcc495d2f455657188b08bdbf74047732caed4 Mon Sep 17 00:00:00 2001 From: shept Date: Wed, 12 Mar 2025 22:13:54 +0500 Subject: [PATCH 1/6] added survey base removed default template Class1.cs --- SurveyLib.Core/Class1.cs | 5 ----- SurveyLib.Core/Models/Survey.cs | 8 ++++++++ 2 files changed, 8 insertions(+), 5 deletions(-) delete mode 100644 SurveyLib.Core/Class1.cs create mode 100644 SurveyLib.Core/Models/Survey.cs diff --git a/SurveyLib.Core/Class1.cs b/SurveyLib.Core/Class1.cs deleted file mode 100644 index 41c44da..0000000 --- a/SurveyLib.Core/Class1.cs +++ /dev/null @@ -1,5 +0,0 @@ -namespace SurveyLib.Core; - -public class Class1 -{ -} \ No newline at end of file diff --git a/SurveyLib.Core/Models/Survey.cs b/SurveyLib.Core/Models/Survey.cs new file mode 100644 index 0000000..387f11c --- /dev/null +++ b/SurveyLib.Core/Models/Survey.cs @@ -0,0 +1,8 @@ +namespace SurveyLib.Core.Models; + +public class Survey +{ + public int Id { get; set; } + public string Title { get; set; } + public string Description { get; set; } +} \ No newline at end of file From 23a97fb90035e993b1375a94e5b43c9fff459548 Mon Sep 17 00:00:00 2001 From: shept Date: Wed, 12 Mar 2025 22:56:20 +0500 Subject: [PATCH 2/6] added QuestionBase.cs --- SurveyLib.Core/Models/QuestionBase.cs | 10 ++++++++++ SurveyLib.Core/Models/Survey.cs | 2 ++ 2 files changed, 12 insertions(+) create mode 100644 SurveyLib.Core/Models/QuestionBase.cs diff --git a/SurveyLib.Core/Models/QuestionBase.cs b/SurveyLib.Core/Models/QuestionBase.cs new file mode 100644 index 0000000..8d750ff --- /dev/null +++ b/SurveyLib.Core/Models/QuestionBase.cs @@ -0,0 +1,10 @@ +namespace SurveyLib.Core.Models; + +public class QuestionBase +{ + public int Id { get; set; } // TODO: А ведь их наверное много будет, вдруг int однажды не хватит... + public int SurveyId { get; set; } + public string Title { get; set; } + + public Survey Survey { get; set; } +} \ No newline at end of file diff --git a/SurveyLib.Core/Models/Survey.cs b/SurveyLib.Core/Models/Survey.cs index 387f11c..89eb1a2 100644 --- a/SurveyLib.Core/Models/Survey.cs +++ b/SurveyLib.Core/Models/Survey.cs @@ -5,4 +5,6 @@ public class Survey public int Id { get; set; } public string Title { get; set; } public string Description { get; set; } + + public ICollection Questions { get; set; } } \ No newline at end of file From 9b4670ab9918ee4434263fc37053b845b7b81177 Mon Sep 17 00:00:00 2001 From: shept Date: Wed, 12 Mar 2025 23:57:50 +0500 Subject: [PATCH 3/6] added Answer.cs --- SurveyLib.Core/Models/Answer.cs | 12 ++++++++++++ SurveyLib.Core/Models/QuestionBase.cs | 1 + SurveyLib.Core/Models/Survey.cs | 1 + 3 files changed, 14 insertions(+) create mode 100644 SurveyLib.Core/Models/Answer.cs diff --git a/SurveyLib.Core/Models/Answer.cs b/SurveyLib.Core/Models/Answer.cs new file mode 100644 index 0000000..676f4a3 --- /dev/null +++ b/SurveyLib.Core/Models/Answer.cs @@ -0,0 +1,12 @@ +namespace SurveyLib.Core.Models; + +public class Answer +{ + public int TryId { get; set; } + public int SurveyId { get; set; } + public int QuestionId { get; set; } + public string AnswerText { get; set; } + + public Survey Survey { get; set; } + public QuestionBase Question { get; set; } +} \ No newline at end of file diff --git a/SurveyLib.Core/Models/QuestionBase.cs b/SurveyLib.Core/Models/QuestionBase.cs index 8d750ff..822dd75 100644 --- a/SurveyLib.Core/Models/QuestionBase.cs +++ b/SurveyLib.Core/Models/QuestionBase.cs @@ -7,4 +7,5 @@ public class QuestionBase public string Title { get; set; } public Survey Survey { get; set; } + public ICollection Answers { get; set; } } \ No newline at end of file diff --git a/SurveyLib.Core/Models/Survey.cs b/SurveyLib.Core/Models/Survey.cs index 89eb1a2..e41e948 100644 --- a/SurveyLib.Core/Models/Survey.cs +++ b/SurveyLib.Core/Models/Survey.cs @@ -7,4 +7,5 @@ public class Survey public string Description { get; set; } public ICollection Questions { get; set; } + public ICollection Answers { get; set; } } \ No newline at end of file From 468ddba9090b037840b50b66457ac905ad45d863 Mon Sep 17 00:00:00 2001 From: shept Date: Thu, 13 Mar 2025 01:06:12 +0500 Subject: [PATCH 4/6] started defining repository interfaces --- SurveyLib.Core/Repositories/IGenericRepository.cs | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 SurveyLib.Core/Repositories/IGenericRepository.cs diff --git a/SurveyLib.Core/Repositories/IGenericRepository.cs b/SurveyLib.Core/Repositories/IGenericRepository.cs new file mode 100644 index 0000000..f4e0492 --- /dev/null +++ b/SurveyLib.Core/Repositories/IGenericRepository.cs @@ -0,0 +1,10 @@ +namespace SurveyLib.Core.Repositories; + +public interface IGenericRepository where T : class +{ + Task? GetByIdAsync(int id); + Task> GetAllAsync(); + Task AddAsync(T entity); + Task UpdateAsync(T entity); + Task DeleteAsync(T entity); +} \ No newline at end of file From 18840fc22443b9a68f0965781e3fac690d9460ec Mon Sep 17 00:00:00 2001 From: shept Date: Fri, 14 Mar 2025 22:20:08 +0500 Subject: [PATCH 5/6] added repository interfaces for all models added Completion model --- SurveyLib.Core/Models/Answer.cs | 5 ++--- SurveyLib.Core/Models/Completion.cs | 10 ++++++++++ SurveyLib.Core/Models/QuestionBase.cs | 2 +- SurveyLib.Core/Models/Survey.cs | 2 +- SurveyLib.Core/Repositories/IAnswerRepository.cs | 9 +++++++++ SurveyLib.Core/Repositories/ICompletionRepository.cs | 8 ++++++++ SurveyLib.Core/Repositories/IGenericRepository.cs | 2 +- SurveyLib.Core/Repositories/IQuestionRepository.cs | 9 +++++++++ SurveyLib.Core/Repositories/ISurveyRepository.cs | 10 ++++++++++ 9 files changed, 51 insertions(+), 6 deletions(-) create mode 100644 SurveyLib.Core/Models/Completion.cs create mode 100644 SurveyLib.Core/Repositories/IAnswerRepository.cs create mode 100644 SurveyLib.Core/Repositories/ICompletionRepository.cs create mode 100644 SurveyLib.Core/Repositories/IQuestionRepository.cs create mode 100644 SurveyLib.Core/Repositories/ISurveyRepository.cs diff --git a/SurveyLib.Core/Models/Answer.cs b/SurveyLib.Core/Models/Answer.cs index 676f4a3..d95d799 100644 --- a/SurveyLib.Core/Models/Answer.cs +++ b/SurveyLib.Core/Models/Answer.cs @@ -2,11 +2,10 @@ namespace SurveyLib.Core.Models; public class Answer { - public int TryId { get; set; } - public int SurveyId { get; set; } + public int CompletionId { get; set; } public int QuestionId { get; set; } public string AnswerText { get; set; } - public Survey Survey { get; set; } + public Completion Completion { get; set; } public QuestionBase Question { get; set; } } \ No newline at end of file diff --git a/SurveyLib.Core/Models/Completion.cs b/SurveyLib.Core/Models/Completion.cs new file mode 100644 index 0000000..4c6fde2 --- /dev/null +++ b/SurveyLib.Core/Models/Completion.cs @@ -0,0 +1,10 @@ +namespace SurveyLib.Core.Models; + +public class Completion +{ + public int Id { get; set; } + public int SurveyId { get; set; } + public DateTime FinishedAt { get; set; } + + public Survey Survey { get; set; } +} \ No newline at end of file diff --git a/SurveyLib.Core/Models/QuestionBase.cs b/SurveyLib.Core/Models/QuestionBase.cs index 822dd75..4f2f581 100644 --- a/SurveyLib.Core/Models/QuestionBase.cs +++ b/SurveyLib.Core/Models/QuestionBase.cs @@ -2,7 +2,7 @@ namespace SurveyLib.Core.Models; public class QuestionBase { - public int Id { get; set; } // TODO: А ведь их наверное много будет, вдруг int однажды не хватит... + public int Id { get; set; } public int SurveyId { get; set; } public string Title { get; set; } diff --git a/SurveyLib.Core/Models/Survey.cs b/SurveyLib.Core/Models/Survey.cs index e41e948..c35cdd4 100644 --- a/SurveyLib.Core/Models/Survey.cs +++ b/SurveyLib.Core/Models/Survey.cs @@ -7,5 +7,5 @@ public class Survey public string Description { get; set; } public ICollection Questions { get; set; } - public ICollection Answers { get; set; } + public ICollection Completions { get; set; } } \ No newline at end of file diff --git a/SurveyLib.Core/Repositories/IAnswerRepository.cs b/SurveyLib.Core/Repositories/IAnswerRepository.cs new file mode 100644 index 0000000..7766933 --- /dev/null +++ b/SurveyLib.Core/Repositories/IAnswerRepository.cs @@ -0,0 +1,9 @@ +using SurveyLib.Core.Models; + +namespace SurveyLib.Core.Repositories; + +public interface IAnswerRepository : IGenericRepository +{ + Task> GetByAttemptIdAsync(int attemptId); + Task> GetByQuestionIdAsync(int questionId); +} \ No newline at end of file diff --git a/SurveyLib.Core/Repositories/ICompletionRepository.cs b/SurveyLib.Core/Repositories/ICompletionRepository.cs new file mode 100644 index 0000000..8145c1c --- /dev/null +++ b/SurveyLib.Core/Repositories/ICompletionRepository.cs @@ -0,0 +1,8 @@ +using SurveyLib.Core.Models; + +namespace SurveyLib.Core.Repositories; + +public interface ICompletionRepository : IGenericRepository +{ + Task> GetBySurveyIdAsync(int surveyId); +} \ No newline at end of file diff --git a/SurveyLib.Core/Repositories/IGenericRepository.cs b/SurveyLib.Core/Repositories/IGenericRepository.cs index f4e0492..071416f 100644 --- a/SurveyLib.Core/Repositories/IGenericRepository.cs +++ b/SurveyLib.Core/Repositories/IGenericRepository.cs @@ -7,4 +7,4 @@ public interface IGenericRepository where T : class Task AddAsync(T entity); Task UpdateAsync(T entity); Task DeleteAsync(T entity); -} \ No newline at end of file +} diff --git a/SurveyLib.Core/Repositories/IQuestionRepository.cs b/SurveyLib.Core/Repositories/IQuestionRepository.cs new file mode 100644 index 0000000..d8ecf6c --- /dev/null +++ b/SurveyLib.Core/Repositories/IQuestionRepository.cs @@ -0,0 +1,9 @@ +using SurveyLib.Core.Models; + +namespace SurveyLib.Core.Repositories; + +public interface IQuestionRepository : IGenericRepository +{ + Task GetWithAnswersAsync(int questionId); + Task> GetBySurveyIdAsync(int surveyId); +} \ No newline at end of file diff --git a/SurveyLib.Core/Repositories/ISurveyRepository.cs b/SurveyLib.Core/Repositories/ISurveyRepository.cs new file mode 100644 index 0000000..795c26d --- /dev/null +++ b/SurveyLib.Core/Repositories/ISurveyRepository.cs @@ -0,0 +1,10 @@ +using SurveyLib.Core.Models; + +namespace SurveyLib.Core.Repositories; + +public interface ISurveyRepository : IGenericRepository +{ + Task GetWithQuestionsAsync(int surveyId); + Task GetWithCompletionsAsync(int surveyId); + Task FindByTitleAsync(string title); +} \ No newline at end of file From 5be810d8404583d2f9f742234b8bfab659c7050e Mon Sep 17 00:00:00 2001 From: shept Date: Fri, 14 Mar 2025 22:23:41 +0500 Subject: [PATCH 6/6] added answers field to Completion.cs --- SurveyLib.Core/Models/Completion.cs | 1 + 1 file changed, 1 insertion(+) diff --git a/SurveyLib.Core/Models/Completion.cs b/SurveyLib.Core/Models/Completion.cs index 4c6fde2..0ba6cf3 100644 --- a/SurveyLib.Core/Models/Completion.cs +++ b/SurveyLib.Core/Models/Completion.cs @@ -7,4 +7,5 @@ public class Completion public DateTime FinishedAt { get; set; } public Survey Survey { get; set; } + public ICollection Answers { get; set; } } \ No newline at end of file