package at.procon.eventhub.processing.driverworkingtime.dto;

import at.procon.eventhub.processing.driverworkingtime.model.DriverWorkingTimeActivityInterval;
import at.procon.eventhub.processing.driverworkingtime.model.DriverWorkingTimeDrivingInterruptionInterval;
import at.procon.eventhub.processing.driverworkingtime.model.DriverWorkingTimePotentialInVehicleTripInterval;
import at.procon.eventhub.processing.driverworkingtime.model.DriverWorkingTimeRestCoverageInterval;
import at.procon.eventhub.processing.driverworkingtime.model.DriverWorkingTimeSupportGeoEvent;
import at.procon.eventhub.processing.driverworkingtime.model.DriverWorkingTimeVehicleUsageInterval;
import at.procon.eventhub.processing.driverworkingtime.model.DriverWorkingTimeVuCardAbsentInterval;
import java.time.OffsetDateTime;
import java.util.List;
import java.util.UUID;

public record DriverWorkingTimeProcessingResultDto(
        UUID sessionId,
        String driverKey,
        String sourceKind,
        OffsetDateTime loadedFrom,
        OffsetDateTime loadedTo,
        OffsetDateTime requestedFrom,
        OffsetDateTime requestedTo,
        int activityIntervalCount,
        int drivingIntervalCount,
        int drivingInterruptionIntervalCount,
        int drivingInterruptionVehicleChangeIntervalCount,
        int dailyWeeklyRestCandidateIntervalCount,
        int dailyWeeklyRestCandidateCoverageIntervalCount,
        int unclassifiedDailyWeeklyRestCandidateCoverageIntervalCount,
        int potentialHomeOvernightStayIntervalCount,
        int potentialInVehicleOvernightStayIntervalCount,
        int potentialInVehicleTripIntervalCount,
        int vehicleUsageIntervalCount,
        int vuCardAbsentIntervalCount,
        int supportGeoEventCount,
        List<DriverWorkingTimeActivityInterval> activityIntervals,
        List<DriverWorkingTimeActivityInterval> drivingIntervals,
        List<DriverWorkingTimeDrivingInterruptionInterval> drivingInterruptionIntervals,
        List<DriverWorkingTimeDrivingInterruptionInterval> drivingInterruptionVehicleChangeIntervals,
        List<DriverWorkingTimeDrivingInterruptionInterval> dailyWeeklyRestCandidateIntervals,
        List<DriverWorkingTimeRestCoverageInterval> dailyWeeklyRestCandidateCoverageIntervals,
        List<DriverWorkingTimeRestCoverageInterval> unclassifiedDailyWeeklyRestCandidateCoverageIntervals,
        List<DriverWorkingTimeRestCoverageInterval> potentialHomeOvernightStayIntervals,
        List<DriverWorkingTimeRestCoverageInterval> potentialInVehicleOvernightStayIntervals,
        List<DriverWorkingTimePotentialInVehicleTripInterval> potentialInVehicleTripIntervals,
        List<DriverWorkingTimeVehicleUsageInterval> vehicleUsageIntervals,
        List<DriverWorkingTimeVuCardAbsentInterval> vuCardAbsentIntervals,
        List<DriverWorkingTimeSupportGeoEvent> supportGeoEvents,
        List<String> notes
) {
}
