public async Task <QuizDto> Handle(EditQuizCommand request, CancellationToken cancellationToken) { var quiz = await _context.Quizzes .Where(x => x.Id == request.QuizId) .FirstOrDefaultAsync(); if (quiz == null) { throw new RestException(HttpStatusCode.NotFound, "Quiz Not Found"); } var category = await _context.Categories .Where(x => x.Id == request.CategoryId) .FirstOrDefaultAsync(); if (category == null) { throw new RestException(HttpStatusCode.NotFound, "Category Not Found"); } quiz.Title = request.Title; quiz.Description = request.Description; quiz.UpdatedAt = DateTime.Now; quiz.Category = category; quiz.NotificationEmail = request.NotificationEmail; quiz.PublicAnswer = request.PublicAnswer; quiz.PublicQuiz = request.PublicQuiz; _context.Entry(quiz).State = EntityState.Modified; if (await _context.SaveChangesAsync() < 1) { throw new RestException(HttpStatusCode.BadRequest, "Error savig changes"); } var mapper = _customMapper.GetMapper(); var quizDto = mapper.Map <QuizDto>(quiz); quizDto.Category = category.Description; return(quizDto); }
public async Task <QuizDto> Handle(CreateQuizCommand request, CancellationToken cancellationToken) { var category = await _context.Categories .Where(x => x.Id == request.CategoryId) .FirstOrDefaultAsync(); if (category == null) { throw new RestException(HttpStatusCode.NotFound, "Category Not Found"); } var quizToken = "quiz-" + _stringGenerator.RamdomString(25); var quizWithToken = await _context.Quizzes .Where(x => x.QuizToken == quizToken) .FirstOrDefaultAsync(); while (quizWithToken != null) { quizToken = "quiz-" + _stringGenerator.RamdomString(25); quizWithToken = await _context.Quizzes .Where(x => x.QuizToken == quizToken) .FirstOrDefaultAsync(); } var editToken = "edit-" + _stringGenerator.RamdomString(25); var quizWithEditToken = await _context.Quizzes .Where(x => x.EditToken == editToken) .FirstOrDefaultAsync(); while (quizWithEditToken != null) { editToken = "edit-" + _stringGenerator.RamdomString(25); quizWithEditToken = await _context.Quizzes .Where(x => x.EditToken == editToken) .FirstOrDefaultAsync(); } var quiz = new Domain.Quiz { Title = request.Title, Description = request.Description, CreatedAt = DateTime.Now, Category = category, EditToken = editToken, QuizToken = quizToken, NotificationEmail = request.NotificationEmail, PublicAnswer = request.PublicAnswer, PublicQuiz = request.PublicQuiz }; await _context.Quizzes.AddAsync(quiz); if (await _context.SaveChangesAsync() < 1) { throw new RestException(HttpStatusCode.BadRequest, "Error savig changes"); } var mapper = _customMapper.GetMapper(); var quizDto = mapper.Map <QuizDto>(quiz); quizDto.Category = category.Description; return(quizDto); }