Code Coverage |
||||||||||
Lines |
Functions and Methods |
Classes and Traits |
||||||||
Total | |
0.00% |
0 / 37 |
|
0.00% |
0 / 3 |
CRAP | |
0.00% |
0 / 1 |
ClientManagementUsersExport | |
0.00% |
0 / 37 |
|
0.00% |
0 / 3 |
30 | |
0.00% |
0 / 1 |
__construct | |
0.00% |
0 / 1 |
|
0.00% |
0 / 1 |
2 | |||
array | |
0.00% |
0 / 22 |
|
0.00% |
0 / 1 |
12 | |||
headings | |
0.00% |
0 / 14 |
|
0.00% |
0 / 1 |
2 |
1 | <?php |
2 | |
3 | namespace App\Exports; |
4 | |
5 | use App\Http\Models\Auth\User; |
6 | use Vitorccs\LaravelCsv\Concerns\FromArray; |
7 | use Vitorccs\LaravelCsv\Concerns\Exportable; |
8 | use App\Http\Models\Admin\AdminUserInvitation; |
9 | use Vitorccs\LaravelCsv\Concerns\WithHeadings; |
10 | use App\Http\Resources\ClientManagementUsersExportResource; |
11 | |
12 | class ClientManagementUsersExport implements FromArray, WithHeadings |
13 | { |
14 | use Exportable; |
15 | |
16 | public function __construct(public array $userIds = [], public bool $deactivated = false) |
17 | { } |
18 | |
19 | public function array(): array |
20 | { |
21 | $usersQuery = User::select([ |
22 | "first_name", |
23 | "last_name", |
24 | "email", |
25 | "role", |
26 | "company_id", |
27 | "company_group_id", |
28 | "status", |
29 | "created_at", |
30 | "deleted_at", |
31 | "deactivated_at", |
32 | "avatar" |
33 | ])->whereIn('_id', $this->userIds); |
34 | |
35 | if ($this->deactivated) { |
36 | $usersQuery = $usersQuery->onlyTrashed(); |
37 | } |
38 | |
39 | $users = $usersQuery->latest()->get(); |
40 | |
41 | if (!$this->deactivated) { |
42 | $invitations = AdminUserInvitation::whereNotIn("email", $users->pluck("email"))->whereIn('_id', $this->userIds)->latest()->get(); |
43 | $users = $users->concat($invitations)->sortByDesc('created_at'); |
44 | } |
45 | |
46 | $users = ClientManagementUsersExportResource::collection($users); |
47 | |
48 | // Create an instance of the current request |
49 | $request = request(); |
50 | |
51 | return $users->toArray($request); // Pass the request instance |
52 | } |
53 | |
54 | public function headings(): array |
55 | { |
56 | return [ |
57 | 'First Name' , |
58 | 'Last Name' , |
59 | 'Email' , |
60 | 'Company' , |
61 | 'Installed Extension?', |
62 | 'Role', |
63 | 'Group', |
64 | 'Subgroup', |
65 | 'License Type', |
66 | 'Status', |
67 | 'Created At', |
68 | 'Status Date' |
69 | ]; |
70 | } |
71 | } |