public void UpdateQuiz(int id, QuizDto quizDto)
        {
            if (!ModelState.IsValid)
            {
                throw new HttpResponseException(HttpStatusCode.BadRequest);
            }

            var quizInDatabase = _context
                                 .Quizzes
                                 .Include(q => q.Choices)
                                 .ToList()
                                 .SingleOrDefault(c => c.Id == id);

            if (quizInDatabase == null)
            {
                throw new HttpResponseException(HttpStatusCode.NotFound);
            }

            _context.Entry(quizInDatabase).CurrentValues.SetValues(quizDto);

            foreach (var choice in quizDto.Choices)
            {
                var choiceItem = quizInDatabase.Choices
                                 .SingleOrDefault(q => q.Id == choice.Id && q.Id != 0);
                _context.Entry(choiceItem).CurrentValues.SetValues(choice);
            }
            // Mapper.Map(quizInDatabase, quizDto);

            _context.SaveChanges();
        }
Beispiel #2
0
        public async Task GetUserQuizWithId_JustCalled_ReturnQuizIdAndQuizDto()
        {
            // Arrange
            var quizDto = new QuizDto();

            _mapperMock
            .Setup(m => m.Map <QuizDto>(It.IsAny <Quiz>()))
            .Returns(quizDto);

            _quizDaoMock
            .Setup(m => m.GetUserQuiz(Username))
            .ReturnsAsync(new Quiz {
                Id = QuizId
            });

            // Act
            var(actualQuizId, actualQuizDto) = await _service.GetUserQuizWithId(Username);

            // Assert
            Assert.Equal(QuizId, actualQuizId);
            Assert.Same(quizDto, actualQuizDto);
            _quizDaoMock.Verify(x => x.GetUserQuiz(Username), Times.Once);
            _quizDaoMock.VerifyNoOtherCalls();
            _mapperMock.Verify(m => m.Map <QuizDto>(It.IsAny <Quiz>()), Times.Once);
            _mapperMock.VerifyNoOtherCalls();
        }
Beispiel #3
0
        public async Task <IActionResult> AddQuiz(QuizDto quiz)
        {
            var questionToAdd = new QuizQuestion();

            questionToAdd.Question = quiz.Question;

            _repo.Add(questionToAdd);

            if (await _repo.SaveAll())
            {
                foreach (var option in quiz.Options)
                {
                    var optionToAdd = new Option();
                    optionToAdd.Answer    = option.Answer;
                    optionToAdd.IsCorrect = option.isCorrect;

                    optionToAdd.Question = await _repo.GetQuizQuestionAsync(questionToAdd.Id);

                    _repo.Add(optionToAdd);
                    await _repo.SaveAll();
                }

                return(Ok(quiz));
            }

            throw new Exception("Question failed to add");
        }
Beispiel #4
0
        public async Task <IDataResult <QuizDto> > DeleteAsync(QuizDto entity)
        {
            var response = new DataResult <QuizDto>();

            try
            {
                var result = await _quizDal.DeleteAsync(_mapper.Map <Quizs>(entity));

                await _unitOfWork.CompletedAsync();

                if (result.Successeded && result.Data != null)
                {
                    response.Message     = "Quiz Silme İşlemi Başarılı";
                    response.Data        = _mapper.Map <QuizDto>(result.Data);
                    response.Successeded = result.Successeded;
                }
                else
                {
                    response.Message     = "İşlem Sırasında Hata Oluştu";
                    response.Successeded = false;
                    response.Data        = null;
                }
            }
            catch (Exception exception)
            {
                response.Message     = exception.Message;
                response.Successeded = false;
                response.Data        = null;
            }
            return(response);
        }
Beispiel #5
0
        public QuizDto GetQuiz(int quizId = 0)
        {
            if (quizId == 0)
            {
                return new QuizDto()
                       {
                           Questions = new ObservableCollection <QuestionDto>()
                       }
            }
            ;

            QuizDto quizDto = new QuizDto();

            quizDto.Questions = new ObservableCollection <QuestionDto>();

            QuizModel quizModel = quizRepository.Get(quizId);

            quizDto.QuizId = quizModel.QuizId;
            quizDto.Name   = quizModel.QuizName;

            List <QuestionModel> questionList = questionRepository.GetByQuizId(quizId).ToList();

            foreach (QuestionModel questionModel in questionList)
            {
                quizDto.Questions.Add(new QuestionDto()
                {
                    QuestionId = questionModel.QuestionId,
                    Question   = questionModel.Question
                });
            }

            return(quizDto);
        }
