package nl.connectedit.swiss.mapper; import lombok.RequiredArgsConstructor; import nl.connectedit.swiss.domain.entity.Team; import nl.connectedit.swiss.domain.entity.TournamentPlayer; import nl.connectedit.swiss.domain.entity.TournamentPlayerSubstitution; import nl.connectedit.swiss.dto.TeamDto; import nl.connectedit.swiss.dto.TournamentPlayerDto; import nl.connectedit.swiss.dto.TournamentPlayerSubstitutionDto; import org.springframework.stereotype.Component; import java.util.ArrayList; @Component @RequiredArgsConstructor public class TournamentPlayerMapper implements DtoMapper { @Override public TournamentPlayerDto toDto(TournamentPlayer tournamentPlayer) { var tournamentPlayerDto = new TournamentPlayerDto(); tournamentPlayerDto.setId(tournamentPlayer.getId()); tournamentPlayerDto.setPlayerId(tournamentPlayer.getPlayer().getId()); tournamentPlayerDto.setName(tournamentPlayer.getPlayer().getFullName()); tournamentPlayerDto.setEvents(new ArrayList<>(tournamentPlayer.getEvents())); tournamentPlayerDto.setPaid(tournamentPlayer.isPaid()); tournamentPlayerDto.setPresent(tournamentPlayer.isPresent()); tournamentPlayerDto.setCounting(tournamentPlayer.isCounting()); tournamentPlayerDto.setCounts(tournamentPlayer.getCounts()); if (tournamentPlayer.getSubstitutions() != null) { tournamentPlayerDto.setSubstitutions( tournamentPlayer.getSubstitutions() .stream() .map(this::mapSubstitution) .toList()); } return tournamentPlayerDto; } private TournamentPlayerSubstitutionDto mapSubstitution(TournamentPlayerSubstitution tournamentPlayerSubstitution) { var tournamentPlayerSubstitutionDto = new TournamentPlayerSubstitutionDto(); tournamentPlayerSubstitutionDto.setSubstitutionId(tournamentPlayerSubstitution.getId()); tournamentPlayerSubstitutionDto.setEvent(tournamentPlayerSubstitution.getEvent().getType().name()); if (tournamentPlayerSubstitution.getSubstitute() != null) { // tournamentPlayerSubstitutionDto.setSubstitute(toDto(tournamentPlayerSubstitution.getSubstitute())); tournamentPlayerSubstitutionDto.setSubstitute(tournamentPlayerSubstitution.getSubstitute().getId()); } return tournamentPlayerSubstitutionDto; } }