(please help)IR controller for robot switch case problem

#include <IRremote.h>
#include <boarddefs.h>
#include <NewPing.h>
enum {Idle,MovingForward,Turnleft,Turnright,Turn,AM_Backward,Backward,rest,AM_MovingForward};
int currentState = Idle; 
int RECV_PIN = A4;
int VOID = LOW;
IRrecv irrecv(RECV_PIN);
decode_results results;
#define BUTTON_front 0xEFA25D
#define BUTTON_back 0xEFB24D
#define BUTTON_left 0xEF50AF
#define BUTTON_right 0xEF12ED
#define BUTTON_speedup 0xEFE817
#define BUTTON_speeddown 0xEF6897
#define ControlMotorLeft1 A0
#define ControlMotorLeft2 A1
#define ControlMotorRight1 A2
#define ControlMotorRight2 A3
#define TheLED 7
#define IRS 6
#define PushButtonON 5
#define PushButtonOFF 4
#define PushButtonAUTO 3
#define Controller A4
#define TRIGGER_PIN A5
#define ECHO_PIN     A5
#define MAX_DISTANCE 200
NewPing sonar(TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE);



void setup() {

Serial.begin(9600);  
//Control Motor Left
pinMode(ControlMotorLeft1, OUTPUT);
pinMode(ControlMotorLeft2, OUTPUT);
//Control Motor Right
pinMode(ControlMotorRight1, OUTPUT);
pinMode(ControlMotorRight2, OUTPUT);
//LED
pinMode(TheLED,OUTPUT);
//R1 sensor
pinMode(IRS,INPUT);
//button(ON)
pinMode(PushButtonON,INPUT_PULLUP);
//button(OFF)
pinMode(PushButtonOFF,INPUT_PULLUP);
//button(auto)
pinMode(PushButtonAUTO,INPUT_PULLUP);
//controller
irrecv.enableIRIn();

}
void AllOff(){
digitalWrite(ControlMotorLeft1,LOW);
digitalWrite(ControlMotorLeft2,LOW);
digitalWrite(ControlMotorRight1,LOW);
digitalWrite(ControlMotorRight2,LOW);
digitalWrite(TheLED,LOW);
}

