Problem with turn left light

Hi!
I have script to car light (part code below) and I have problem.
When I press ‘q’ light to turnleft is on but if I want press ‘q’ again nothing happens. To turn off the light I need to click the ‘e’ and then turns off.

//steer light//
        if (Input.GetKeyDown("q") && turnright == true)
        {
            turnleft = !turnleft;
            turnright = false;
        }
        else if (Input.GetKeyDown("q") && turnleft == false)
        {
            turnleft = !turnleft;
        }

        if (Input.GetKeyDown("e") && turnleft == true)
        {
            turnright = !turnright;
            turnleft = false;
        }
        else if (Input.GetKeyDown("e") && turnleft == false)
        {
            turnright = !turnright;
        }

        if (turnright)
		{
			turnSignalRIGHT.material = turnsignalON;
			turnSignalLEFT.material = turnsignalOFF;
			rightSignalON = true;
			leftSignalON = false;
		}
		else if(turnleft)
		{
			turnSignalRIGHT.material = turnsignalOFF;
			turnSignalLEFT.material = turnsignalON;
			rightSignalON = false;
			leftSignalON = true;
		}
		else
		{
			turnSignalRIGHT.material = turnsignalOFF;
			turnSignalLEFT.material = turnsignalOFF;
			rightSignalON = false;
			leftSignalON = false;
		}

		if(leftSignalON)
		{
			float floor = 0f;
			float ceiling = 1f;
			float emission = floor + Mathf.PingPong(Time.time*1.5f, ceiling - floor);
			turnSignalLEFT.material.SetColor("_EmissionColor",new Color(1f,1f,1f)*emission);
		}
		if(rightSignalON)
		{
			float floor = 0f;
			float ceiling = 1f;
			float emission = floor + Mathf.PingPong(Time.time* 1.5f, ceiling - floor);
			turnSignalRIGHT.material.SetColor("_EmissionColor",new Color(1f,1f,1f)*emission);
		}

You may want to use an enum instead of a lot of bools to keep track of things. Here is an example that you can work with.

    public Renderer turnSignalLeft;
    public Renderer turnSignalRight;
    public Material turnSignalOff;
    public Material turnSignalOn;
    enum Direction
    {
        neutral,
        right,
        left
    }
    Direction currentDirection = Direction.neutral;

    void Update()
    {
        // TurnSignal Left Toggle
        if (Input.GetKeyDown(KeyCode.Q))
        {
            // if direction is not Left set it to Left Otherwise set it to Neutral
            currentDirection = currentDirection != Direction.left ?
                Direction.left : Direction.neutral;
        }

        // TurnSignal Right Toggle
        if (Input.GetKeyDown(KeyCode.E))
        {
            // if direction is not Right set it to Right Otherwise set it to Neutral
            currentDirection = currentDirection != Direction.right ?
                Direction.right : Direction.neutral;
        }
        UpdateTurnSignal();
    }

    void UpdateTurnSignal()
    {
        switch (currentDirection)
        {
            case Direction.neutral:
                SetTurnSignal(turnSignalRight, false);
                SetTurnSignal(turnSignalLeft, false);
                break;
            case Direction.right:
                SetTurnSignal(turnSignalRight, true);
                SetTurnSignal(turnSignalLeft, false);

                break;
            case Direction.left:
                SetTurnSignal(turnSignalRight, false);
                SetTurnSignal(turnSignalLeft, true);
                break;
            default:
                break;
        }
    }

    void SetTurnSignal(Renderer signalRenderer, bool On)
    {
        float emission = Mathf.PingPong(Time.time, 1f);
        if (On)
        {
            if (signalRenderer.material != turnSignalOn)
            {
                signalRenderer.material = turnSignalOn;
            }
            signalRenderer.material.SetColor("_EmissionColor", Color.white * emission);
        }
        else
        {
            if (signalRenderer.material != turnSignalOff)
            {
                signalRenderer.material = turnSignalOff;
            }
        }
    }

The reason for all the material conditions is that it is quicker to check if a material is already set than to re-set it.