public async Task <TournamentAggregate?> FindByIdAsync(TournamentId id) { var tournament = await _context.Tournaments .Include(t => t.TournamentSteps) .ThenInclude <Tournament, TournamentStep, Step>(t => t.Step) .FirstOrDefaultAsync(t => !t.IsDeleted && t.Id == id.Value); return(tournament is null ? null : ToAggregate(tournament)); }
public async Task RemoveAsync(TournamentId id) { var tournament = await _context.Tournaments .FirstOrDefaultAsync(t => !t.IsDeleted && t.Id == id.Value); if (tournament is not null) { tournament.IsDeleted = true; } await _context.SaveChangesAsync(); }
public async Task <string> Handle(LeaveTournamentCommand request, CancellationToken cancellationToken) { var team = await _teamRepository.FindByIdAsync(new TeamId(request.TeamId)); if (team is null) { throw new ApplicationException($"Team with id {request.TeamId} doesn't exists"); } var tournamentId = new TournamentId(request.TournamentId); team.LeaveTournament(tournamentId, _currentUserService.UserId); await _teamRepository.SetAsync(team); return(team.Id.ToString()); }
public void ValidateTournamentLeaving(TournamentId tournamentId, UserId memberId) { var errors = new List <string>(); if (Admin.Id != memberId) { errors.Add($"Member with id {memberId} can't delete team"); } if (!_tournamentIds.Contains(tournamentId)) { errors.Add($"Team is not in tournament : {tournamentId}"); } if (errors.Any()) { throw new DomainException(errors); } }
public void LeaveTournament(TournamentId tournamentId, UserId memberId) { ValidateTournamentLeaving(tournamentId, memberId); _tournamentIds.Remove(tournamentId); }
public void Setup() { _tournamentName = "Test tournament name"; _tournamentDescription = "Test tournament description"; _tournamentId = new TournamentId(Guid.NewGuid()); }