import { useState, useEffect } from 'react';

const useTelematicsData = () => {
    // Scenario 1: Car parked with doors open
    const scenario1 = {

        vehicle_status: {
            engine: {
                ignition_status: { value: true },
                rpm: { value: 2000 },
                temperature: { value: 88 },
                oil_level: { value: 67 },
                working_status: { value: true },
            },
            fuel: {
                level: { value: 39 },
                volume: { value: 22.2 },
                remaining_range: { value: 280 },
                consumed_fuel: { value: 13.1 },
            },
            speed: {
                current_speed: { value: 30 },
                overspeeding_status: { value: false },
                overspeeding_speed: { value: null, date: null },
            },
            pedal: {
                throttle_pedal_level: { value: false },
                brake_pedal_status: { value: true },
                pedal_clutch_status: { value: false },
            },
        },
        safety_features: {
            seatbelts: {
                driver_seatbelt_status: { value: true },
                front_passenger_seatbelt_status: { value: false },
                central_passenger_seatbelt_status: { value: false },
                left_passenger_seatbelt_status: { value: false },
                right_passenger_seatbelt_status: { value: false },
                indicators: {
                    driver: { value: true },
                    passenger: { value: false },
                },
            },
            braking: {
                brake_pedal_status: { value: 1 },
                harsh_braking_event: { value: true },
            },
            locks: {
                car_closed_status: { value: true },
                remote_closed_status: { value: true },
                events: {
                    locking: { value: true },
                    unlocking: { value: null, date: null },
                },
            },
        },
        doors: {
            door_status: { value: false },
            front_left_door_status: { value: false },
            front_right_door_status: { value: false },
            rear_left_door_status: { value: false },
            rear_right_door_status: { value: false },
        },
        lights: {
            parking_lights_status: { value: false },
            front_fog_status: { value: false },
            rear_fog_lights_status: { value: false },
            hazard_lights_status: { value: true },
        },
        position: {
            latitude: { value: 36.759 },
            longitude: { value: 3.067 },
            altitude: { value: 106 },
            direction: { value: 89 },
            speed: { value: 60 },
            validity: { value: true },
        },
    };

    // Scenario 2: Normal city driving
    const scenario2 = {
        vehicle_status: {
            engine: {
                ignition_status: { value: true },
                rpm: { value: 1800 },
                temperature: { value: 85 },
                oil_level: { value: 68 },
                working_status: { value: true },
            },
            fuel: {
                level: { value: 43 },
                volume: { value: 24.1 },
                remaining_range: { value: 305 },
                consumed_fuel: { value: 11.2 },
            },
            speed: {
                current_speed: { value: 45 },
                overspeeding_status: { value: false },
                overspeeding_speed: { value: null, date: null },
            },
            pedal: {
                throttle_pedal_level: { value: true },
                brake_pedal_status: { value: false },
                pedal_clutch_status: { value: false },
            },
        },
        safety_features: {
            seatbelts: {
                driver_seatbelt_status: { value: true },
                front_passenger_seatbelt_status: { value: true },
                central_passenger_seatbelt_status: { value: false },
                left_passenger_seatbelt_status: { value: false },
                right_passenger_seatbelt_status: { value: false },
                indicators: {
                    driver: { value: true },
                    passenger: { value: true },
                },
            },
            braking: {
                brake_pedal_status: { value: 0 },
                harsh_braking_event: { value: false },
            },
            locks: {
                car_closed_status: { value: true },
                remote_closed_status: { value: true },
                events: {
                    locking: { value: true },
                    unlocking: { value: null, date: null },
                },
            },
        },
        doors: {
            door_status: { value: false },
            front_left_door_status: { value: false },
            front_right_door_status: { value: false },
            rear_left_door_status: { value: false },
            rear_right_door_status: { value: false },
        },
        lights: {
            parking_lights_status: { value: false },
            front_fog_status: { value: true },
            rear_fog_lights_status: { value: false },
            hazard_lights_status: { value: false },
        },
        position: {
            latitude: { value: 36.755 },
            longitude: { value: 3.061 },
            altitude: { value: 102 },
            direction: { value: 87 },
            speed: { value: 120 },
            validity: { value: true },
        },
    };

    // Scenario 3: Highway speeding
    const scenario3 = {
        vehicle_status: {
            engine: {
                ignition_status: { value: true },
                rpm: { value: 3500 },
                temperature: { value: 92 },
                oil_level: { value: 65 },
                working_status: { value: true },
            },
            fuel: {
                level: { value: 40 },
                volume: { value: 22.8 },
                remaining_range: { value: 290 },
                consumed_fuel: { value: 12.7 },
            },
            speed: {
                current_speed: { value: 125 },
                overspeeding_status: { value: true },
                overspeeding_speed: { value: 125, date: new Date() },
            },
            pedal: {
                throttle_pedal_level: { value: true },
                brake_pedal_status: { value: false },
                pedal_clutch_status: { value: false },
            },
        },
        safety_features: {
            seatbelts: {
                driver_seatbelt_status: { value: true },
                front_passenger_seatbelt_status: { value: true },
                central_passenger_seatbelt_status: { value: false },
                left_passenger_seatbelt_status: { value: false },
                right_passenger_seatbelt_status: { value: false },
                indicators: {
                    driver: { value: true },
                    passenger: { value: true },
                },
            },
            braking: {
                brake_pedal_status: { value: 0 },
                harsh_braking_event: { value: false },
            },
            locks: {
                car_closed_status: { value: true },
                remote_closed_status: { value: true },
                events: {
                    locking: { value: true },
                    unlocking: { value: null, date: null },
                },
            },
        },
        doors: {
            door_status: { value: false },
            front_left_door_status: { value: false },
            front_right_door_status: { value: false },
            rear_left_door_status: { value: false },
            rear_right_door_status: { value: false },
        },
        lights: {
            parking_lights_status: { value: false },
            front_fog_status: { value: false },
            rear_fog_lights_status: { value: false },
            hazard_lights_status: { value: false },
        },
        position: {
            latitude: { value: 36.758 },
            longitude: { value: 3.065 },
            altitude: { value: 105 },
            direction: { value: 110 },
            speed: { value: 125 },
            validity: { value: true },
        },
    };

    // Scenario 4: Harsh braking event
    const scenario4 = {


        vehicle_status: {
            engine: {
                ignition_status: { value: false },
                rpm: { value: 0 },
                temperature: { value: 40 },
                oil_level: { value: 70 },
                working_status: { value: false },
            },
            fuel: {
                level: { value: 45 },
                volume: { value: 25.4 },
                remaining_range: { value: 320 },
                consumed_fuel: { value: 10.3 },
            },
            speed: {
                current_speed: { value: 0 },
                overspeeding_status: { value: false },
                overspeeding_speed: { value: null, date: null },
            },
            pedal: {
                throttle_pedal_level: { value: false },
                brake_pedal_status: { value: true },
                pedal_clutch_status: { value: false },
            },
        },
        safety_features: {
            seatbelts: {
                driver_seatbelt_status: { value: false },
                front_passenger_seatbelt_status: { value: false },
                central_passenger_seatbelt_status: { value: false },
                left_passenger_seatbelt_status: { value: false },
                right_passenger_seatbelt_status: { value: false },
                indicators: {
                    driver: { value: false },
                    passenger: { value: false },
                },
            },
            braking: {
                brake_pedal_status: { value: 1 },
                harsh_braking_event: { value: false },
            },
            locks: {
                car_closed_status: { value: false },
                remote_closed_status: { value: false },
                events: {
                    locking: { value: false },
                    unlocking: { value: true, date: new Date() },
                },
            },
        },
        doors: {
            door_status: { value: true },
            front_left_door_status: { value: true },
            front_right_door_status: { value: false },
            rear_left_door_status: { value: false },
            rear_right_door_status: { value: true },
        },
        lights: {
            parking_lights_status: { value: true },
            front_fog_status: { value: false },
            rear_fog_lights_status: { value: false },
            hazard_lights_status: { value: false },
        },
        position: {
            latitude: { value: 36.753 },
            longitude: { value: 3.058 },
            altitude: { value: 100 },
            direction: { value: 85 },
            speed: { value: 0 },
            validity: { value: true },
        },

    };

    const [currentScenarioIndex, setCurrentScenarioIndex] = useState(0);
    const [telematicsData, setTelematicsData] = useState(scenario1);
    const scenarios = [scenario1, scenario2, scenario3, scenario4];

    useEffect(() => {
        const interval = setInterval(() => {
            setCurrentScenarioIndex((prevIndex) => (prevIndex + 1) % scenarios.length);
            // @ts-expect-error ---
            setTelematicsData(scenarios[(currentScenarioIndex + 1) % scenarios.length]);
        }, 3000);

        return () => clearInterval(interval);
         // eslint-disable-next-line
    }, [currentScenarioIndex]);

    return telematicsData;
};

export default useTelematicsData;