I feel like adding the timeInterval to beginTime will never make millis() greater because beginTime is set to millis().
Then that is what is wrong. The variable beginTime MUST be set to be equal to millis() when the LOW is FIRST DETECTED on the switch.
Keep a track of the last state of the switch in a global variable and the first detection is when the current state of the switch is low AND the last state was high.
Make the last thing you do in the loop an assignment of the current switch state to the last switch state variable.
This is known as a state change detector and an example is given in the examples section of the IDE.
HINT:- When testing go for shorter time delays, say three seconds, to speed things up. Once it is working then extend the times to the length you want.