add AnswerVariant
This commit is contained in:
parent
8a80013c94
commit
ae43e8c74c
10 changed files with 139 additions and 5 deletions
|
|
@ -0,0 +1,84 @@
|
|||
using Microsoft.AspNetCore.Authorization;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
using SurveyBackend.DTOs.AnswerVariant;
|
||||
using SurveyBackend.Mappers;
|
||||
using SurveyLib.Core.Services;
|
||||
|
||||
namespace SurveyBackend.Controllers;
|
||||
|
||||
[ApiController]
|
||||
[Route("api/surveys/{surveyId}/questions/{questionId}/answerVariants")]
|
||||
public class AnswerVariantsController : ControllerBase
|
||||
{
|
||||
private readonly IAnswerVariantsService _answerVariantsService;
|
||||
|
||||
public AnswerVariantsController(IAnswerVariantsService answerVariantsService)
|
||||
{
|
||||
_answerVariantsService = answerVariantsService;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Получить варианты ответа на вопрос
|
||||
/// </summary>
|
||||
/// <param name="surveyId"></param>
|
||||
/// <param name="questionId"></param>
|
||||
/// <returns></returns>
|
||||
[AllowAnonymous]
|
||||
[HttpGet]
|
||||
public async Task<IActionResult> Get(int surveyId, int questionId)
|
||||
{
|
||||
var answerVariants = await _answerVariantsService.GetAnswerVariantsByQuestionIdAsync(questionId);
|
||||
var result = answerVariants.Select(AnswerVariantMapper.ModelToOutputDto);
|
||||
return Ok(result);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Добавить новый вариант ответа для вопроса
|
||||
/// </summary>
|
||||
/// <param name="surveyId">Идентификатор опроса</param>
|
||||
/// <param name="questionId">Идентификатор вопроса</param>
|
||||
/// <param name="dto">Объект с данными для создания варианта ответа</param>
|
||||
/// <returns>Результат операции добавления</returns>
|
||||
[Authorize]
|
||||
[HttpPost]
|
||||
public async Task<IActionResult> Add(int surveyId, int questionId, [FromBody] AnswerVariantCreateDto dto)
|
||||
{
|
||||
var model = AnswerVariantMapper.CreateDtoToModel(dto, questionId);
|
||||
await _answerVariantsService.AddAnswerVariantAsync(model);
|
||||
var result = AnswerVariantMapper.ModelToOutputDto(model);
|
||||
return Ok(result);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Обновить вариант ответа на вопрос
|
||||
/// </summary>
|
||||
/// <param name="surveyId">Идентификатор опроса</param>
|
||||
/// <param name="questionId">Идентификатор вопроса</param>
|
||||
/// <param name="id">Идентификатор варианта ответа</param>
|
||||
/// <param name="dto">Объект с данными для обновления варианта ответа</param>
|
||||
/// <returns>Результат обновленного варианта ответа</returns>
|
||||
[Authorize]
|
||||
[HttpPut("{id}")]
|
||||
public async Task<IActionResult> Update(int surveyId, int questionId, int id, [FromBody] AnswerVariantUpdateDto dto)
|
||||
{
|
||||
var model = AnswerVariantMapper.UpdateDtoToModel(dto, questionId, id);
|
||||
await _answerVariantsService.UpdateAnswerVariantAsync(model);
|
||||
var result = AnswerVariantMapper.ModelToOutputDto(model);
|
||||
return Ok(result);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Удалить вариант ответа на вопрос
|
||||
/// </summary>
|
||||
/// <param name="surveyId">Идентификатор опроса</param>
|
||||
/// <param name="questionId">Идентификатор вопроса</param>
|
||||
/// <param name="id">Идентификатор варианта ответа</param>
|
||||
/// <returns>Результат операции удаления</returns>
|
||||
[Authorize]
|
||||
[HttpDelete("{id}")]
|
||||
public async Task<IActionResult> Delete(int surveyId, int questionId, int id)
|
||||
{
|
||||
await _answerVariantsService.DeleteAnswerVariantAsync(id);
|
||||
return Ok();
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue