Prevent invalid time clocking
For clocking out to be valid, the clock-out time must be after the clock-in time. This is currently enforced through an assert, but on the UI level nothing prevents users from attempting an invalid clock-out, which causes a crash.
Clock-out should only be allowed when it is valid.