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

            var assignment = await _shiftRepository.GetScheduledShiftAssignment(scheduledShiftAssignmentId);

            var shift = await _shiftRepository.GetScheduledShift(assignment.ScheduledShiftId);

            //if the user is in the patrol and the shift is in the future
            if (User.PatrolIds().Any(x => x == shift.PatrolId) &&
                now < shift.StartsAt)
            {
                await _scheduleService.ClaimShift(scheduledShiftAssignmentId, User.UserId());

                //HACK: get the dto but no repo method exists to get a ssadto by id...
                var assignmentDtos = await _shiftRepository.GetScheduledShiftAssignments(shift.PatrolId, scheduledShiftId : shift.Id);

                var assignmentDto = assignmentDtos.Single(x => x.Id == assignment.Id);

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