header('company')); $invitations = CompanyInvitation::where('company_id', $company->id) ->pending() ->with(['role', 'invitedBy']) ->latest() ->get(); return response()->json([ 'invitations' => CompanyInvitationResource::collection($invitations), ]); } public function store(Request $request): JsonResponse { $request->validate([ 'email' => 'required|email', 'role_id' => 'required|exists:roles,id', ]); $company = Company::find($request->header('company')); $invitation = $this->invitationService->invite( $company, $request->email, $request->role_id, $request->user() ); return response()->json([ 'success' => true, 'invitation' => new CompanyInvitationResource($invitation->load(['company', 'role', 'invitedBy'])), ]); } public function destroy(CompanyInvitation $companyInvitation): JsonResponse { if ($companyInvitation->status !== CompanyInvitation::STATUS_PENDING) { return response()->json([ 'success' => false, 'message' => 'Only pending invitations can be cancelled.', ], 422); } $companyInvitation->delete(); return response()->json(['success' => true]); } }