Blinking in case

Hello
I have a problem that I do not know how to solve and so I turn to you for help.
I should when RELAY_DOWN is on BLINK_LAMP should flash, but I don't know how to do this when using "case".
Here is the code on which everything else works, that's all I have left to do and I have difficulties.
I tried millis, but it didn't work.
I use an interpreter and apologize if there are any mistakes.

const int BUTTON_UP = 2;
const int BUTTON_DOWN = 3;
const int IR_STOP = 7;
const int END_UP = 6;
const int END_DOWN = 4;
const int BUTTON_EN = 5;
const int RELAY_UP = 10;
const int RELAY_DOWN = 8;
const int RELAY_MAGNET = 9;
const int RELAY_BUZZER = 11;
const int BLINK_LAMP = 12;
const int ledPin =  13;
int ledState = LOW;


typedef enum
{
    Init,
    Idle,
    ButtonUpPush,
    ButtonUpPull,
    ButtonDownPull,
    ButtonDnPress,
    RelayUp3Sec,
    FastSwich,
    RelayDownStart,
    
}EState;

static EState _State = Init;
static volatile int _LastButUp;
static volatile int _LastButDn;
static volatile int _LastButEn;
static volatile int _LastEndUp;
static volatile int _LastEndDown;
static volatile int _LastIrStop;
static volatile unsigned long _LastTickCounter = 0;
static volatile unsigned long _ButtonEnableCounter = 0;
unsigned long previousMillis = 0;
        
long OnTime = 125;           
long OffTime = 800;


#define TIME1 3000             
#define TIME2 3000            
#define TIME3 10000            
#define TIME4 120000          
#define TIME5 900             
void setup()
{
    pinMode(ledPin, OUTPUT);
    pinMode(BUTTON_UP, INPUT);
    pinMode(BUTTON_DOWN, INPUT);
    pinMode(END_UP, INPUT);
    pinMode(END_DOWN, INPUT);
    pinMode(BUTTON_EN, INPUT);
    pinMode(IR_STOP, INPUT);
    pinMode(RELAY_UP, OUTPUT);
    pinMode(RELAY_DOWN, OUTPUT);
    pinMode(RELAY_MAGNET, OUTPUT);
    pinMode(RELAY_BUZZER, OUTPUT);
    pinMode(BLINK_LAMP, OUTPUT);
    _LastButUp = digitalRead(BUTTON_UP);
    _LastButDn = digitalRead(BUTTON_DOWN);
    _LastButEn = digitalRead(BUTTON_EN);
    _LastEndUp = digitalRead(END_UP);
    _LastEndDown = digitalRead(END_DOWN);
    _LastIrStop = digitalRead(IR_STOP);
    

}

#define BUTTON_FILTER_PERIOD 50 //  50 ms

void loop()
{
    unsigned long currentMillis = millis();
 
  if((ledState == HIGH) && (currentMillis - previousMillis >= OnTime))
  {
    ledState = LOW; 
    previousMillis = currentMillis;  
    digitalWrite(ledPin, ledState);  
  }
  else if ((ledState == LOW) && (currentMillis - previousMillis >= OffTime))
  {
    ledState = HIGH;  
    previousMillis = currentMillis;   
    digitalWrite(ledPin, ledState);    
  }
    

       
    switch (_State)
    {

    case Init: // initialization - (only first time)
        digitalWrite(RELAY_MAGNET, LOW);
        digitalWrite(RELAY_UP, LOW);
        digitalWrite(RELAY_DOWN, LOW);
        digitalWrite(RELAY_BUZZER, LOW);
        digitalWrite(BLINK_LAMP, LOW);
        _State = Idle;

    case Idle:
        break;

    case ButtonUpPush:
        if (digitalRead(END_UP) == LOW)
        {
            _State = Init;

        }
        else
        {
            digitalWrite(RELAY_MAGNET, LOW);
            digitalWrite(RELAY_UP, HIGH);
            digitalWrite(RELAY_DOWN, LOW);
            digitalWrite(RELAY_BUZZER, HIGH);
            _LastTickCounter = millis();
            _State = ButtonUpPull;
        }
        break;

       
    case ButtonUpPull:
        if (digitalRead(END_UP) == LOW)
        {
            _State = Init;
        }
        else
        {
           if ((millis() - _LastTickCounter) < TIME4) break;
           digitalWrite(RELAY_UP, LOW);
           digitalWrite(RELAY_BUZZER, LOW);
          _LastTickCounter = millis();
          _State = Init;
        }
        break;

     case ButtonDnPress:
        if (digitalRead(END_DOWN) == LOW)
        {
            _State = Init;

        }
        else
        {
            digitalWrite(RELAY_UP, HIGH);
            digitalWrite(RELAY_BUZZER, HIGH);
            _LastTickCounter = millis();
            _State = RelayUp3Sec;
        }
        
        break;

    case RelayUp3Sec:
        if ((millis() - _LastTickCounter) < TIME1) break;
        digitalWrite(RELAY_UP, LOW);
        digitalWrite(RELAY_MAGNET, HIGH);
        digitalWrite(RELAY_BUZZER, HIGH);
        _LastTickCounter = millis();
        _State = FastSwich;
        break;
        
    case FastSwich:
        if ((millis() - _LastTickCounter) < TIME5) break; 
        digitalWrite(RELAY_DOWN, HIGH);
        digitalWrite(BLINK_LAMP, HIGH);
        _LastTickCounter = millis();
        _State = RelayDownStart;
        break;
        
    case RelayDownStart:
        if ((millis() - _LastTickCounter) < TIME2) break;
        digitalWrite(RELAY_MAGNET, LOW);
        digitalWrite(RELAY_DOWN, HIGH);
        digitalWrite(RELAY_BUZZER, HIGH);
        _LastTickCounter = millis();
        
        _State = ButtonDownPull;
        break;


        break;
    }
    
}

You don't have to blink the LED from inside the switch/case

In loop(), test the state of the relay and if the LED should be blinking then use the standard BlinkWithoutDelay method to blink it

you should try harder at school.

Thanks for the help.
It's already working.

That's good, now you can improve it

For instance, why are these variables

const int BUTTON_UP = 2;
const int BUTTON_DOWN = 3;
const int IR_STOP = 7;
const int END_UP = 6;
const int END_DOWN = 4;
const int BUTTON_EN = 5;
const int RELAY_UP = 10;
const int RELAY_DOWN = 8;
const int RELAY_MAGNET = 9;
const int RELAY_BUZZER = 11;
const int BLINK_LAMP = 12;
const int ledPin =  13;
int ledState = LOW;

declared as ints when their value is less than 255 ?