Beispiel #6
0
        public bool CreateQuiz(QuizDto quizDto)
        {
            using var dbContext = _dbContextFactory.GetDbContext();

            try
            {
                dbContext.Quizes.Add(new Quiz
                {
                    Question = quizDto.Question,
                    PointsPerCorrectAnswer = quizDto.PointsPerCorrectAnswer,
                    Complexity             = quizDto.Complexity,
                    Options = quizDto.Options.Select(
                        quizOptionDto => new QuizOption {
                        Text = quizOptionDto.Text
                    }
                        ).ToList(),
                    CorrectAnswers = quizDto.CorrectAnswers.Select(
                        quizOptionDto => new QuizOption {
                        Text = quizOptionDto.Text
                    }
                        ).ToList()
                });


                dbContext.SaveChanges();

                return(true);
            }
            catch
            {
                return(false);
            }
        }
Beispiel #7
0
        public async Task <ActionResult> DeleteAsync(QuizDto quizDto)
        {
            var result = await _quizService.DeleteAsync(quizDto);

            if (!result.Successeded && result.Data == null)
            {
                return(BadRequest(result));
            }
            return(Ok(result));
        }
Beispiel #8
0
        /// <summary>
        /// Выполняет преобразование <see cref="QuizDto"/> в <see cref="SimpleQuizModel"/>.
        /// </summary>
        /// <param name="dto">Исходный объект.</param>
        /// <returns>Преобразованный объект.</returns>
        public static SimpleQuizModel SimpleTranslate(QuizDto dto)
        {
            var model = new SimpleQuizModel
            {
                Id            = dto.Id,
                Title         = dto.Title,
                TotalTimeSecs = dto.TotalTimeSecs,
            };

            return(model);
        }
Beispiel #9
0
        public async Task <QuizDto> CreateQuiz(QuizDto quizDto)
        {
            var quiz    = _mapper.Map <Quiz>(quizDto);
            var quizzes = await _dbContext.Quizzes.AddAsync(quiz);

            _dbContext.SaveChanges();
            //quizzes.MapTo<AgentUserModel>()
            var quizResult = _mapper.Map <QuizDto>(quiz);

            return(quizResult);
        }
Beispiel #10
0
        public async Task <QuizDto> Update(QuizDto quizDto)
        {
            Validation(quizDto);
            var entity = _mapper.Map(quizDto, new Quiz());

            entity.QuizUrl = GenerateUrl(quizDto.Id);
            _quizRepository.Update(entity);
            await _quizRepository.SaveAsync().ConfigureAwait(false);

            return(_mapper.Map <Quiz, QuizDto>(entity));
        }
        public async Task <Quiz> Create(QuizDto quizDto)
        {
            var quiz = _autoMapper.Map <QuizDto, Quiz>(quizDto);
            await _db.Quizzes.AddAsync(quiz);

            await _db.QuizItems.AddRangeAsync(quiz.Items);

            await _db.SaveChangesAsync(CancellationToken.None);

            return(quiz);
        }
        public async Task <ActionResult <QuizDto> > PostQuiz(QuizDto quiz)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest());
            }
            quiz.UserId = User.FindFirstValue(ClaimTypes.NameIdentifier);
            await _quizService.Insert(quiz).ConfigureAwait(false);

            return(Ok(quiz));
        }
 public async Task <ApiResponse> Update(QuizDto quizDto)
 {
     try
     {
         return(new ApiResponse(Status200OK, "Updated Quiz", await _quizStore.Update(quizDto)));
     }
     catch (InvalidDataException dataException)
     {
         return(new ApiResponse(Status400BadRequest, "Failed to update Quiz"));
     }
 }
        /// <summary>
        /// Выполняет трансляцию DTO в модель редактирования теста.
        /// </summary>
        /// <param name="dto">DTO-объект теста.</param>
        /// <returns>Модель с описанием теста.</returns>
        private EditQuizViewModel TranslateEditQuizModel(QuizDto dto)
        {
            var model = new EditQuizViewModel
            {
                QuizId        = dto.Id,
                Title         = dto.Title,
                TotalTimeSecs = dto.TotalTimeSecs,
                QuizBlocks    = dto.QuizBlocks.Select(TranslateQuizBlockModel).ToList()
            };

            return(model);
        }
        /// <summary>
        /// Выполняет трансляцию DTO в модель создания теста.
        /// </summary>
        /// <param name="dto">DTO-объект теста.</param>
        /// <returns>Модель с описанием теста.</returns>
        private CreateQuizViewModel TranslateCreateQuizModel(QuizDto dto)
        {
            var model = new CreateQuizViewModel
            {
                Title              = dto.Title,
                TotalTimeSecs      = dto.TotalTimeSecs,
                MaxQuizBlocksCount = dto.MaxQuizBlocksCount,
                QuizBlocks         = dto.QuizBlocks.Select(TranslateQuizBlockModel).ToList()
            };

            return(model);
        }
        /// <summary>
        /// Выполняет трансляцию модели создания теста в DTO.
        /// </summary>
        /// <param name="model">Модель с описанием теста.</param>
        /// <returns>DTO-объект теста.</returns>
        private QuizDto TranslateCreateQuizModel(CreateQuizViewModel model)
        {
            var dto = new QuizDto
            {
                Title              = model.Title,
                TotalTimeSecs      = model.TotalTimeSecs,
                MaxQuizBlocksCount = model.MaxQuizBlocksCount,
                QuizBlocks         = model.QuizBlocks.Select(TranslateQuizBlockModel).ToList()
            };

            return(dto);
        }
