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/Answer.cs b/SurveyLib.Core/Models/Answer.cs new file mode 100644 index 0000000..d95d799 --- /dev/null +++ b/SurveyLib.Core/Models/Answer.cs @@ -0,0 +1,11 @@ +namespace SurveyLib.Core.Models; + +public class Answer +{ + public int CompletionId { get; set; } + public int QuestionId { get; set; } + public string AnswerText { 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..0ba6cf3 --- /dev/null +++ b/SurveyLib.Core/Models/Completion.cs @@ -0,0 +1,11 @@ +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; } + public ICollection Answers { get; set; } +} \ No newline at end of file diff --git a/SurveyLib.Core/Models/QuestionBase.cs b/SurveyLib.Core/Models/QuestionBase.cs new file mode 100644 index 0000000..4f2f581 --- /dev/null +++ b/SurveyLib.Core/Models/QuestionBase.cs @@ -0,0 +1,11 @@ +namespace SurveyLib.Core.Models; + +public class QuestionBase +{ + public int Id { get; set; } + public int SurveyId { get; set; } + 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 new file mode 100644 index 0000000..c35cdd4 --- /dev/null +++ b/SurveyLib.Core/Models/Survey.cs @@ -0,0 +1,11 @@ +namespace SurveyLib.Core.Models; + +public class Survey +{ + public int Id { get; set; } + public string Title { get; set; } + public string Description { get; set; } + + public ICollection Questions { 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 new file mode 100644 index 0000000..071416f --- /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); +} 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