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 }); }
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" } }); }
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)); }
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)); }
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"); } }