$plainToken]); } public function inviteSetPasswordFormUrl(int $authorizedUserId, string $token): string { return route('api.invite.set-password-form', [ 'authorizedUserId' => $authorizedUserId, 'token' => $token, ]); } public function timeoffNotifyUrl(string $token): string { return route('api.timeoff.notify', ['token' => $token]); } /** Served by {@see FilesController::receipt} (uploads/receipts). */ public function forReceiptStorage(?string $filename): ?string { if (! $filename) { return null; } $safe = basename(trim($filename)); return $safe !== '' ? route('api.v1.files.receipt', ['name' => $safe]) : null; } /** Served by {@see FilesController::reimb} (uploads/reimbursements). */ public function forReimbursementStorage(?string $filename): ?string { if (! $filename) { return null; } $safe = basename(trim($filename)); return $safe !== '' ? route('api.v1.files.reimbursement', ['name' => $safe]) : null; } public function forReimbursementAdminCheckFile(string $filename, string $mode = 'inline'): string { return route('api.v1.finance.reimbursements.admin-file', [ 'name' => $filename, 'mode' => $mode, ]); } public function paypalExecuteReturnUrl(): string { return route('api.v1.finance.paypal.execute'); } public function paypalCancelUrl(): string { return route('api.v1.finance.paypal.cancel'); } public function studentReportCardUrl(int $studentId): string { return route('api.v1.students.report-card', ['studentId' => $studentId]); } public function forClassProgressAttachment(int|string $attachmentId): string { return route('api.v1.class-progress.attachment', ['attachment' => $attachmentId]); } /** * @return array{template_endpoint: string, list_endpoint: string, rest_prefix: string, list_data_endpoint: string} */ public function attendanceCommentTemplateBootstrapData(): array { return [ 'template_endpoint' => route('api.v1.attendance-templates.legacy'), 'list_endpoint' => route('api.v1.attendance-templates.legacy'), 'rest_prefix' => route('api.v1.attendance-comment-templates.index'), 'list_data_endpoint' => route('api.v1.attendance-comment-templates.list-data'), ]; } }