We are imperfect spiritual beings living in an imperfect physical world; sometimes things will go wrong, mistakes will be made, people will get hurt, messes will be created.
Everyone, no matter whom, is doing the very best they can at any given moment. It may not fit in with your belief system, your ideals, your view or your expectations on how things should be, but everything has a purpose, it fits into a pattern and there is a reason.
To be unforgiving is to hold onto bitterness, guilt and hurt; in effect to hold onto the past and then the real damage occurs.
Forgive yourself first, with love and acceptance, then you can forgive others. It is like an IOU slip, letting go of the thoughts in your head tears up that slip and once the slip is no more and not referred to again, then true forgiveness happens.
You then move forward with love for yourself and that love will flow out to those around you.