Ejemplo n.º 1
0
        public void Create(CreateQuizDto dto)
        {
            var quiz = _mapper.Map <QuizDbEntity>(dto);

            _DB.Quizzes.Add(quiz);
            _DB.SaveChanges();
        }
Ejemplo n.º 2
0
 public IActionResult Create(CreateQuizDto dto)
 {
     if (ModelState.IsValid)
     {
         _service.Create(dto);
         return RedirectToAction("Index");
     }
     return View(dto);
 }
Ejemplo n.º 3
0
        public CreatedQuizDto AddQuiz(CreateQuizDto createQuizDto)
        {
            var quiz = _repository.Add(new Quiz {
                Date = createQuizDto.Date, QuizName = createQuizDto.Name, QuizOwnerId = createQuizDto.QuizOwnerId
            }).First();

            _repository.Save();
            return(new CreatedQuizDto {
                Id = quiz.Id, Name = quiz.QuizName, Date = quiz.Date
            });
        }
Ejemplo n.º 4
0
        public IActionResult CreateQuizWithRound([FromBody] CreateQuizDto createQuizDto)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }
            var createdQuizDto = _quizRoundService.CreateQuiz(createQuizDto, GetUserEmailFromToken());

            if (createdQuizDto == null)
            {
                return(BadRequest("A quiz owner can't be a player"));
            }
            return(Ok(createQuizDto));
        }
Ejemplo n.º 5
0
        public Quiz CreateQuiz(CreateQuizDto createQuizDto, string currentUserId)
        {
            var owner = applicationUserService.GetUser(currentUserId);

            if (owner != null)
            {
                var quiz = new Quiz()
                {
                    Name  = createQuizDto.Name,
                    Owner = owner
                };
                _context.Quizzes.Add(quiz);
                _context.SaveChanges();
                return(quiz);
            }
            return(null);
        }
Ejemplo n.º 6
0
        public CreatedQuizDto CreateQuiz(CreateQuizDto createQuizDto, string userEmail)
        {
            var user = GetUserFromEmail(userEmail);

            createQuizDto.QuizOwnerId = user.Id;
            var playerIds = createQuizDto.Players.Select(dto => dto.Id);

            if (playerIds.Contains(createQuizDto.QuizOwnerId))
            {
                return(null);
            }
            var addedQuiz = _quizService.AddQuiz(createQuizDto);

            addedQuiz.QuizRoundDto = createQuizDto.Round;
            var addedRound = _roundService.AddRoundToQuiz(addedQuiz.QuizRoundDto, addedQuiz.Id);

            _roundService.InsertUsersIntoTheRoundUserPoints(addedRound.Id, createQuizDto.Players);
            return(new CreatedQuizDto {
                Id = addedQuiz.Id, Name = addedQuiz.Name, Date = addedQuiz.Date, PlayerInQuizDtos = createQuizDto.Players
            });
        }
Ejemplo n.º 7
0
 public ActionResult <Quiz> CreateQuiz(CreateQuizDto createQuizDto)
 {
     return(quizService.CreateQuiz(createQuizDto, HttpContext.User.GetUserId()));
 }
