import { createContext, useState, useEffect, useContext } from "react";
import moment from "moment";

const userContext=createContext();

const SesstionTime={
    A:["12:00", "13:30"],
    B:["13:30", "15:00"],
    C:["15:00", "17:30"],
    D:["17:30", "19:00"],
    E:["19:00", "20:30"],
    F:["20:30", "22:00"]
}


export function UserProvider({children}) {

    const [userId, setUserId] = useState(null);
    const [sessionId, setSessionId] = useState(null);
    const [password, setPassword] = useState(null);


    function getFileId(){
        if(!userId) return `test-${moment().format("YYYYMMDDmmss")}-${sessionId}`;
        return `${moment().format("YYYYMMDD").substring(2)}-${sessionId}-${userId}`;
    }
    function reset(){
        setUserId(null);
        setSessionId(null);
        setPassword(null);
    }

    useEffect(() => {

        let symbol='';

        for(const [key, value] of Object.entries(SesstionTime)){
            const start=moment(value[0], "HH:mm");
            const end=moment(value[1], "HH:mm");

            if(moment().isBetween(start, end)){
                symbol=key;
                break;
            }
        }
        setSessionId(symbol);
        

    }, [userId]);

    return (
        <userContext.Provider value={{ userId, setUserId, getFileId, setPassword, reset }}>
            {children}
        </userContext.Provider>
    );
}


export function useUser() {
    const context = useContext(userContext);
    if (!context) {
        throw new Error("useUser must be used within a UserProvider");
    }
    return context;
}

export { userContext };