Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
0.00% covered (danger)
0.00%
0 / 34
0.00% covered (danger)
0.00%
0 / 2
CRAP
0.00% covered (danger)
0.00%
0 / 1
CompaniesLicenseResource
0.00% covered (danger)
0.00%
0 / 34
0.00% covered (danger)
0.00%
0 / 2
6
0.00% covered (danger)
0.00%
0 / 1
 toArray
0.00% covered (danger)
0.00%
0 / 33
0.00% covered (danger)
0.00%
0 / 1
2
 getActiveLicense
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 1
2
1<?php
2
3namespace App\Http\Resources;
4
5use App\Http\Models\Plans;
6use Illuminate\Http\Request;
7use Illuminate\Http\Resources\Json\JsonResource;
8
9class CompaniesLicenseResource extends JsonResource
10{
11    /**
12     * Transform the resource into an array.
13     *
14     * @return array<string, mixed>
15     */
16    public function toArray(Request $request): array
17    {
18        $license = $this->getActiveLicense($this);
19
20        return [
21            'id' => $this->id,
22            'name' => $this->name,
23            'licensesAvailable' => max(0, $license->total_number_of_licenses_remaining),
24            'plans' => [
25                [
26                    'value' => Plans::STARTER_YEARLY_IDENTIFIER,
27                    'label' => 'Starter',
28                    'licensesAvailable' => max(0, $license->total_starter_license_remaining),
29
30                ],
31                [
32                    'value' => Plans::GROWTH_YEARLY_IDENTIFIER,
33                    'label' => 'Growth',
34                    'licensesAvailable' => max(0, $license->total_growth_license_remaining),
35
36                ],
37                [
38                    'value' => Plans::PROFESSIONAL_YEARLY_IDENTIFIER,
39                    'label' => 'Sales Pro',
40                    'licensesAvailable' => max(0, $license->total_sales_pro_license_remaining),
41
42                ],
43                [
44                    'value' => Plans::ProPlanTeamsSMB,
45                    'label' => 'Sales Pro Teams',
46                    'licensesAvailable' => max(0, $license->total_sales_pro_teams_license_remaining),
47
48                ],
49                [
50                    'value' => Plans::FREEMIUM_IDENTIFIER,
51                    'label' => 'Freemium',
52                    'licensesAvailable' => 'Unlimited',
53
54                ],
55            ],
56        ];
57    }
58
59    private function getActiveLicense($company)
60    {
61        return $company->licenses->first() ?? $company->licenses()->latest()->first();
62    }
63}