package de.accso.flexinale.besucherportal.api_contract.event.model;

import de.accso.flexinale.common.shared_kernel.*;
import org.apache.commons.lang3.builder.EqualsBuilder;

import java.io.Serializable;

@SuppressWarnings("unused")
public record GutscheinEinloesenAuftragTO(Id id, Version version,
                                          Id filmId, Id vorfuehrungId, Id besucherId,
                                          AnzahlTickets anzahlTickets)
        implements Identifiable, Versionable, EqualsByContent, Serializable
{
    public record AnzahlTickets(Integer raw) implements RawWrapper<Integer> {}

    public enum VerkaufsKanal {
        ONLINE,
        ZENTRAL,
        KINOKASSE
    }

    @Override
    public boolean equalsByContent(final Object o) {
        if (this == o) {return true;}

        if (o == null || getClass() != o.getClass()) {return false;}

        GutscheinEinloesenAuftragTO that = (GutscheinEinloesenAuftragTO) o;

        return new EqualsBuilder()
                .append(id, that.id)
                .append(filmId, that.filmId)
                .append(vorfuehrungId, that.vorfuehrungId)
                .append(besucherId, that.besucherId)
                .append(anzahlTickets, that.anzahlTickets)
                .isEquals();
    }
}
