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}