public async Task <IActionResult> CancelScheduledShiftAssignment(int scheduledShiftAssignmentId)
        {
            var now = _clock.UtcNow.UtcDateTime;

            var assignment = await _shiftRepository.GetScheduledShiftAssignment(scheduledShiftAssignmentId);

            //ensure the shift exists and that the user is allowed to modify it
            var shift = await _shiftRepository.GetScheduledShift(assignment.ScheduledShiftId);

            if (User.RoleInPatrol(shift.PatrolId).CanMaintainSchedule() &&
                now < shift.StartsAt)
            {
                await _scheduleService.CancelScheduledShiftAssignment(scheduledShiftAssignmentId);

                return(Ok());
            }
            else
            {
                return(Forbid());
            }
        }