56 lines
1.6 KiB
Java
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;
|
|
}
|
|
}
|