Beispiel #17
0
        void ValidateQuiz(QuizDto quiz)
        {
            if (quiz.Name == "")
            {
                throw new ArgumentException("La encuesta debe tener un nombre");
            }

            if (quiz.Questions.Count() == 0)
            {
                throw new ArgumentException("Al menos debe existir una pregunta");
            }
        }
Beispiel #18
0
        /// <summary>
        /// Выполняет преобразование <see cref="QuizDto"/> в <see cref="QuizModel"/>.
        /// </summary>
        /// <param name="dto">Исходный объект.</param>
        /// <returns>Преобразованный объект.</returns>
        public static QuizModel Translate(QuizDto dto)
        {
            var model = new QuizModel
            {
                Id            = dto.Id,
                Title         = dto.Title,
                TotalTimeSecs = dto.TotalTimeSecs,
                MaxQuizBlocks = dto.MaxQuizBlocksCount,
                QuizBlocks    = dto.QuizBlocks.Select(Translate).ToList(),
            };

            return(model);
        }
Beispiel #19
0
 public void AddQuestionToQuiz(QuizDto quiz, QuestionDto question)
 {
     if (quiz.Questions.Count < 5)
     {
         quiz.Questions.Add(new QuestionDto()
         {
             Question = question.Question
         });
     }
     else
     {
         throw new Exception("Solo se permiten 5 preguntas por encuesta");
     }
 }
Beispiel #20
0
        public async Task <QuizDto> CreateQuiz(QuizDto dto)
        {
            try
            {
                HttpResponseMessage response;
                response = await _client.PostAsJsonAsync("quiz", dto).ContinueWith((postTask) => postTask.Result.EnsureSuccessStatusCode());

                var retVal = response.Content.ReadAsAsync <QuizDto>().Result;
                return(retVal);
            }
            catch (Exception ex)
            {
                return(null);
            }
        }
        public async Task <Quiz> Update(QuizDto quizDto)
        {
            var quiz = await _db.Quizzes.SingleOrDefaultAsync(t => t.Id == quizDto.Id);

            if (quiz == null)
            {
                throw new InvalidDataException($"Unable to find Quiz with ID: {quizDto.Id}");
            }

            quiz = _autoMapper.Map(quizDto, quiz);
            _db.Quizzes.Update(quiz);
            //_db.QuizItems.UpdateRange(quiz.Items);
            await _db.SaveChangesAsync(CancellationToken.None);

            return(quiz);
        }
        public async Task <ActionResult <Quiz> > PostQuiz(QuizDto quizDto)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            var quiz = _mapper.Map <Quiz>(quizDto);

            quiz.OwnerId = HttpContext.User.Claims.First().Value;

            await _context.Quizzes.AddAsync(quiz);

            await _context.SaveChangesAsync();

            return(CreatedAtAction("GetQuiz", new { id = quiz.Id }, _mapper.Map <QuizDto>(quiz)));
        }
