コード例 #1
0
                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);
                }
コード例 #2
0
                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);
                }