Combining led blink and fade (PWM)

Thank you for answer!
This is my code right now.

Maybe a global variable is the best?

//https://forum.arduino.cc/index.php?topic=548353.msg3740954#msg3740954

const byte ledPins[] = {10};
byte LEDCOUNT = sizeof(ledPins) / sizeof(ledPins[0]);
byte ledIndex = 0;
const unsigned long FIVESECS = 5000;
const unsigned long OFFSECS = 5000;

unsigned long currentTime;
unsigned long startTime;

enum states
{
  ALL_FLASH,
  ALL_FADE_UP_TOGETHER,
  ALL_ON_FOR_5_SECS,
  ALL_OFF_FOR_5_SECS,
  ALL_FADE_DOWN_TOGETHER,
  ALL_FADE_UP_DOWN_IN_SEQUENCE,
  DO_NOTHING
};
byte currentState = ALL_FLASH;

void setup()
{
  Serial.begin(9600);
  for (int pin = 0; pin < LEDCOUNT; pin ++)
  {
    pinMode(ledPins[pin], OUTPUT);
    digitalWrite(ledPins[pin], LOW);
  }
  Serial.println("Flash all up together");
}

void loop()
{
  currentTime = millis();
  switch (currentState)
  {
    case ALL_FLASH:
      {
        static int pwmLevel = 255;
        /*  static int pwmIncrement = -255;
          unsigned long period = 20;
          if (currentTime - startTime >= period)
          {*/
        Serial.println("All Flash: ");
        Serial.println(pwmLevel);
        setPwmLevelForAllLeds(pwmLevel);
        startTime = millis();
        //  pwmLevel += pwmIncrement;
        if (pwmLevel == 255)
        {
          setPwmLevelForAllLeds(0);
          currentState = ALL_ON_FOR_5_SECS;
          startTime = currentTime;
          setPwmLevelForAllLeds(255);   //all on
          Serial.println("All ON  5 seconds");
          // }
        }
      }
      break;
    //*****
    case ALL_FADE_UP_TOGETHER:
      {
        static int pwmLevel = 0;
        static int pwmIncrement = +1;
        unsigned long period = 20;
        if (currentTime - startTime >= period)
        {
          setPwmLevelForAllLeds(pwmLevel);
          startTime = millis();
          pwmLevel += pwmIncrement;
          if (pwmLevel >= 255)
          {
            setPwmLevelForAllLeds(0);
            currentState = ALL_ON_FOR_5_SECS;
            startTime = currentTime;
            setPwmLevelForAllLeds(255);   //all on
            Serial.println("Waiting 5 seconds");
          }
        }
      }
      break;
    //*****
    case ALL_ON_FOR_5_SECS:

      if (currentTime - startTime >= FIVESECS)
      {
        currentState = ALL_FADE_DOWN_TOGETHER;
        Serial.println("Fading all down together");
        startTime = currentTime;
        setPwmLevelForAllLeds(255);   //all on
      }
      break;
    //*****
    case ALL_OFF_FOR_5_SECS:
      if (currentTime - startTime >= OFFSECS)
      {
        currentState = ALL_FLASH;
        Serial.println("All flash");
        startTime = currentTime;
        setPwmLevelForAllLeds(255);   //all on
      }
      break;
    //*****
    case ALL_FADE_DOWN_TOGETHER:
      //    case ALL_FADE_UP_TOGETHER:
      {
        static int pwmLevel = 255;
        static int pwmIncrement = 1;
        unsigned long period = 7;  // 7 egen

        if (currentTime - startTime >= period)
        {
          if (pwmLevel == -1)
          {
            Serial.println("Fade down level -1: ");
            Serial.println(pwmLevel);
            pwmLevel = 255;
          }

          setPwmLevelForAllLeds(pwmLevel);
          startTime = millis();
          Serial.println("Fade down - period: ");
          Serial.println(pwmLevel);
          pwmLevel -= pwmIncrement;

          if (pwmLevel == 0) // original <=
          {
            setPwmLevelForAllLeds(0);   //all off
            currentState = ALL_OFF_FOR_5_SECS;
            startTime = currentTime;

            setPwmLevelForAllLeds(0);   //all off
          }
        }
      }
      break;
    //*****
    case ALL_FADE_UP_DOWN_IN_SEQUENCE:
      {
        static unsigned long startTime;
        static int pwmLevel = 255;
        static int pwmIncrement = -1;
        unsigned long period = 5;
        if (currentTime - startTime >= period)
        {
          analogWrite(ledPins[ledIndex], pwmLevel);
          startTime = millis();
          pwmLevel += pwmIncrement;
          if (pwmLevel <= 0)
          {
            pwmIncrement *= -1;
            pwmLevel += pwmIncrement;
          }
          if (pwmLevel >= 255)
          {
            pwmLevel = 255;
            analogWrite(ledPins[ledIndex], pwmLevel);  //make sure that the  LED is off
            pwmIncrement *= -1;
            ledIndex++;
            if (ledIndex >= LEDCOUNT)
            {
              currentState = DO_NOTHING;
              Serial.println("Doing nothing forever");
            }
          }
          break;
        }
      }
    //*****
    case DO_NOTHING:
      {
        break;
      }
  }
}
void setPwmLevelForAllLeds(byte pwmLevel)
{
  for (int ledIndex = 0; ledIndex < LEDCOUNT; ledIndex++)
  {
    analogWrite(ledPins[ledIndex], pwmLevel);
  }
}