public Result List(QuizAnswerAdminFilterDto dto)
        {
            var result = _actionFactory.Action(dto.Action)?.Apply(dto.Ids) ?? new Result();

            if (!result.Success)
            {
                return(result);
            }

            if (dto.Action == "markanaswer")
            {
                var questionId     = dto.Ids[1];
                var queryAllAnswer = _quizAnswerRepository.AsNoTracking.Where(x => x.QuizQuestionId == questionId);
                queryAllAnswer.Update(u => new QuizAnswer {
                    IsCorrectAnswer = false
                });

                var answerId    = dto.Ids[0];
                var queryAnswer = _quizAnswerRepository.AsNoTracking.Where(x => x.Id == answerId);
                queryAnswer.Update(u => new QuizAnswer {
                    IsCorrectAnswer = true
                });
            }

            var query = _quizAnswerRepository.AsNoTracking;

            query = new QuizAnswerAdminFilter(query, dto).FilteredQuery();
            query = new QuizAnswerAdminListOrder(query, dto).OrderByQuery();

            result.SetPaging(dto?.Page ?? 1, dto?.Size ?? 10, query.Count());

            result.Data = query
                          .Select(s => new
            {
                s.Id,
                s.Answer,
                s.IsCorrectAnswer,
                s.QuizQuestionId
            })
                          .Skip((result.Paging.Page - 1) * result.Paging.Size)
                          .Take(result.Paging.Size);

            return(result);
        }
Example #2
0
 public IHttpActionResult Get([FromUri] QuizAnswerAdminFilterDto dto)
 {
     return(Result(_quizAnswerAdminService.List(dto)));
 }