Beispiel #23
0
        public async Task <IActionResult> PostQuiz([FromBody] QuizDto quizDto)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            var userId = GetCurrentUserId();
            var quiz   = new Quiz
            {
                Questions = quizDto.Questions,
                Title     = quizDto.Title,
                OwnerId   = userId
            };

            _context.Quizzes.Add(quiz);
            await _context.SaveChangesAsync();

            return(CreatedAtAction("GetQuiz", new { id = quiz.Id }, quiz));
        }
        public IHttpActionResult CreateQuiz(QuizDto quizDto)
        {
            if (!ModelState.IsValid)
            {
                var errors = ModelState.Select(m => m.Value.Errors)
                             .Where(e => e.Count > 0)
                             .ToList();
                return(BadRequest());
            }

            //quizDto.LanguageId = quizDto.Language.Id;
            //quizDto.LevelId = quizDto.Level.Id;
            //quizDto.CategoryId = quizDto.Category.Id;

            var quiz = Mapper.Map <QuizDto, Quiz>(quizDto);

            _context.Quizzes.Add(quiz);
            _context.SaveChanges();

            quizDto.Id = quiz.Id;

            return(Created(new Uri(Request.RequestUri + "/" + quiz.Id), quizDto));
        }
Beispiel #25
0
        public ActionResult AddNewQuiz(QuizDto quizDto)
        {
            if (!ModelState.IsValid)
            {
                return(View(quizDto));
            }
            else
            {
                var requestPath = "quiz/add-quiz";
                var content     = QuizClientOptions.StringContent(quizDto);
                var request     = _httpClient.PostAsync(requestPath, content);

                var response = request.Result.Content.ReadAsStringAsync();
                var entity   = JsonConvert.DeserializeObject <DataResult <QuizDto> >(response.Result);
                if (entity.Data != null && entity.Successeded)
                {
                    return(RedirectToAction("AddNewQuiz", "Quiz"));
                }
                else
                {
                    return(View(quizDto));
                }
            }
        }
        public async Task <IActionResult> PutQuiz(int id, QuizDto quizDto)
        {
            if (id != quizDto.Id)
            {
                return(BadRequest());
            }

            var quiz = await _context.Quizzes.SingleOrDefaultAsync(x => x.Id == id);

            if (quiz.OwnerId != HttpContext.User.Claims.First().Value)
            {
                return(BadRequest());
            }

            _mapper.Map(quizDto, quiz);

            _context.Entry(quiz).State = EntityState.Modified;

            try
            {
                await _context.SaveChangesAsync();
            }
            catch (DbUpdateConcurrencyException)
            {
                if (!QuizExists(id))
                {
                    return(NotFound());
                }
                else
                {
                    throw;
                }
            }

            return(NoContent());
        }
Beispiel #27
0
        public async Task StartQuiz_JustCalled_ReturnDtoFromMapper()
        {
            // Arrange
            var quiz = new Quiz {
                Id = QuizId, Challenge = null
            };
            var quizDto = new QuizDto();

            _mapperMock
            .Setup(m => m.Map <QuizDto>(It.IsAny <Quiz>()))
            .Returns(quizDto);

            _quizDaoMock
            .Setup(m => m.AddUserToQuizOrCreateNew(Username))
            .ReturnsAsync(quiz);

            // Act
            var actualQuizDto = await _service.StartQuiz(Username);

            // Assert
            Assert.Same(quizDto, actualQuizDto);
            _mapperMock.Verify(x => x.Map <QuizDto>(quiz), Times.Once);
            _mapperMock.VerifyNoOtherCalls();
        }
Beispiel #28
0
        private void Validation(QuizDto dto)
        {
            var validator = new QuizValidator();

            validator.ValidateAndThrow(dto);
        }
        public async Task <ApiResponse> Create(QuizDto quizDto)
        {
            var quiz = await _quizStore.Create(quizDto);

            return(new ApiResponse(Status200OK, "Created Quiz", quiz));
        }
Beispiel #30
0
 public async Task <ApiResponse> Put([FromBody] QuizDto quiz)
 => ModelState.IsValid ?
 await _quizManager.Update(quiz) :
 new ApiResponse(Status400BadRequest, "Quiz Model is Invalid");