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

import de.accso.flexinale.ticketing.api_contract.event.model.TicketTO;
import de.accso.flexinale.ticketing.domain.model.Ticket;

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

public class Ticket2TicketTOMapper {

    public static TicketTO map(final Ticket ticket) {
        TicketTO.VerkaufsKanal verkaufsKanal = switch (ticket.verkaufsKanal) {
            case ONLINE -> TicketTO.VerkaufsKanal.ONLINE;
            case ZENTRAL -> TicketTO.VerkaufsKanal.ZENTRAL;
            case KINOKASSE -> TicketTO.VerkaufsKanal.KINOKASSE;
        };
        return new TicketTO(ticket.id(), ticket.version(), ticket.filmId, ticket.vorfuehrungId,
                ticket.besucherId, verkaufsKanal,
                new TicketTO.Gueltig(getRawOrNull(ticket.gueltig)));
    }
}
