updated stats, add logs and other data in user resource
This commit is contained in:
@@ -3,8 +3,11 @@
|
||||
namespace App\Filament\Resources\UserResource\Pages;
|
||||
|
||||
use App\Filament\Resources\UserResource;
|
||||
use App\Models\User;
|
||||
use Filament\Actions;
|
||||
use Filament\Actions\Action;
|
||||
use Filament\Resources\Pages\EditRecord;
|
||||
use Illuminate\Support\Facades\Response;
|
||||
|
||||
class EditUser extends EditRecord
|
||||
{
|
||||
@@ -14,6 +17,72 @@ class EditUser extends EditRecord
|
||||
{
|
||||
return [
|
||||
Actions\DeleteAction::make(),
|
||||
Action::make('download_report')
|
||||
->label('Download User Report')
|
||||
->icon('heroicon-o-user')
|
||||
->action(function (User $record) {
|
||||
$userData = [
|
||||
'Name' => $record->name,
|
||||
'Email' => $record->email,
|
||||
'Stripe ID' => $record->stripe_id ?? 'N/A',
|
||||
'Payment Method Type' => $record->pm_type ?? 'N/A',
|
||||
'Card Last 4' => $record->pm_last_four ?? 'N/A',
|
||||
'Trial Ends At' => $record->trial_ends_at ? $record->trial_ends_at->toDateTimeString() : 'N/A',
|
||||
'User Level' => match ($record->level) {
|
||||
0 => 'Normal User',
|
||||
1 => 'Banned',
|
||||
9 => 'Super Admin',
|
||||
default => 'Unknown',
|
||||
},
|
||||
'Email Verified At' => $record->email_verified_at ? $record->email_verified_at->toDateTimeString() : 'Not Verified',
|
||||
];
|
||||
|
||||
$csv = fopen('php://temp', 'r+');
|
||||
// User Details Header
|
||||
fputcsv($csv, ['User Details']);
|
||||
fputcsv($csv, array_keys($userData));
|
||||
fputcsv($csv, array_values($userData));
|
||||
fputcsv($csv, []);
|
||||
|
||||
// Usage Logs Header
|
||||
fputcsv($csv, ['Usage Logs']);
|
||||
fputcsv($csv, ['IP Address', 'Emails Created Count', 'Emails Received Count', 'Emails Created History', 'Emails Received History', 'Created At']);
|
||||
foreach ($record->usageLogs as $log) {
|
||||
fputcsv($csv, [
|
||||
$log->ip_address,
|
||||
$log->emails_created_count,
|
||||
$log->emails_received_count,
|
||||
is_array($log->emails_created_history) ? implode('; ', $log->emails_created_history) : 'None',
|
||||
is_array($log->emails_received_history) ? implode('; ', $log->emails_received_history) : 'None',
|
||||
$log->created_at->toDateTimeString(),
|
||||
]);
|
||||
}
|
||||
fputcsv($csv, []);
|
||||
|
||||
// General Logs Header
|
||||
fputcsv($csv, ['General Logs']);
|
||||
fputcsv($csv, ['IP Address', 'Email', 'Created At']);
|
||||
foreach ($record->logs as $log) {
|
||||
fputcsv($csv, [
|
||||
$log->ip,
|
||||
$log->email,
|
||||
$log->created_at->toDateTimeString(),
|
||||
]);
|
||||
}
|
||||
|
||||
rewind($csv);
|
||||
$csvContent = stream_get_contents($csv);
|
||||
fclose($csv);
|
||||
|
||||
return Response::streamDownload(
|
||||
function () use ($csvContent) {
|
||||
echo $csvContent;
|
||||
},
|
||||
"user_{$record->id}_report_" . now()->format('Ymd_His') . '.csv',
|
||||
['Content-Type' => 'text/csv']
|
||||
);
|
||||
})
|
||||
->color('primary'),
|
||||
];
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user