Exemplo n.º 1
0
        public async Task <ActionResult <BilliardsTournamentMembersDto> > GetPlayoffMatch(BilliardsTournamentMembersDto dto)
        {
            var matches = await unitOfWork.UserWins.GetPlayoffMatchesVsUser(dto.UserId, dto.OpponentUserId, dto.TournamentId);

            var modes = await unitOfWork.BilliardsModeRepository.GetTournamentModesAsync(dto.TournamentId);


            var newDto = new BilliardsTournamentMembersDto();

            // total all time wins
            foreach (var match in matches)
            {
                foreach (var mode in modes)
                {
                    // count non playoff wins
                    if (mode.IsPlayoff && mode.ModeId == match.ModeId)
                    {
                        if (match.WinUserId == dto.UserId)
                        {
                            newDto.Wins += match.WinnerWins;
                        }
                        else
                        {
                            newDto.Wins += match.LoserWins;
                        }

                        newDto.TotalGamesPlayed += match.TotalGamesPlayed;
                    }
                }
            }

            return(Ok(newDto));
        }
Exemplo n.º 2
0
        public async Task <ActionResult <BilliardsTournamentMembersDto> > GetTypeMatch(BilliardsTournamentMembersDto dto)
        {
            var matches = await unitOfWork.UserWins.GetTypeMatchesVsUser(dto.UserId, dto.OpponentUserId, dto.TournamentId, dto.TypeId);

            var newDto = new BilliardsTournamentMembersDto();

            // total all time wins
            foreach (var match in matches)
            {
                if (match.WinUserId == dto.UserId)
                {
                    newDto.Wins += match.WinnerWins;
                }
                else
                {
                    newDto.Wins += match.LoserWins;
                }

                newDto.TotalGamesPlayed += match.TotalGamesPlayed;
            }

            return(Ok(newDto));
        }
        public async Task <ActionResult> InsertMembers(BilliardsTournamentMembersDto dto)
        {
            var tour = await unitOfWork.BilliardsTournamentRepository.GetTournamentById(dto.TournamentId);

            if (tour == null)
            {
                return(BadRequest("Selected tournament doesn't exist!"));
            }

            var user = await unitOfWork.UserRepository.GetUserByIdAsync(dto.UserId);

            if (user == null)
            {
                return(BadRequest("User doesn't exist!"));
            }
            if (user.UserName == "admin")
            {
                return(BadRequest("Admin cannot be added!"));
            }

            // already a member
            var alreadyMember = await unitOfWork.BilliardsTournamentMembersRepository.GetMemberOfTournament(dto.TournamentId, dto.UserId);

            if (alreadyMember != null)
            {
                return(BadRequest("User is already a member!"));
            }

            unitOfWork.BilliardsTournamentMembersRepository.InsertMemberInTournament(mapper.Map <TournamentMembers>(dto));
            if (await unitOfWork.Complete())
            {
                return(NoContent());
            }

            return(BadRequest("Unable to add user to tournament"));
        }