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 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> GetAnswerVariantsByQuestionIdAsync(int questionId) { var question = await _questionRepository.GetByIdAsync(questionId); if (question is null) { throw new NotFoundException("Question not found"); } return await _answerVariantsRepository.GetAnswerVariantsByQuestionIdAsync(questionId); } }