Unlocking badges based on level time

Hey there!
This is going to be a really (unnecessarily) long winded post about something that I don’t understand because I don’t understand basic computer stuff or anything at all.
The idea is this, I want to have it where when the player beats a level, it will both save the best time, and also unlock a badge based off of how quick that time is.
The 'ol if(level.time < 3f) then I run an over complicated piece of code to show a badge that is displayed on the level select screen. Y’know how that really unknown game angry birds and how it shows the 3 stars thing when you select a level? That! My issue comes mostly from the fact that I’d like to be able to- in a way -do it automatically. My code looks something like this. (Do not make fun of me, I told you I don’t understand things!)

using System.Collections;
using System.Collections.Generic;
using UnityEngine.SceneManagement;
using UnityEngine.UI;
using UnityEngine;

public class GameManager : MonoBehaviour
{

    [Header("Level Unlocking -- Must Be Assigned Manually")]
    #region
    public string nextLevel = "null"; //Defualt value, must be set for each individual level in the inspector.
    public int levelToUnlock = 0; //Default vaule of 0, must be set for each individual level in the inspector.
    [Space(10)]
    #endregion




    [Header("Player Game Object -- Must Be Assigned Manually")]
    #region
    public GameObject player;
    [Space(10)]
    #endregion



    [Header("UI Elements -- Must Be Assigned Manually")]
    #region
    public Text bestTime;
    public Text timerText;
    public GameObject FinishPanel;
    [Space(10)]
    #endregion


    [Header("PlayerPref Key Stuff -- Assigned Automatically")]
    #region
    [SerializeField]
    public string currentLevelName;
    [SerializeField]
    string currentLevelKey;
    Scene currentScene;
    [Space(10)]
    #endregion



    [Header("Badge Time Requirements -- TESTING")]
    #region
    public float bronzeReq;
    public float silverReq;
    public float goldReq;
    public float platReq;
    [SerializeField]
    int currentBadgeInt;
    #endregion



    private float startTime;
    private bool finish = false;
    float t;




    /* Basic Functions Including:
     * --Timer
     * */
    #region
    //Starts Timer
    void Start()
    {
        startTime = Time.time;
        currentScene = SceneManager.GetActiveScene();
        currentLevelName = currentScene.name.ToString();
        currentLevelKey = currentLevelName + "T";
        bestTime.text = PlayerPrefs.GetFloat(currentLevelKey, 0).ToString() + "s";



    }

    void Update()
    {
        if (finish) //If the level is finished already, timer no longer counts.
            return;

        t = Time.time - startTime;
        string seconds = (t % 60).ToString("f3");
        timerText.text = seconds + "s";

    }
    #endregion


    //Handles everything once the level is done (i.e: set the finish panel to true, set best time if needed, etc..., just in case I have short term memory loss and/or forget basic reading comprehension)
    public void LevelComplete()
    {
        Debug.Log("<color=green>Successful event: </color>Player Wins");
        finish = true;
        timerText.color = Color.blue;
        if (levelToUnlock > PlayerPrefs.GetInt("levelReached", 1))
        {
            PlayerPrefs.SetInt("levelReached", levelToUnlock);
        }

        if (t < PlayerPrefs.GetFloat(currentLevelKey, float.MaxValue)) //If the level time was less than the previous time, set the best time text to the new one. If there is none, set to first time??!
        {
            PlayerPrefs.SetFloat(currentLevelKey, t);
            bestTime.text = t.ToString("f3") + "s";
           
        }

        BadgeIntSet();

        FinishPanel.SetActive(true);



    }

    //kill me! this is very tedious and probably not the best way to do it.

    public void BadgeIntSet()
    {
        if (PlayerPrefs.GetFloat(currentLevelKey) <= platReq)
        {
            PlayerPrefs.SetInt(currentLevelKey + "int", 6);
        }
        else if (PlayerPrefs.GetFloat(currentLevelKey) <= goldReq)
        {
            PlayerPrefs.SetInt(currentLevelKey + "int", 5);
        }
        else if (PlayerPrefs.GetFloat(currentLevelKey) <= silverReq)
        {
            PlayerPrefs.SetInt(currentLevelKey + "int", 4);
        }
        else if (PlayerPrefs.GetFloat(currentLevelKey) <= bronzeReq)
        {
            PlayerPrefs.SetInt(currentLevelKey + "int", 3);
        }
        else if (PlayerPrefs.GetFloat(currentLevelKey) == 0f)
        {
            PlayerPrefs.SetInt(currentLevelKey + "int", 0);
        }

        PlayerPrefs.Save();
    }



    public void KillPlayer()
    {
       
        SceneManager.LoadScene(currentScene.name);
    }

}

There are many things about this code that is going to make you vomit, want to die inside, and things of that sort (especially what my killplayer function is and why it even exists here. I moved it! I promise!)
The biggest thing I’d like to hopefully avoid, is using PlayerPrefs in the first place. The second thing is I’d like to do is learn how to code well.
On the level select screen, I’m grabbing that “BadgeInt” and setting those dumb little gameobjects active based off of what integer it is set to. The reason for the ---- currentLevelKey + “int” is because that is what I’m storing that int into, but you know that already because my code is easy to understand.
The idea is that I want to have sort of a big data sheet where I can tweak the badge’s time requirements from there rather than having to go through the levels and setting them myself. I’d also like to not have to use playerprefs like this because I end up with a million different playerprefs and if anything is spelled wrong anywhere (I’m good at not being good at typing) then I’m storing data into a playerpref and sorta can’t retrieve it.

This is the great power of setting things automatically.
I thought I could do something like getting the active level name, adding a “b” (for the bronze badge of course!) or an “s” (that’s silver!!) to it, then comparing it to some data sheet and setting my badge int based off of it. I thought maybe JSON! But I don’t know who that is.
Does this make any sense at all? I’m not gonna proofread this, it scares me.
If you don’t understand it I can try to elaborate but I might die before then. Please help me Obi-Wan.
I might delete this if I read this again and see that it doesn’t make sense.

I recommend vastly simplifying the question, even if it means breaking it into multiple parts.

Also, don’t put pointless polls on your post. You impair our ability to take you seriously.

This may also be of help:

http://plbm.com/?p=220