# Story 6.4: Data Export - User Lists ## Epic Reference **Epic 6:** Admin Dashboard ## User Story As an **admin**, I want **to export user data in CSV and PDF formats**, So that **I can generate reports and maintain offline records**. ## Acceptance Criteria ### Export Options - [ ] Export all users - [ ] Export individual clients only - [ ] Export company clients only ### Filters - [ ] Date range (created) - [ ] Status (active/deactivated) ### CSV Export Includes - [ ] Name, email, phone - [ ] User type - [ ] National ID / Company registration - [ ] Status - [ ] Created date ### PDF Export Includes - [ ] Same data with professional formatting - [ ] Libra branding header - [ ] Generation timestamp ### Bilingual - [ ] Column headers based on admin language ## Technical Notes Use league/csv for CSV and barryvdh/laravel-dompdf for PDF. ```php public function exportCsv(): StreamedResponse { return response()->streamDownload(function () { $csv = Writer::createFromString(); $csv->insertOne([__('export.name'), __('export.email'), ...]); User::whereIn('user_type', ['individual', 'company']) ->cursor() ->each(fn($user) => $csv->insertOne([ $user->name, $user->email, // ... ])); echo $csv->toString(); }, 'users-export.csv'); } ``` ## Definition of Done - [ ] CSV export works with all filters - [ ] PDF export works with branding - [ ] Large datasets handled efficiently - [ ] Tests pass ## Estimation **Complexity:** Medium | **Effort:** 3-4 hours