survey-webapp/SurveyBackend/SurveyBackend.API/Controllers/AnswerVariantsController.cs
2025-05-20 17:35:43 +05:00

84 lines
No EOL
3.6 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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();
}
}