public async Task Register(Registration registration) { if (IsValid(registration)) { var existingTournament = _tournamentRepository.Exist(tournament => tournament.Id.Equals(registration.TournamentId)); var existingTeam = _teamRepository.Exist(team => team.Id.Equals(registration.TeamId)); var existingRegistration = _registrationRepository.Exist(reg => reg.TournamentId.Equals(registration.TournamentId) && reg.TeamId.Equals(registration.TeamId)); if (existingTournament && existingTeam && !existingRegistration) { await _registrationRepository.Register(registration); } } }