package de.accso.flexinale.backoffice.api_out.event.mapper;

import de.accso.flexinale.backoffice.api_contract.event.model.FilmTO;
import de.accso.flexinale.backoffice.api_contract.event.model.KinoSaalTO;
import de.accso.flexinale.backoffice.api_contract.event.model.VorfuehrungTO;
import de.accso.flexinale.backoffice.domain.model.Vorfuehrung;

import static de.accso.flexinale.common.shared_kernel.RawWrapper.getRawOrNull;

public final class Vorfuehrung2VorfuehrungTOMapper {

    public static VorfuehrungTO map(final Vorfuehrung vorfuehrung) {
        FilmTO filmTO = Film2FilmTOMapper.map(vorfuehrung.film);
        KinoSaalTO kinoSaalTO = KinoKinoSaal2KinoKinoSaalTOMapper.mapKinoSaal(vorfuehrung.kinoSaal);

        return new VorfuehrungTO(vorfuehrung.id(), vorfuehrung.version(),
                new VorfuehrungTO.Zeit(getRawOrNull(vorfuehrung.zeit)),
                filmTO, kinoSaalTO, kinoSaalTO.kino().id());
    }
}
