package de.accso.flexinale.besucherportal.application.services;

import de.accso.flexinale.backoffice_api_contract.api_contract.model.VorfuehrungTO;

import java.time.LocalDateTime;

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

public final class VorfuehrungService {

    public boolean vorfuehrungUeberlapptMit(final VorfuehrungTO one, final VorfuehrungTO other,
                                            final Integer oneDauerInMinuten, final Integer otherDauerInMinuten,
                                            final long puffer) {
        LocalDateTime begin = getRawOrNull(one.zeit());
        LocalDateTime beginOther = getRawOrNull(other.zeit());
        LocalDateTime end = begin.plusMinutes(oneDauerInMinuten);
        LocalDateTime endOther = beginOther.plusMinutes(otherDauerInMinuten);

        return ((begin.isBefore(endOther.plusMinutes(puffer)))
                && (end.isAfter(beginOther.minusMinutes(puffer))));
    }
}
