public async Task UpdateIsEvaluated_Test()
        {
            await CreateDemoUser();

            // Act
            await UsingDbContextAsync(async context =>
            {
                var johnNashUser = await context.Users.FirstOrDefaultAsync(u => u.UserName == "john.nash");
                johnNashUser.ShouldNotBeNull();

                using (AbpSession.Use(null, johnNashUser.Id))
                {
                    await CreateDemoMindfight();
                    var createdMindfight = await GetDemoMindfight();
                    await UpdateMindfightActiveStatus(createdMindfight);

                    await CreateDemoTour(createdMindfight.Id);
                    var createdTour = await GetDemoTour();

                    await CreateDemoQuestion(createdTour.Id);
                    var createdQuestion = await GetDemoQuestion();

                    await CreateDemoTeam(johnNashUser.Id);
                    var johnNashTeam = await GetDemoTeam();

                    await _registrationService.CreateRegistration(createdMindfight.Id, johnNashTeam.Id);
                    await _registrationService.UpdateConfirmation(createdMindfight.Id, johnNashTeam.Id, true);

                    var teamAnswerDto = new TeamAnswerDto
                    {
                        Answer     = "demoAnswer",
                        QuestionId = createdQuestion.Id,
                        TeamId     = johnNashTeam.Id
                    };

                    await _teamAnswerService.CreateTeamAnswer(
                        new List <TeamAnswerDto> {
                        teamAnswerDto
                    },
                        createdMindfight.Id);

                    var teamAnswer = await _teamAnswerRepository
                                     .FirstOrDefaultAsync(x => x.TeamId == johnNashTeam.Id && x.QuestionId == createdQuestion.Id);
                    teamAnswer.ShouldNotBeNull();

                    await _teamAnswerService.UpdateIsEvaluated(createdQuestion.Id, johnNashTeam.Id, "Demo", 10, true);

                    var updatedTeamAnswer = await _teamAnswerRepository
                                            .FirstOrDefaultAsync(x => x.TeamId == johnNashTeam.Id &&
                                                                 x.QuestionId == createdQuestion.Id &&
                                                                 x.IsEvaluated);
                    updatedTeamAnswer.ShouldNotBeNull();
                }
            });
        }
        public async Task GetTeamResults_Test()
        {
            await CreateDemoUser();

            // Act
            await UsingDbContextAsync(async context =>
            {
                var johnNashUser = await context.Users.FirstOrDefaultAsync(u => u.UserName == "john.nash");
                johnNashUser.ShouldNotBeNull();

                using (AbpSession.Use(null, johnNashUser.Id))
                {
                    await CreateDemoMindfight();
                    var createdMindfight = await GetDemoMindfight();
                    await UpdateMindfightActiveStatus(createdMindfight);

                    await CreateDemoTour(createdMindfight.Id);
                    var createdTour = await GetDemoTour();

                    await CreateDemoQuestion(createdTour.Id);
                    var createdQuestion = await GetDemoQuestion();

                    await CreateDemoTeam(johnNashUser.Id);
                    var johnNashTeam = await GetDemoTeam();

                    await _registrationService.CreateRegistration(createdMindfight.Id, johnNashTeam.Id);
                    await _registrationService.UpdateConfirmation(createdMindfight.Id, johnNashTeam.Id, true);

                    var teamAnswerDto = new TeamAnswerDto
                    {
                        Answer     = "demoAnswer",
                        QuestionId = createdQuestion.Id,
                        TeamId     = johnNashTeam.Id
                    };

                    await _teamAnswerService.CreateTeamAnswer(
                        new List <TeamAnswerDto> {
                        teamAnswerDto
                    },
                        createdMindfight.Id);

                    await _teamAnswerService.UpdateIsEvaluated(createdQuestion.Id, johnNashTeam.Id, "Demo", 10, true);
                    var currentResult = await _resultService.GetTeamResults(johnNashTeam.Id);
                    currentResult.Count.ShouldBeGreaterThanOrEqualTo(1);
                }
            });
        }
