From 0f2965db7ddb3f07b1217b109edb99e37342312a Mon Sep 17 00:00:00 2001 From: shept Date: Mon, 26 May 2025 01:01:22 +0500 Subject: [PATCH 1/3] minor completion model changes --- SurveyLib.Core/Models/Completion.cs | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/SurveyLib.Core/Models/Completion.cs b/SurveyLib.Core/Models/Completion.cs index 0ba6cf3..651440d 100644 --- a/SurveyLib.Core/Models/Completion.cs +++ b/SurveyLib.Core/Models/Completion.cs @@ -4,7 +4,9 @@ public class Completion { public int Id { get; set; } public int SurveyId { get; set; } - public DateTime FinishedAt { get; set; } + public DateTime FinishedAt { get; set; } = DateTime.UtcNow; + + public int? CompletedBy { get; set; } public Survey Survey { get; set; } public ICollection Answers { get; set; } From 3961dbeb69ac25ebb0881e6505b89f0f6295e4fc Mon Sep 17 00:00:00 2001 From: shept Date: Mon, 26 May 2025 01:01:49 +0500 Subject: [PATCH 2/3] change service return types --- SurveyLib.Core/Services/IAnswerService.cs | 6 +++--- SurveyLib.Core/Services/ICompletionService.cs | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/SurveyLib.Core/Services/IAnswerService.cs b/SurveyLib.Core/Services/IAnswerService.cs index d2122dc..2eb866d 100644 --- a/SurveyLib.Core/Services/IAnswerService.cs +++ b/SurveyLib.Core/Services/IAnswerService.cs @@ -4,9 +4,9 @@ namespace SurveyLib.Core.Services; public interface IAnswerService { - Task AddAnswerAsync(Answer answer); - Task UpdateAnswerAsync(Answer answer); - Task DeleteAnswerAsync(int id); + Task AddAnswerAsync(Answer answer); + Task UpdateAnswerAsync(Answer answer); + Task DeleteAnswerAsync(int id); Task> GetAnswersByCompletionIdAsync(int completionId); Task> GetAnswersByQuestionIdAsync(int questionId); } \ No newline at end of file diff --git a/SurveyLib.Core/Services/ICompletionService.cs b/SurveyLib.Core/Services/ICompletionService.cs index 3a9430d..b6d4bab 100644 --- a/SurveyLib.Core/Services/ICompletionService.cs +++ b/SurveyLib.Core/Services/ICompletionService.cs @@ -4,8 +4,8 @@ namespace SurveyLib.Core.Services; public interface ICompletionService { - Task AddCompletionAsync(Completion completion); - Task UpdateCompletionAsync(Completion completion); - Task DeleteCompletionAsync(int id); + Task AddCompletionAsync(Completion completion); + Task UpdateCompletionAsync(Completion completion); + Task DeleteCompletionAsync(int id); Task> GetCompletionsBySurveyIdAsync(int surveyId); } \ No newline at end of file From 9f6d5b575e3175149fcd0b8e091b9f01a8958e0d Mon Sep 17 00:00:00 2001 From: shept Date: Mon, 26 May 2025 01:02:06 +0500 Subject: [PATCH 3/3] adapt repository features to services needs --- SurveyLib.Core/Repositories/IAnswerRepository.cs | 2 ++ SurveyLib.Core/Repositories/ICompletionRepository.cs | 2 +- .../Repositories/AnswerRepository.cs | 10 ++++++++++ .../Repositories/CompletionRepository.cs | 5 +++++ 4 files changed, 18 insertions(+), 1 deletion(-) diff --git a/SurveyLib.Core/Repositories/IAnswerRepository.cs b/SurveyLib.Core/Repositories/IAnswerRepository.cs index 59d2213..0906f21 100644 --- a/SurveyLib.Core/Repositories/IAnswerRepository.cs +++ b/SurveyLib.Core/Repositories/IAnswerRepository.cs @@ -5,4 +5,6 @@ namespace SurveyLib.Core.Repositories; public interface IAnswerRepository : IGenericRepository { Task DeleteAsync(int questionId, int completionId); + Task> GetAnswersByCompletionIdAsync(int completionId); + Task> GetAnswersByQuestionIdAsync(int questionId); } \ No newline at end of file diff --git a/SurveyLib.Core/Repositories/ICompletionRepository.cs b/SurveyLib.Core/Repositories/ICompletionRepository.cs index 9b41e97..b8cffac 100644 --- a/SurveyLib.Core/Repositories/ICompletionRepository.cs +++ b/SurveyLib.Core/Repositories/ICompletionRepository.cs @@ -4,5 +4,5 @@ namespace SurveyLib.Core.Repositories; public interface ICompletionRepository : IGenericRepository { - + Task> GetCompletionsBySurveyIdAsync(int surveyId); } \ No newline at end of file diff --git a/SurveyLib.Infrastructure.EFCore/Repositories/AnswerRepository.cs b/SurveyLib.Infrastructure.EFCore/Repositories/AnswerRepository.cs index 4a84d49..88fbe40 100644 --- a/SurveyLib.Infrastructure.EFCore/Repositories/AnswerRepository.cs +++ b/SurveyLib.Infrastructure.EFCore/Repositories/AnswerRepository.cs @@ -47,4 +47,14 @@ public class AnswerRepository : IAnswerRepository .ExecuteDeleteAsync(); await _context.SaveChangesAsync(); } + + public async Task> GetAnswersByCompletionIdAsync(int completionId) + { + return await _context.Answers.Where(a => a.CompletionId == completionId).ToListAsync(); + } + + public async Task> GetAnswersByQuestionIdAsync(int questionId) + { + return await _context.Answers.Where(a => a.QuestionId == questionId).ToListAsync(); + } } \ No newline at end of file diff --git a/SurveyLib.Infrastructure.EFCore/Repositories/CompletionRepository.cs b/SurveyLib.Infrastructure.EFCore/Repositories/CompletionRepository.cs index 5082e34..bc1c39c 100644 --- a/SurveyLib.Infrastructure.EFCore/Repositories/CompletionRepository.cs +++ b/SurveyLib.Infrastructure.EFCore/Repositories/CompletionRepository.cs @@ -41,4 +41,9 @@ public class CompletionRepository : ICompletionRepository await _context.Completions.Where(c => c.Id == id).ExecuteDeleteAsync(); await _context.SaveChangesAsync(); } + + public async Task> GetCompletionsBySurveyIdAsync(int surveyId) + { + return await _context.Completions.Where(c => c.SurveyId == surveyId).ToListAsync(); + } } \ No newline at end of file