void loop() {
  
    switch(currentState)
  {
  case Idle:{
        Serial.println("Idle");
      AllOff();
     if(!digitalRead(PushButtonON))
          currentState = rest;
    
     if(!digitalRead(PushButtonAUTO))
          currentState = AM_MovingForward;
    break;
  }
  case rest:{
      Serial.println("Rest");
      digitalWrite(ControlMotorLeft1,LOW);
      digitalWrite(ControlMotorLeft2,LOW);
      digitalWrite(ControlMotorRight1,LOW);
      digitalWrite(ControlMotorRight2,LOW);
      digitalWrite(TheLED,HIGH);   
     if(!digitalRead(PushButtonOFF))
          currentState = Idle;
     if(!digitalRead(PushButtonAUTO))
          currentState = AM_MovingForward;          
     if (irrecv.decode(&results)){
           if (results.value == BUTTON_front){
                   currentState = MovingForward;
                               irrecv.resume(); 

           }
           if (results.value == BUTTON_back){
                   currentState = Backward;
                               irrecv.resume(); 

           }
           if (results.value == BUTTON_right){
                   currentState = Turnright;
                               irrecv.resume(); 
          }
           if (results.value == BUTTON_left){
                   currentState = Turnleft;
                   irrecv.resume(); 

          }
                      irrecv.resume(); 

        }

    break;}
    case MovingForward:{
      Serial.println("Moving Forward");
      analogWrite(ControlMotorLeft1,150);
      analogWrite(ControlMotorLeft2,0);
      analogWrite(ControlMotorRight1,150);
      analogWrite(ControlMotorRight2,0);
      digitalWrite(TheLED,HIGH);   
      VOID = digitalRead(IRS);
     if(!digitalRead(PushButtonOFF))
          currentState = Idle;
     if(!digitalRead(PushButtonAUTO))
          currentState = AM_MovingForward;          
     if (irrecv.decode(&results)){
           if (results.value == BUTTON_back){
                   currentState = Backward;
                               irrecv.resume(); 

           }
           if (results.value == BUTTON_right){
                   currentState = Turnright;
                               irrecv.resume(); 

          }
           if (results.value == BUTTON_left){
                   currentState = Turnleft;
                               irrecv.resume(); 

            }
            if (results.value == BUTTON_speedup){
                  analogWrite(ControlMotorLeft1,250);
                  analogWrite(ControlMotorRight1,250);

          }
                      irrecv.resume(); 

            if (results.value == BUTTON_speeddown){
                  digitalWrite(ControlMotorLeft1,100);
                  analogWrite(ControlMotorRight1,100);      
                  }
                  
     }    
      if (VOID == HIGH){
          currentState =Backward ;
     }


    break;}
    case Backward:{
      Serial.println("Backward");
      digitalWrite(ControlMotorLeft1,LOW);
      digitalWrite(ControlMotorLeft2,HIGH);
      digitalWrite(ControlMotorRight1,LOW);
      digitalWrite(ControlMotorRight2,HIGH);
      digitalWrite(TheLED,HIGH);
      VOID = digitalRead(IRS);         
     if(!digitalRead(PushButtonOFF))
          currentState = Idle;
     if(!digitalRead(PushButtonAUTO))
          currentState = AM_MovingForward;          
      if (irrecv.decode(&results)){
          if (results.value == BUTTON_front){
                  currentState = MovingForward;
                              irrecv.resume(); 

           }
           if (results.value == BUTTON_right){
                   currentState = Turnright;
                               irrecv.resume(); 

          }
           if (results.value == BUTTON_left){
                   currentState = Turnleft;
                               irrecv.resume(); 

            }
            irrecv.resume(); 
      }          
      if (VOID == HIGH){
          currentState =MovingForward ;
     }

    break;}
    case Turnleft:{
      Serial.println("Turn left");
      digitalWrite(ControlMotorLeft1,LOW);
      digitalWrite(ControlMotorLeft2,HIGH);
      digitalWrite(ControlMotorRight1,HIGH);
      digitalWrite(ControlMotorRight2,LOW);
      digitalWrite(TheLED,HIGH);   
     if(!digitalRead(PushButtonOFF))
          currentState = Idle;
     if(!digitalRead(PushButtonAUTO))
          currentState = AM_MovingForward;          
     if (irrecv.decode(&results)){
          if (results.value == BUTTON_front){
                  currentState = MovingForward;
           }
           if (results.value == BUTTON_back){
                   currentState = Backward;
           }
           if (results.value == BUTTON_right){
                   currentState = Turnright;
          }
          
           irrecv.resume(); 
  }          
    break;}
    case Turnright:{
      Serial.println("Rest");
      digitalWrite(ControlMotorLeft1,HIGH);
      digitalWrite(ControlMotorLeft2,LOW);
      digitalWrite(ControlMotorRight1,LOW);
      digitalWrite(ControlMotorRight2,HIGH);
      digitalWrite(TheLED,HIGH);   
     if(!digitalRead(PushButtonOFF))
          currentState = Idle;
     if(!digitalRead(PushButtonAUTO))
          currentState = AM_MovingForward;          
     if (irrecv.decode(&results)){
          if (results.value == BUTTON_front){
                  currentState = MovingForward;
           }
           if (results.value == BUTTON_back){
                   currentState = Backward;
           }
           if (results.value == BUTTON_left){
                   currentState = Turnleft;
            }
            irrecv.resume(); 
  }          

    break;}
  case AM_MovingForward:{
       Serial.println("Auto Mode");
      digitalWrite(ControlMotorLeft1,HIGH);
      digitalWrite(ControlMotorLeft2,LOW);
      digitalWrite(ControlMotorRight1,HIGH);
      digitalWrite(ControlMotorRight2,LOW);
      VOID = digitalRead(IRS);         
      digitalWrite(TheLED,HIGH);
       
     if(!digitalRead(PushButtonOFF))
          currentState = Idle;

     if (VOID == HIGH){
            currentState =AM_Backward ;}
       
       if(sonar.ping_cm()<=8)
            currentState =AM_Backward ;
            
    break;}
   case AM_Backward:{
        Serial.println("Backward");
      digitalWrite(ControlMotorLeft1,LOW);
      digitalWrite(ControlMotorLeft2,HIGH);
      digitalWrite(ControlMotorRight1,LOW);
      digitalWrite(ControlMotorRight2,HIGH);
       digitalWrite(TheLED,HIGH);
       delay(1000);
       currentState = Turn; 
     if(!digitalRead(PushButtonOFF))
          currentState = Idle;

            
    break;}
  case Turn:{
      Serial.println("Turn");
      digitalWrite(ControlMotorLeft1,HIGH);
      digitalWrite(ControlMotorLeft2,LOW);
      digitalWrite(ControlMotorRight1,LOW);
      digitalWrite(ControlMotorRight2,HIGH);
       digitalWrite(TheLED,HIGH);
       delay(1000);
       currentState = AM_MovingForward; 
     if(!digitalRead(PushButtonOFF))
          currentState = Idle;
            
    break;}
}
  
  
}