add completions methods (not final)

This commit is contained in:
Вячеслав 2025-05-31 00:14:37 +05:00
parent 58b5b2b17d
commit c2f6ba6dde
4 changed files with 23 additions and 5 deletions

View file

@ -26,14 +26,18 @@ public class CompletionController : ControllerBase
[Authorize] [Authorize]
public async Task<IActionResult> GetCompletionsAsync(int surveyId) public async Task<IActionResult> GetCompletionsAsync(int surveyId)
{ {
return NotFound(); var models = await _completionService.GetCompletionsBySurveyIdAsync(surveyId);
var result = models.Select(CompletionMapper.ModelToOutputDto);
return Ok(result);
} }
[HttpGet("{id:int}")] [HttpGet("{id:int}")]
[Authorize] [Authorize]
public async Task<IActionResult> GetCompletionAsync(int id) public async Task<IActionResult> GetCompletionAsync(int id)
{ {
return NotFound(); var model = await _completionService.GetCompletionByIdAsync(id);
var result = CompletionMapper.ModelToOutputDto(model);
return Ok(result);
} }
[HttpPost] [HttpPost]

View file

@ -4,7 +4,8 @@ namespace SurveyBackend.DTOs.Completion;
public class CompletionOutputDto public class CompletionOutputDto
{ {
public int Id { get; set; }
public int SurveyId { get; set; }
public int? CompletedBy { get; set; } public int? CompletedBy { get; set; }
public DateTime FinishedAt { get; set; } public DateTime FinishedAt { get; set; }
public List<AnswerOutputDto> Answers { get; set; }
} }

View file

@ -14,8 +14,9 @@ public static class CompletionMapper
public static CompletionOutputDto ModelToOutputDto(Completion model) => new CompletionOutputDto public static CompletionOutputDto ModelToOutputDto(Completion model) => new CompletionOutputDto
{ {
Id = model.Id,
SurveyId = model.SurveyId,
CompletedBy = model.CompletedBy, CompletedBy = model.CompletedBy,
FinishedAt = model.FinishedAt, FinishedAt = model.FinishedAt
Answers = model.Answers.Select(AnswerMapper.ModelToOutputDto).ToList(),
}; };
} }

View file

@ -1,3 +1,4 @@
using SurveyBackend.Services.Exceptions;
using SurveyLib.Core.Models; using SurveyLib.Core.Models;
using SurveyLib.Core.Repositories; using SurveyLib.Core.Repositories;
using SurveyLib.Core.Services; using SurveyLib.Core.Services;
@ -31,6 +32,17 @@ public class CompletionService : ICompletionService
await _completionRepository.DeleteAsync(id); await _completionRepository.DeleteAsync(id);
} }
public async Task<Completion> GetCompletionByIdAsync(int id)
{
var completion = await _completionRepository.GetByIdAsync(id);
if (completion is null)
{
throw new NotFoundException("Completion not found");
}
return completion;
}
public async Task<IEnumerable<Completion>> GetCompletionsBySurveyIdAsync(int surveyId) public async Task<IEnumerable<Completion>> GetCompletionsBySurveyIdAsync(int surveyId)
{ {
// TODO: проверить существование опроса // TODO: проверить существование опроса