doorbell using multi millis functions

I have been working on a doorbell for the shop and I'm at the point
where I have a verify code
(exit status 1
'flashPattern' was not declared in this scope)
That is problem 1.

Now on to the main thing i need help with
Im trying to use the millis function to debounce the one button,
flash the 4 blue leds in a circle continuously when not pushed,
flash the 4 red leds one time at a certain speed then flash the 4 green
leds one time at a different speed
and turn on and off the 2 relays at different times.(all when bell pushed)

In the void loop im not sure if im supposed to put the call functions
where they are or if the (if statement) is finished corectly.

I'm really not sure where to go with it from here. i certainly thank anyone
who has time to point me in the right direction.

/*
 I wanted a better(cooler) door bell at the shop
 This sketch has 4 RGB leds around the button for a total of 
 12 led output pins, 2 relay pins for a compressor connected to a air horn.
 and a strobe light up stairs. On a mega2560 board and a 2 relay module.
 */

const int red1Pin = 52;  // red leds:
const int red2Pin = 48;
const int red3Pin = 28;
const int red4Pin = 24;

const int blue1Pin = 44;  // blue leds:
const int blue2Pin = 40;
const int blue3Pin = 32;
const int blue4Pin = 36;

const int green1Pin = 25;   // green leds: 
const int green2Pin = 29;
const int green3Pin = 49;
const int green4Pin = 53;

const int hornRelay = 10; // its a baby compressor(from the dump):
const int strobeRelay = 11;

const int doorBellPin = 37;  // this is the only input:

const int redLedInterval = 400;  // led on time
const int greenLedInterval = 800;
const int blueLedInterval = 1200;

const int buttonInterval = 300;  // time between button readings:

const int hornBlast = 3000; // on and off time for horn:
const int strobeDuration = 10000; // on time for strobe:
const int strobePause = 4000; // off timne for strobe:

unsigned long currentMillis = 0;  // stores value of millis at each iteration:
unsigned long previousRedLedMillis = 0;
unsigned long previousBlueLedMillis = 0;
unsigned long previousGreenledMillis = 0;


void setup() {

Serial.begin(9600);
  Serial.println("Starting SeveralThingsAtTheSameTimeRev1.ino");  // so we know what sketch is running
  
  
  // set red, blue, green pins to output
  pinMode(red1Pin, OUTPUT);
  pinMode(red2Pin, OUTPUT);
  pinMode(red3Pin, OUTPUT);
  pinMode(red4Pin, OUTPUT);
  
  pinMode(blue1Pin, OUTPUT);
  pinMode(blue2Pin, OUTPUT);
  pinMode(blue3Pin, OUTPUT);
  pinMode(blue4Pin, OUTPUT);
  
  pinMode(green1Pin, OUTPUT);
  pinMode(green2Pin, OUTPUT);
  pinMode(green3Pin, OUTPUT);
  pinMode(green4Pin, OUTPUT);

  pinMode(hornRelay, OUTPUT);  // 2 relay pins as output
  pinMode(strobeRelay, OUTPUT);

  pinMode(doorBellPin, INPUT);  // all this for what could of been 
                                  // the simplest doorbell in the world:

digitalWrite(red1Pin, HIGH);  // this makes all leds start out unlit:
digitalWrite(red2Pin, HIGH);
digitalWrite(red3Pin, HIGH);
digitalWrite(red4Pin, HIGH);

digitalWrite(blue1Pin, HIGH);
digitalWrite(blue2Pin, HIGH);
digitalWrite(blue3Pin, HIGH);
digitalWrite(blue4Pin, HIGH);

digitalWrite(green1Pin, HIGH);
digitalWrite(green2Pin, HIGH);
digitalWrite(green3Pin, HIGH);
digitalWrite(green4Pin, HIGH);

digitalWrite(hornRelay, HIGH);  
digitalWrite(strobeRelay, HIGH);

    
}


void loop() {
 
  currentMillis = millis();   // capture the latest value of millis()
 
if (digitalRead(doorBellPin) == HIGH) { //when botton pushed:
  flashPattern();
  soundHorn();
  activateStrobe();
   currentMillis += buttonInterval  // debounce button
}

else{

    digitalWrite(blue1Pin, LOW);  // blink blue leds in unending slow circle:
    currentMillis += blueLedInterval;  // while waiting for button to be pushed:
    digitalWrite(blue1Pin, LOW);
    currentMillis += blueLedInterval;
    digitalWrite(blue1Pin, LOW);
    currentMillis += blueLedInterval;
    digitalWrite(blue1Pin, LOW);
    currentMillis += blueLedInterval; 

    
  }

void flashPattern() {

  if (currentMillis - previousButtonMillis >= buttonInterval) {

    
    
   digitalWrite(red1Pin, LOW);  // blink red leds in circle:
   currentMillis += redLedInterval; // each pin once at fast speed:
   digitalWrite(red2Pin, LOW);
   currentMillis += redLedInterval;
   digitalWrite(red3Pin, LOW);
   currentMillis += redLedInterval;
   digitalWrite(red4Pin, LOW);
   currentMillis += redLedInterval;  // after red leds blink at one speed:
                                    
   digitalWrite(green1Pin, LOW);  // blink green leds in circle:
   currentMillis += greenLedInterval; // each pin once at medium speed:
   digitalWrite(green2Pin, LOW);
   currentMillis += greenLedInterval;
   digitalWrite(green3Pin, LOW);
   currentMillis += greenLedInterval;
    digitalWrite(green4Pin, LOW);
   currentMillis += greenLedInterval;
    
  previousButtonMillis += buttonInterval;

  
    }
  

  else{

    digitalWrite(blue1Pin, LOW);  // blink blue leds in unending slow circle:
    currentMillis += blueLedInterval;  // while waiting for button to be pushed:
    digitalWrite(blue1Pin, LOW);
    currentMillis += blueLedInterval;
    digitalWrite(blue1Pin, LOW);
    currentMillis += blueLedInterval;
    digitalWrite(blue1Pin, LOW);
    currentMillis += blueLedInterval; 
  }
}

void soundHorn(){  //turn on relays a few times each:

      digitalWrite(hornRelay, LOW);  // i was trying to get 3 - 3 second blasts:
      currentMillis += hornBlast;
      digitalWrite(hornRelay, HIGH);
      currentMillis += hornBlast;
      digitalWrite(hornRelay, LOW);
      currentMillis += hornBlast;
      digitalWrite(hornRelay, HIGH);
      currentMillis += hornBlast;
      digitalWrite(hornRelay, LOW);
      currentMillis += hornBlast;
      digitalWrite(hornRelay, HIGH);
      currentMillis += hornBlast;
}
void activateStrobe(){
      digitalWrite(strobeRelay, HIGH); // strobe on and off 2 times
      currentMillis += strobeDuration;  
      digitalWrite(strobeRelay, LOW);
      currentMillis += strobePause;
      digitalWrite(strobeRelay, HIGH);
      currentMillis += strobeDuration;
      digitalWrite(strobeRelay, LOW);
      currentMillis += strobePause;
       
       
      
    }


}

When you declare flashPattern(), you have yet to close loop(). The } just above void flashPattern() is the closing of an else, not the closing of loop().

Maybe reading Demonstration code for several things at the same time will help.