Exemplo n.º 1
0
        public async Task <ActionResult <QuizResponse> > Create([FromBody] QuizCreateRequest model)
        {
            var userName = this.User.Identity.Name;

            var user = this.userManager.Users.SingleOrDefault(u => u.UserName == userName);

            if (!this.ModelState.IsValid)
            {
                return(BadRequest());
            }

            string imageUrl = null;

            if (model.ImageUrl != null)
            {
                imageUrl = this.cloudinaryService.UploadPictureAsync(
                    model.ImageUrl,
                    model.Name);
            }

            var quizId = await this.quizzesService.CreateAsync(model.Name, model.CategorieId, user, imageUrl);

            return(new QuizResponse {
                Id = quizId, Name = model.Name
            });
        }
Exemplo n.º 2
0
    public async Task <ObjectResult <QuizResponse> > Create(QuizCreateRequest request)
    {
        var quiz = _mapper.Map <Quiz>(request);

        if (quiz != null)
        {
            quiz.DateAdded = DateTime.Now;
            _quizRepository.Add(quiz);
        }

        quiz.Image = await _imageRepository.GetImageByUrl(request.ImageUrl);

        if (await _quizRepository.SaveChangesAsync())
        {
            _cache.Set($"Quiz {quiz.Id}", quiz);
            _cache.Remove($"Quizzes");

            return(new ObjectResult <QuizResponse> {
                Object = _mapper.Map <QuizResponse>(quiz), Found = true, Success = true
            });
        }
        return(new ObjectResult <QuizResponse> {
            Found = true, Errors = new[] { "Action didn't affect any rows" }
        });
    }
Exemplo n.º 3
0
    public async Task <ActionResult <QuizResponse> > Post(QuizCreateRequest request)
    {
        var createResponse = await _quizService.Create(request);

        if (!createResponse.Success)
        {
            return(BadRequest(createResponse.Errors));
        }
        return(CreatedAtAction(nameof(Get), new { id = createResponse.Object.Id }, createResponse.Object));
    }
Exemplo n.º 4
0
        public override Task <QuizCreatedResponse> CreateGame(QuizCreateRequest request, ServerCallContext context)
        {
            var quiz = new Domain.Entities.Quiz()
            {
                Title       = request.Quiz.Title,
                Description = request.Quiz.Description,
                ImageUrl    = request.Quiz.ImageUrl,
                Questions   = request.Quiz.Questions.Select(x => new Question()
                {
                    Timeout = x.Timeout,
                    Title   = x.Title,
                    Answer  = x.Answers.Select(answer => new Answer()
                    {
                        Description = answer.Description,
                        IsCorrect   = answer.IsCorrect
                    }).ToList(),
                }).ToList()
            };

            var random = new Random();

            ulong id = (ulong)random.Next(21000000, 25000000);

            var game = new QuizGame()
            {
                Quiz    = quiz,
                Id      = id,
                Started = DateTime.UtcNow,
                Users   = new List <Player>()
            };

            var result = _manager.CreateNew(game);

            var response = new QuizCreatedResponse()
            {
                Quiz = request.Quiz,
                Id   = result.Id
            };

            return(Task.FromResult(response));
        }
Exemplo n.º 5
0
        public async Task CreateAsync(QuizCreateRequest Quiz)
        {
            if (Quiz.Questions.Count >= 4)
            {
                var quizResponse = await this.httpClient.PostJsonAsync <QuizResponse>("quizzes/create", Quiz);


                if (quizResponse == null)
                {
                    this.navigationManager.NavigateTo("error");
                }

                foreach (var question in Quiz.Questions)
                {
                    question.QuizId = quizResponse.Id;
                    var questionResponse = await this.httpClient.PostJsonAsync <QuestionResponse>("questions/create", question);

                    if (questionResponse == null)
                    {
                        this.navigationManager.NavigateTo("error");
                    }

                    foreach (var answer in question.Answers)
                    {
                        answer.QuestionId = questionResponse.Id;
                        var answerResponse = await this.httpClient.PostJsonAsync <AnswerResponse>("answers/create", answer);

                        if (answerResponse == null)
                        {
                            this.navigationManager.NavigateTo("error");
                        }
                    }
                }

                this.navigationManager.NavigateTo($"quizzes/my-quizzes");
            }
        }