Beispiel #3
0
        public async Task <List <TeamAnswerDto> > GetAllTeamAnswers(long mindfightId, long teamId)
        {
            var user = await _userManager.Users
                       .IgnoreQueryFilters()
                       .Include(x => x.Team)
                       .FirstOrDefaultAsync(u => u.Id == _userManager.AbpSession.UserId);

            if (user == null)
            {
                throw new UserFriendlyException("Vartotojas neegzistuoja!");
            }

            var currentTeam = await _teamRepository
                              .GetAll()
                              .FirstOrDefaultAsync(x => x.Id == teamId);

            if (currentTeam == null)
            {
                throw new UserFriendlyException("Komanda su nurodytu id neegzistuoja!");
            }

            var currentMindfight = await _mindfightRepository
                                   .FirstOrDefaultAsync(mindfight => mindfight.Id == mindfightId);

            if (currentMindfight == null)
            {
                throw new UserFriendlyException("Protmūšis su nurodytu id neegzistuoja!");
            }

            var currentTours = await _tourRepository
                               .GetAll()
                               .Include(x => x.Mindfight)
                               .ThenInclude(x => x.Evaluators)
                               .Where(tour => tour.MindfightId == mindfightId)
                               .ToListAsync();

            var currentQuestions = await _questionRepository
                                   .GetAll()
                                   .Where(question => currentTours.Any(tour => question.TourId == tour.Id))
                                   .ToListAsync();

            if (!(
                    currentMindfight.CreatorId == _userManager.AbpSession.UserId ||
                    _permissionChecker.IsGranted("ManageMindfights") ||
                    currentMindfight.Evaluators.Any(x => x.UserId == _userManager.AbpSession.UserId) ||
                    user.TeamId == teamId
                    ))
            {
                throw new AbpAuthorizationException("Jūs neturite teisių gauti šiam atsakymui");
            }

            var teamAnswers = await _teamAnswerRepository
                              .GetAll()
                              .Include(answer => answer.Evaluator)
                              .Include(answer => answer.Question)
                              .ThenInclude(question => question.Tour)
                              .OrderBy(answer => answer.Question.Tour.OrderNumber)
                              .Where(x => currentQuestions.Any(y => y.Id == x.QuestionId) && x.TeamId == teamId)
                              .ToListAsync();

            var teamAnswersDto = new List <TeamAnswerDto>();

            foreach (var teamAnswer in teamAnswers)
            {
                var teamAnswerDto = new TeamAnswerDto();
                _objectMapper.Map(teamAnswer, teamAnswerDto);
                teamAnswerDto.Evaluator       = teamAnswer.Evaluator?.EmailAddress.ToLower();
                teamAnswerDto.TourOrderNumber = teamAnswer.Question.Tour.OrderNumber;
                teamAnswerDto.Answer          = teamAnswer.Question.Answer;
                teamAnswersDto.Add(teamAnswerDto);
            }
            return(teamAnswersDto);
        }
Beispiel #4
0
        public async Task <TeamAnswerDto> GetTeamAnswer(long questionId, long teamId)
        {
            var user = await _userManager.Users
                       .IgnoreQueryFilters()
                       .Include(x => x.Team)
                       .FirstOrDefaultAsync(u => u.Id == _userManager.AbpSession.UserId);

            if (user == null)
            {
                throw new UserFriendlyException("Vartotojas neegzistuoja!");
            }

            var currentQuestion = await _questionRepository
                                  .GetAll()
                                  .Include(x => x.Tour)
                                  .ThenInclude(x => x.Mindfight)
                                  .ThenInclude(x => x.Evaluators)
                                  .FirstOrDefaultAsync(x => x.Id == questionId);

            if (currentQuestion == null)
            {
                throw new UserFriendlyException("Klausimas su nurodytu id neegzistuoja!");
            }

            var currentTeam = await _teamRepository
                              .GetAll()
                              .FirstOrDefaultAsync(x => x.Id == teamId);

            if (currentTeam == null)
            {
                throw new UserFriendlyException("Komanda su nurodytu id neegzistuoja!");
            }

            if (!(currentQuestion.Tour.Mindfight.CreatorId == _userManager.AbpSession.UserId ||
                  _permissionChecker.IsGranted("ManageMindfights") ||
                  currentQuestion.Tour.Mindfight.Evaluators.Any(x => x.UserId == _userManager.AbpSession.UserId) ||
                  user.TeamId == teamId))
            {
                throw new AbpAuthorizationException("Jūs neturite teisių gauti šiuos atsakymus!");
            }

            var teamAnswer = await _teamAnswerRepository
                             .GetAll()
                             .Include(answer => answer.Evaluator)
                             .Include(answer => answer.Question)
                             .ThenInclude(question => question.Tour)
                             .FirstOrDefaultAsync(x => x.QuestionId == questionId && x.TeamId == teamId);

            if (teamAnswer == null)
            {
                throw new UserFriendlyException("Komandos atsakymas neegizstuoja!");
            }

            var teamAnswerDto = new TeamAnswerDto();

            _objectMapper.Map(teamAnswer, teamAnswerDto);
            teamAnswerDto.Evaluator       = teamAnswer.Evaluator?.EmailAddress.ToLower();
            teamAnswerDto.TourOrderNumber = teamAnswer.Question.Tour.OrderNumber;
            teamAnswerDto.Answer          = currentQuestion.Answer;
            return(teamAnswerDto);
        }