83 lines
No EOL
2.9 KiB
C#
83 lines
No EOL
2.9 KiB
C#
using SurveyBackend.Services.Exceptions;
|
|
using SurveyLib.Core.Models;
|
|
using SurveyLib.Core.Repositories;
|
|
using SurveyLib.Core.Services;
|
|
|
|
namespace SurveyBackend.Services.Services;
|
|
|
|
public class AnswerVariantsService : IAnswerVariantsService
|
|
{
|
|
private readonly IAnswerVariantsRepository _answerVariantsRepository;
|
|
private readonly IQuestionRepository _questionRepository;
|
|
|
|
public AnswerVariantsService(IAnswerVariantsRepository answerVariantsRepository,
|
|
IQuestionRepository questionRepository)
|
|
{
|
|
_answerVariantsRepository = answerVariantsRepository;
|
|
_questionRepository = questionRepository;
|
|
}
|
|
|
|
// TODO: любой кто будет читать этот код, я понимаю проблему дублирования, не злитесь пожалуйста, я потом пишу на адекватные валидаторы и не будет дублирования
|
|
public async Task AddAnswerVariantAsync(AnswerVariant answerVariant)
|
|
{
|
|
var question = await _questionRepository.GetByIdAsync(answerVariant.QuestionId);
|
|
if (question is null)
|
|
{
|
|
throw new NotFoundException("Question not found");
|
|
}
|
|
|
|
await _answerVariantsRepository.AddAsync(answerVariant);
|
|
}
|
|
|
|
public async Task UpdateAnswerVariantAsync(AnswerVariant answerVariant)
|
|
{
|
|
var question = await _questionRepository.GetByIdAsync(answerVariant.QuestionId);
|
|
if (question is null)
|
|
{
|
|
throw new NotFoundException("Question not found");
|
|
}
|
|
|
|
var answerVariantBase = await _answerVariantsRepository.GetByIdAsNoTrackingAsync(answerVariant.Id);
|
|
if (answerVariantBase is null)
|
|
{
|
|
throw new NotFoundException("Answer Variant not found");
|
|
}
|
|
|
|
answerVariant.QuestionId = answerVariantBase.QuestionId;
|
|
|
|
await _answerVariantsRepository.UpdateAsync(answerVariant);
|
|
}
|
|
|
|
public async Task DeleteAnswerVariantAsync(int id)
|
|
{
|
|
var answerVariantBase = await _answerVariantsRepository.GetByIdAsNoTrackingAsync(id);
|
|
if (answerVariantBase is null)
|
|
{
|
|
throw new NotFoundException("Answer Variant not found");
|
|
}
|
|
|
|
await _answerVariantsRepository.DeleteAsync(id);
|
|
}
|
|
|
|
public async Task<AnswerVariant> GetAnswerVariantByIdAsync(int id)
|
|
{
|
|
var answerVariant = await _answerVariantsRepository.GetByIdAsync(id);
|
|
if (answerVariant is null)
|
|
{
|
|
throw new NotFoundException("Answer Variant not found");
|
|
}
|
|
|
|
return answerVariant;
|
|
}
|
|
|
|
public async Task<IEnumerable<AnswerVariant>> GetAnswerVariantsByQuestionIdAsync(int questionId)
|
|
{
|
|
var question = await _questionRepository.GetByIdAsync(questionId);
|
|
if (question is null)
|
|
{
|
|
throw new NotFoundException("Question not found");
|
|
}
|
|
|
|
return await _answerVariantsRepository.GetAnswerVariantsByQuestionIdAsync(questionId);
|
|
}
|
|
} |