@Heartbroken47,
Stop calling him. It's over. It is completely done and dusted.
Pick yourself up and dust yourself off. It's almost Christmas. Have a quiet celebration with your sons and thank your lucky stars that he is gone.
He shoved you and threw your phone at you. He smoked pot in your house when you told him not to. He doesn't respect your wishes. He seems to need to smoke and you know that, apart from the legalities, that's not cheap. He's also invaded your privacy. The police have been involved.
He sounds nasty, controlling, and borderline abusive if not already over the line.
There is nothing whatsoever in your post which shows him going above and beyond. He took your kids to the doctor's and took them to school and handed over his paycheck. Like many people do.
Weed is running his life.
Don't let it run and ruin yours or your children's.
Put some time and distance between yourself and this overgrown boy. In a few months, you will begin to see that this relationship ending is the best thing that could have ever happened to you.
Stop calling him. Go to your mother's for Christmas if you can and concentrate on your family now.