How to check Trigger between two kinematic RigidBodies

I have a object “A” with non convex mesh collider and kinematic rigidbodie and i wand to check trigger between Object “A” and another Game Object with non convex mesh collider and kinematic rigidbodie

As you may have noticed convex mesh colliders cannot used with OnTriggerEnter so we are going detect collision as VisualStudio does. First I wrote and assigned some variables about the objects and added two more variables to hold Gameobjects. What I basically did is to compare the positions of surfaces (so the code works as long as you have cubes) and detect if there is a collision

using UnityEngine;

//Sorry for the writing mistake.
public class OnTirggerEnter : MonoBehaviour {

    [Header("Objects")]
    public GameObject obj1;
    public GameObject obj2;
    [Space(10)]
    
    [Header("Positions")]
    [SerializeField]
    private Vector3 pos1;
    [SerializeField]
    private Vector3 pos2;
    [Space(10)]

    [Header("Sizes")]
    [SerializeField]
    private Vector3 size1;
    [SerializeField]
    private Vector3 size2;
    [Space(10)]

    [Header("Surfaces")]
    [SerializeField]
    private float obj1Bottom;
    [SerializeField]
    private float obj1Top;
    [SerializeField]
    private float obj1Left;
    [SerializeField]
    private float obj1Right;
    [SerializeField]
    private float obj1Back;
    [SerializeField]
    private float obj1Front;
    [Space(10)]

    [SerializeField]
    private float obj2Bottom;
    [SerializeField]
    private float obj2Top;
    [SerializeField]
    private float obj2Left;
    [SerializeField]
    private float obj2Right;
    [SerializeField]
    private float obj2Back;
    [SerializeField]
    private float obj2Front;

    // Use this for initialization
    void Start () {
		
	}
	
	// Update is called once per frame
	void Update () {
        //assigning variables
        pos1 = obj1.transform.localPosition;
        pos2 = obj2.transform.localPosition;
        size1 = obj1.transform.localScale;
        size2 = obj2.transform.localScale;

        obj1Bottom = pos1.y - (size1.y / 2);
        obj1Top = pos1.y + (size1.y / 2);
        obj1Left = pos1.x - (size1.x / 2);
        obj1Right = pos1.x + (size1.x / 2);
        obj1Back = pos1.z - (size1.z / 2);
        obj1Front = pos1.z + (size1.z / 2);

        obj2Bottom = pos2.y - (size2.y / 2);
        obj2Top = pos2.y + (size2.y / 2);
        obj2Left = pos2.x - (size2.x / 2);
        obj2Right = pos2.x + (size2.x / 2);
        obj2Back = pos2.z - (size2.z / 2);
        obj2Front = pos2.z + (size2.z / 2);

        #region DetectTrigger
        if (obj1Bottom < obj2Top && obj1Top > obj2Bottom)
        {
            Debug.Log("Trigger on Y");
            if(obj1Left < obj2Right && obj1Right > obj2Left)
            {
                Debug.Log("Trigger on X");
                if(obj1Back < obj2Front && obj1Front > obj1Back)
                {
                    Debug.Log("Trigger on Z. Trigger detected");
                }
            }
        }

        #endregion

    }
}