Quaternion and Vector3 transfomation Math
If you want DRY the KISS way, I suggest substituting the if-chain..


if (movement == Vector3.left)
    transformModel.rotation = Quaternion.Euler(0, 270, 0);
else if (movement == Vector3.right)
    transformModel.rotation = Quaternion.Euler(0, 90, 0);
else if (movement == Vector3.back)
    transformModel.rotation = Quaternion.Euler(0, 180, 0);
else if (movement == Vector3.forward)
    transformModel.rotation = Quaternion.Euler(0, 0, 0);



..with a lookup map:

var rotationsEulerY = new Dictionary&lt;Vector3, int&gt;
{
    {Vector3.left, 270}, {Vector3.right, 90}, {Vector3.back, 180}, {Vector3.forward, 0}
};

void ChangeDirection()
{
    transformModel.rotation = Quaternion.Euler(0, rotationsEulerY[movement], 0);
}


You could do something similar for CorrectPosition using a predefined map of guard conditions and assignor actions.