Code Coverage |
||||||||||
Lines |
Functions and Methods |
Classes and Traits |
||||||||
Total | |
7.89% |
3 / 38 |
|
0.00% |
0 / 1 |
CRAP | |
0.00% |
0 / 1 |
CompanyAuth | |
7.89% |
3 / 38 |
|
0.00% |
0 / 1 |
105.55 | |
0.00% |
0 / 1 |
handleAdminInvitation | |
7.89% |
3 / 38 |
|
0.00% |
0 / 1 |
105.55 |
1 | <?php |
2 | |
3 | namespace App\Traits; |
4 | |
5 | use App\Http\Models\Plans; |
6 | use App\Http\Models\Admin\CompanyLicenses; |
7 | use App\Http\Models\Admin\AdminUserInvitation; |
8 | |
9 | trait CompanyAuth |
10 | { |
11 | public function handleAdminInvitation($user) |
12 | { |
13 | $invitation = AdminUserInvitation::firstWhere('email', $user?->email); |
14 | |
15 | if (!$invitation) { |
16 | return; |
17 | } |
18 | |
19 | $user->status = "Active"; |
20 | $user->activation_date = now()->toDateTimeString(); |
21 | |
22 | if ($invitation->company_id) { |
23 | $user->company_id = $invitation->company_id; |
24 | } |
25 | |
26 | if ($invitation->company_group_id || $invitation->company_subgroup_id) { |
27 | $user->company_group_id = $invitation->company_group_id ?? $invitation->company_subgroup_id; |
28 | } |
29 | |
30 | $user->save(); |
31 | |
32 | if ($invitation->plan_id) { |
33 | $plan = Plans::find($invitation->plan_id); |
34 | |
35 | if ($plan) { |
36 | // Assign a Plan Only if the current plan is not it. |
37 | if ($user->subscribed('main')) { |
38 | $user->subscription('main')->cancel(); |
39 | } else { |
40 | $subscription = $user->subscriptions()->latest()->first(); |
41 | if ($subscription) { |
42 | $subscription->markAsCancelledOnlyInDB(); |
43 | } |
44 | } |
45 | |
46 | $company_license = CompanyLicenses::where('company_id', $user->company_id) |
47 | ->active() |
48 | ->first(); |
49 | |
50 | $end_date = $company_license->contract_end_date; |
51 | |
52 | $user->subscriptions()->create([ |
53 | 'name' => 'main', |
54 | 'stripe_status' => 'active', |
55 | 'stripe_plan' => $plan->stripe_id, |
56 | 'quantity' => "1", |
57 | 'ends_at' => $end_date, |
58 | 'starts_at' => now()->toDateTimeString(), |
59 | ]); |
60 | |
61 | $company_license->reduceCompanyLicenseCountForNewUsers($plan); |
62 | } |
63 | } |
64 | |
65 | if ($invitation->role_name) { |
66 | $user->assignRole($invitation->role_name, []); |
67 | } |
68 | |
69 | $invitation->delete(); |
70 | |
71 | if ($user->company?->pocs()?->where('email', $user->email)?->exists()) { |
72 | return [ |
73 | 'company_poc' => true |
74 | ]; |
75 | } |
76 | } |
77 | } |