public async Task <IActionResult> CancelReleaseScheduledShiftAssignment(int scheduledShiftAssignmentId) { var now = _clock.UtcNow.UtcDateTime; var assignment = await _shiftRepository.GetScheduledShiftAssignment(scheduledShiftAssignmentId); var shift = await _shiftRepository.GetScheduledShift(assignment.ScheduledShiftId); if ((//is an admin User.RoleInPatrol(shift.PatrolId).CanMaintainSchedule() //shift belongs to current user || assignment.AssignedUserId == User.UserId()) && now < shift.StartsAt) { await _scheduleService.CancelShiftRelease(scheduledShiftAssignmentId); return(Ok()); } else { return(Forbid()); } }