Skip to content

Commit 043c97a

Browse files
committed
39. export users to sms traffic
1 parent 84ac033 commit 043c97a

File tree

2 files changed

+75
-0
lines changed

2 files changed

+75
-0
lines changed
Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,70 @@
1+
<?php
2+
3+
namespace App\Exports;
4+
5+
use Illuminate\Contracts\Database\Eloquent\Builder;
6+
use Illuminate\Contracts\Support\Responsable;
7+
use Maatwebsite\Excel\Concerns\Exportable;
8+
use Maatwebsite\Excel\Concerns\FromQuery;
9+
use Maatwebsite\Excel\Concerns\ShouldAutoSize;
10+
use Maatwebsite\Excel\Concerns\WithColumnFormatting;
11+
use Maatwebsite\Excel\Concerns\WithHeadings;
12+
use Maatwebsite\Excel\Concerns\WithMapping;
13+
14+
class UsersToSmsTrafficExport implements FromQuery, WithHeadings, WithColumnFormatting, WithMapping, ShouldAutoSize, Responsable
15+
{
16+
use Exportable;
17+
18+
private string $fileName;
19+
20+
public function __construct(private readonly Builder $query)
21+
{
22+
$this->setFileName();
23+
}
24+
25+
public function headings(): array
26+
{
27+
return [
28+
'phone',
29+
'name',
30+
'birthday',
31+
'comment',
32+
];
33+
}
34+
35+
public function query(): Builder
36+
{
37+
return $this->query->select([
38+
'phone',
39+
'first_name',
40+
'last_name',
41+
'patronymic_name',
42+
'birth_date',
43+
]);
44+
}
45+
46+
/**
47+
* @param \App\Models\User\User $user
48+
*/
49+
public function map($user): array
50+
{
51+
return [
52+
ltrim($user->phone, '+'),
53+
$user->first_name,
54+
$user->birth_date,
55+
$user->getFullName(),
56+
];
57+
}
58+
59+
public function columnFormats(): array
60+
{
61+
return [
62+
'A' => \PhpOffice\PhpSpreadsheet\Style\NumberFormat::FORMAT_NUMBER,
63+
];
64+
}
65+
66+
private function setFileName(): void
67+
{
68+
$this->fileName = 'users_to_sms_traffic_' . now()->format('Ymd') . '.xlsx';
69+
}
70+
}

src/app/Filament/Resources/User/UserResource/Pages/ListUsers.php

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
namespace App\Filament\Resources\User\UserResource\Pages;
44

5+
use App\Exports\UsersToSmsTrafficExport;
56
use App\Filament\Resources\User\UserResource;
67
use Filament\Actions;
78
use Filament\Resources\Pages\ListRecords;
@@ -13,6 +14,10 @@ class ListUsers extends ListRecords
1314
protected function getHeaderActions(): array
1415
{
1516
return [
17+
Actions\Action::make('export-users-to-sms-traffic')
18+
->label('Выгрузить пользователей для sms traffic')
19+
->icon('heroicon-m-arrow-up-tray')
20+
->action(fn () => new UsersToSmsTrafficExport($this->getFilteredTableQuery())),
1621
Actions\CreateAction::make(),
1722
];
1823
}

0 commit comments

Comments
 (0)