Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
0.00% covered (danger)
0.00%
0 / 25
0.00% covered (danger)
0.00%
0 / 3
CRAP
0.00% covered (danger)
0.00%
0 / 1
CompaniesExport
0.00% covered (danger)
0.00%
0 / 25
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 / 11
0.00% covered (danger)
0.00%
0 / 1
12
 headings
0.00% covered (danger)
0.00%
0 / 13
0.00% covered (danger)
0.00%
0 / 1
2
1<?php
2
3namespace App\Exports;
4
5use App\Http\Models\Admin\Company;
6use App\Http\Resources\CompanyExportResource;
7use Vitorccs\LaravelCsv\Concerns\Exportable;
8use Vitorccs\LaravelCsv\Concerns\FromArray;
9use Vitorccs\LaravelCsv\Concerns\WithHeadings;
10
11class CompaniesExport implements FromArray, WithHeadings
12{
13    use Exportable;
14
15    public function __construct(public array $companyIds = [], public bool $deactivated = false) {}
16
17    public function array(): array
18    {
19        $companiesQuery = Company::with(['licenses' => function ($query) {
20            $query->active();
21        }]);
22
23        if (count($this->companyIds) > 0) {
24            $companiesQuery = $companiesQuery->whereIn('_id', $this->companyIds);
25        }
26
27        if ($this->deactivated == true) {
28            $companiesQuery = $companiesQuery->onlyTrashed();
29        }
30
31        $companies = $companiesQuery->latest()->get();
32
33        $companies = CompanyExportResource::collection($companies);
34
35        // Create an instance of the current request
36        $request = request();
37
38        return $companies->toArray($request); // Pass the request instance
39    }
40
41    public function headings(): array
42    {
43        return [
44            'Name',
45            'Number of Users',
46            'Contract Term',
47            'Contract Start Date',
48            'Contract End Date',
49            'Auto Renewal',
50            'Payment Options',
51            'Account Status',
52            'Last Modified On',
53            'Status Date',
54            'Created Date',
55        ];
56    }
57}