Ejemplo n.º 8
0
        public async Task <ResultDto <CreateQuizDto> > CreateQuiz(CreateQuizViewModel viewModel, int userId)
        {
            var result    = new ResultDto <CreateQuizDto>();
            var questions = _mapper.Map <List <QuestionViewModel>, List <Question> >(viewModel.Questions);

            double effectiveness = CalculatePercentageRate(viewModel.NumberOfPositiveRates, viewModel.NumberOfNegativeRates);

            var quiz = _mapper.Map <Quiz>(viewModel);

            quiz.PointsForGame      = CalculatePointsForEveryQuestion(questions, viewModel.QuizType);
            quiz.SecondsSpendOnQuiz = Math.Round(viewModel.Questions.Sum(x => x.TimeForAnswerInSeconds), 2);
            quiz.UserId             = userId; quiz.RateInNumber = effectiveness;
            var insertedQuiz = await _quizRepository.InsertAndReturnObject(quiz);

            if (insertedQuiz == null)
            {
                result.Errors.Add("Wystapił błąd podczas dodawania wyniku do twojej historii. Ta gra nie zostanie uznana");
                return(result);
            }

            foreach (var question in questions)
            {
                question.QuizId = insertedQuiz.Id;
            }

            int isQuestionsInserted = await _questionRepository.InsertList(questions);

            if (isQuestionsInserted == 0)
            {
                result.Errors.Add("Wystapił błąd podczas dodawania wyniku do twojej historii. Ta gra nie zostanie uznana");
                return(result);
            }

            var quizes = _quizRepository.GetAllBy(x => x.UserId == userId).ToList();

            RateModel rateModel = CalculateCurrentRate(userId, quizes);

            var rate = _rateRepository.GetBy(x => x.UserId == userId);

            bool rateExist = true;

            if (rate == null)
            {
                rate      = new Rate();
                rateExist = false;
            }

            rate.CurrentPercentageRate = rateModel.PercentageRate;
            rate.NumberOfPlayedGames   = rateModel.CountOfQuizes;
            rate.PointsForAllGames     = rateModel.PointsForAllGames;
            rate.UserId = userId;

            if (rateExist)
            {
                rate.CreationDate = rate.CreationDate;
                int isRateUpdated = _rateRepository.Update(rate);
                if (isRateUpdated == 0)
                {
                    result.Errors.Add("Wystąpił błąd podczas dodawania nowych danych do twojego rankingu");
                    return(result);
                }
            }
            else
            {
                int isRateInserted = await _rateRepository.Insert(rate);

                if (isRateInserted == 0)
                {
                    result.Errors.Add("Wystąpił błąd podczas dodawania oceny");
                    return(result);
                }
            }

            var quizDto = new CreateQuizDto();

            quizDto.ActualPoints               = rate.PointsForAllGames;
            quizDto.NumberOfPlayedGames        = rate.NumberOfPlayedGames;
            quizDto.Effectiveness              = rate.CurrentPercentageRate;
            quizDto.NumberOfAllPositiveAnswers = rateModel.NumberOfAllPositiveAnswers;
            quizDto.NumberOfAllNegativeAnswers = rateModel.NumberOfAllNegativeAnswers;

            quizDto.TimeAverage = Math.Round(quizes.Sum(x => x.SecondsSpendOnQuiz) / rateModel.CountOfQuizes, 2);

            var rates = _rateRepository.GetAll(x => x.User.UserSetting).OrderByDescending(x => x.CurrentPercentageRate).ToList();

            var SimilarUsers = new List <SimilarUserDto>();

            var ratesWithoutRequestingUser = rates.Where(x => x.UserId != userId).Take(6).ToList();

            quizDto.PlaceInRank = GetPlaceInRank(ratesWithoutRequestingUser, rates.Single(x => x.UserId == userId).CurrentPercentageRate);

            if (ratesWithoutRequestingUser.Count() > 0)
            {
                foreach (var el in rates)
                {
                    SimilarUsers.Add(new SimilarUserDto(el.User.Username, el.User.Sex, el.User.UserSetting != null ? el.User.UserSetting.PathToAvatar : "",
                                                        el.NumberOfPlayedGames, el.Id, el.PointsForAllGames));
                }
                quizDto.SimilarUsers = SimilarUsers;
            }
            result.SuccessResult = quizDto;

            return(result);
        }
 public async Task CreateQuizAsync([FromBody] CreateQuizDto quiz)
 {
 }
Ejemplo n.º 10
0
        public async Task <ActionResult <CreatedQuizDto> > CreateQuestion(CreateQuizDto createQuestionDto)
        {
            var result = await _mediator.Send(new CreateQuizCommand(createQuestionDto));

            return(Ok(result));
        }
 public CreateQuizCommand(CreateQuizDto createQuizDto)
 {
     Dto = createQuizDto;
 }
Ejemplo n.º 12
0
 public IActionResult Create([FromBody] CreateQuizDto dto)
 {
     _service.Create(dto);
     return(Ok(GetResponse()));
 }