First scene loads twice

I’m slowly going insane trying to get my head around the SceneManager.

I have a small basic unity game with a total of 6 scenes. The build order is as follows;

0- MainMenu // Click NewGame to start Level_01.
1- Level_01
2- Level_02
3- Level_03
4- YouWin // This should trigger when player completes last level.
5- YouLose // This triggers when player runs out of time.

However when playing, the scenes load in this order;

0- MainMenu
1- Level_01
2- Level_01 // Repeats Level_01
3 - Level_02
4- YouWin // Never reaches Level_03

I have checked and double checked the build order and that does not appear to be the problem. I am relatively new to unity and coding in general and I have been trying to fix this for days and seem to be getting nowhere. Any help would be appreciated.

Here is the GameManager code:

public class GameManager: MonoBehaviour{

//count
public static int currentScore;
public static int highscore;
public static int currentLevel;

//timer
public float startTime;
private string currentTime;

void Update()

{   
    startTime -= Time.deltaTime;
    currentTime = string.Format("{0:0.0}", startTime);
    if (startTime <= 0)
    {
        startTime = 0;
        //this loads the time out screen if timer reaches 0
        SceneManager.LoadScene(5);
    }
}


public static void CompleteLevel()
 {
     if (currentLevel < 4)
     {  
         //this loads levels in sequence
         SceneManager.LoadScene(currentLevel += 1);

     
     } else {

         //this is the win settings
         SceneManager.LoadScene(4);
         print("You win");
     }
 }

This is the MainMenu code:

public class MainMenu3 : MonoBehaviour{

// Loads the levels from clicking (needed for both MainMenu and YouLose scenes)
public void LoadScene(string name) {

    SceneManager.LoadScene(name); }

//this quits the game
public void QuitGame() { 

    Application.Quit();
}

This is code for triggering next scene when reaching goal:

public class PlayerController2 : MonoBehaviour{

//player
private Rigidbody rb;

void Start ()
{

    rb = GetComponent<Rigidbody>();

}
    

void OnTriggerEnter (Collider other)
{
    if (other.transform.tag == "Goal")
    {
         GameManager.CompleteLevel();
    }   
}

Any help at all would be hugely appreciated!
Thanks for reading.

*Edit: cleaned up code to make it easier to read

FIXED!

finally found a fix in the end!

needed to use:

if (currentLevel < 4)
{
currentLevel = SceneManager.GetActiveScene().buildIndex+1;
SceneManager.LoadScene(currentLevel);
}