Files
swiss-backend/src/main/java/nl/connectedit/swiss/mapper/GroupMapper.java
2024-10-12 13:37:59 +02:00

56 lines
1.6 KiB
Java

package nl.connectedit.swiss.mapper;
import java.util.ArrayList;
import lombok.RequiredArgsConstructor;
import nl.connectedit.swiss.domain.Status;
import nl.connectedit.swiss.domain.entity.Group;
import nl.connectedit.swiss.domain.entity.Round;
import nl.connectedit.swiss.dto.GroupDto;
import nl.connectedit.swiss.dto.RoundDto;
import nl.connectedit.swiss.service.StandingsService;
import org.springframework.stereotype.Component;
@Component
@RequiredArgsConstructor
public class GroupMapper implements DtoMapper<Group, GroupDto> {
private final TeamMapper teamMapper;
private final RoundMapper roundMapper;
private final StandingsService standingsService;
private final StandingsMapper standingsMapper;
@Override
public GroupDto toDto(Group group) {
var groupDto = new GroupDto();
groupDto.setId(group.getId());
groupDto.setName(group.getName());
groupDto.setType(group.getType().name());
groupDto.setStatus(group.getStatus().name());
groupDto.setTeams(
group.getTeams()
.stream()
.map(teamMapper::toDto)
.toList());
var standingsGroup = new ArrayList<Round>();
var rounds = new ArrayList<RoundDto>();
if (group.getRounds() != null) {
for (var round : group.getRounds()) {
if (round.getStatus() == Status.FINISHED) {
standingsGroup.add(round);
}
rounds.add(roundMapper.toDto(round, standingsGroup, group.getTeams()));
}
}
groupDto.setRounds(rounds);
var standings = standingsService.getStandings(group.getRounds(), group.getTeams());
groupDto.setStandings(standingsMapper.toDto(standings));
return groupDto;
}
}