Example #1
0
        public async Task AddLevelResult(GameLevelParticipantViewModel model, GoUser user)
        {
            var gameLevelParticipant = this.levelsParticipantRepository.All()
                                       .FirstOrDefault(x => x.GameId == model.GameId && x.LevelId == model.LevelId &&
                                                       x.ParticipantId == model.ParticipantId);

            if (gameLevelParticipant == null)
            {
                throw new ArgumentException(ThisGameLevelParticipantNotExist);
            }

            gameLevelParticipant.StatusLevel = model.StatusLevel;

            if (model.StatusLevel == StatusLevel.SuccessfullyPassed)
            {
                var participant = this.usersRepository.All().FirstOrDefault(x => x.Id == model.ParticipantId);

                var level = this.levelsRepository.All().FirstOrDefault(l => l.Id == model.LevelId);

                participant.Points += level.Points;

                await this.usersRepository.SaveChangesAsync();
            }

            await this.levelsParticipantRepository.SaveChangesAsync();
        }
Example #2
0
        public async Task <IActionResult> AddResult(GameLevelParticipantViewModel model)
        {
            if (!ModelState.IsValid)
            {
                return(this.View());
            }

            var user = await userManager.GetUserAsync(HttpContext.User);

            await this.gamesService.AddLevelResult(model, user);

            return(Redirect($"/Games/Details/{model.GameId}"));
        }
Example #3
0
        public async Task AddLevelResult_ShouldThrow_IfGameLevelParticipantNotExist()
        {
            var userRepoBuilder = new GoUserRepositoryBuilder();
            var userRepo        = userRepoBuilder
                                  .WithAll()
                                  .Build();

            var levelsRepoBuilder = new LevelRepositoryBuilder();
            var levelRepo         = levelsRepoBuilder
                                    .WithAll()
                                    .Build();

            var levelsParticipantsRepoBuilder = new GameLevelParticipantRepositoryBuilder();
            var levelsParticipantsRepo        = levelsParticipantsRepoBuilder
                                                .WithAll()
                                                .Build();

            var sut = new GamesService(null, levelRepo, levelsParticipantsRepo, userRepo, Mapper);

            var user = new GoUser {
                Id = "1"
            };

            var gameLevelUserViewModel = new GameLevelParticipantViewModel
            {
                GameId             = "7",
                LevelId            = "6",
                ParticipantId      = "10",
                Participant        = "Saso",
                CorrespondingImage = ConvertImageToByteArray(SetupFileMock().Object),
                StatusLevel        = StatusLevel.SuccessfullyPassed
            };

            var ex = await Assert.ThrowsAsync <ArgumentException>(async() => await sut.AddLevelResult(gameLevelUserViewModel, user));

            Assert.Equal("This GameLevelParticipant not exist!", ex.Message);

            levelsParticipantsRepoBuilder.LevelParticipantRepoMock.Verify();

            userRepoBuilder.UsersRepoMock.Verify(r => r.SaveChangesAsync(), Times.Never);
            levelsParticipantsRepoBuilder.LevelParticipantRepoMock.Verify(r => r.SaveChangesAsync(), Times.Never);
        }
Example #4
0
        public async Task AddLevelResult_ShouldAddResultToGameLevelUserCorrect()
        {
            var userRepoBuilder = new GoUserRepositoryBuilder();
            var userRepo        = userRepoBuilder
                                  .WithAll()
                                  .Build();

            var levelsRepoBuilder = new LevelRepositoryBuilder();
            var levelRepo         = levelsRepoBuilder
                                    .WithAll()
                                    .Build();

            var levelsParticipantsRepoBuilder = new GameLevelParticipantRepositoryBuilder();
            var levelsParticipantsRepo        = levelsParticipantsRepoBuilder
                                                .WithAll()
                                                .Build();

            var sut = new GamesService(null, levelRepo, levelsParticipantsRepo, userRepo, Mapper);

            var user = new GoUser {
                Id = "1"
            };

            var gameLevelUserViewModel = new GameLevelParticipantViewModel
            {
                GameId             = "7",
                LevelId            = "3",
                ParticipantId      = "10",
                Participant        = "Saso",
                CorrespondingImage = ConvertImageToByteArray(SetupFileMock().Object),
                StatusLevel        = StatusLevel.SuccessfullyPassed
            };

            await sut.AddLevelResult(gameLevelUserViewModel, user);

            userRepoBuilder.UsersRepoMock.Verify();
            levelsRepoBuilder.LevelsRepoMock.Verify();
            levelsParticipantsRepoBuilder.LevelParticipantRepoMock.Verify();

            userRepoBuilder.UsersRepoMock.Verify(r => r.SaveChangesAsync(), Times.Once);
            levelsParticipantsRepoBuilder.LevelParticipantRepoMock.Verify(r => r.SaveChangesAsync(), Times.Once);
        }