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