import InifniConflictException from 'src/common/exceptions/infini-conflict-exception';
import { ERROR_CODES } from 'src/common/constants/error-string-constants';
import { ROLE_VALUES } from 'src/common/constants/strings-constants';

/**
 * Once a Coordinator locks a session's attendance, every other actor (RM, Admin included)
 * is blocked from editing it — only a Coordinator-role actor may continue.
 */
export function assertAttendanceNotLocked(
  session: { isAttendanceLocked: boolean },
  roles: string[] | null | undefined,
): void {
  if (!session.isAttendanceLocked) return;
  if (roles?.includes(ROLE_VALUES.COORDINATOR)) return;
  throw new InifniConflictException(ERROR_CODES.SESSION_ATTENDANCE_LOCKED, null, null);
}
