Beispiel #1
0
        public async Task <IActionResult> DeleteQuestion(DeleteQuestionRequestDTO deleteRequest)
        {
            var result = await _quizService.DeleteQuestionAsync(deleteRequest);

            switch (result._result)
            {
            case DeleteQuestionResponseDTO.RequestResult.Success: return(Ok(result));

            case DeleteQuestionResponseDTO.RequestResult.QuizNotFound: return(NotFound(result));

            case DeleteQuestionResponseDTO.RequestResult.QuestionNotFound: return(NotFound(result));

            default: return(BadRequest(result));
            }
        }
Beispiel #2
0
        public async Task <DeleteQuestionResponseDTO> DeleteQuestionAsync(DeleteQuestionRequestDTO deleteRequest)
        {
            var result = new DeleteQuestionResponseDTO()
            {
                Request = deleteRequest
            };

            var quiz = await _quizRepo.GetQuizAsync(deleteRequest.QuizId);

            if (quiz == null)
            {
                result._result = DeleteQuestionResponseDTO.RequestResult.QuizNotFound;
                return(result);
            }

            if (quiz.Owner.Id != deleteRequest.CharacterId)
            {
                result._result = DeleteQuestionResponseDTO.RequestResult.CharacterNotOwner;
                return(result);
            }

            var question = quiz.Questions.Where(q => q.Id == deleteRequest.QuestionId).FirstOrDefault();

            if (question == null)
            {
                result._result = DeleteQuestionResponseDTO.RequestResult.QuestionNotFound;
                return(result);
            }

            await _quizRepo.DeleteQuestionAsync(question);

            try
            {
                await _quizRepo.SaveChangesAsync();

                result._result = DeleteQuestionResponseDTO.RequestResult.Success;
            }
            catch (Exception)
            {
                result._result = DeleteQuestionResponseDTO.RequestResult.BadRequest;
            }

            return(result);
        }