Code Coverage |
||||||||||
Lines |
Functions and Methods |
Classes and Traits |
||||||||
Total | |
0.00% |
0 / 30 |
|
0.00% |
0 / 1 |
CRAP | |
0.00% |
0 / 1 |
InvitationController | |
0.00% |
0 / 30 |
|
0.00% |
0 / 1 |
12 | |
0.00% |
0 / 1 |
create | |
0.00% |
0 / 30 |
|
0.00% |
0 / 1 |
12 |
1 | <?php |
2 | |
3 | namespace App\Http\Controllers\v1; |
4 | |
5 | use App\Http\Controllers\Controller; |
6 | use App\Http\Models\Auth\User; |
7 | use App\Http\Models\Invitation; |
8 | use App\Http\Requests\InvitationFormRequest; |
9 | use Illuminate\Http\JsonResponse; |
10 | use Illuminate\Notifications\Notifiable; |
11 | |
12 | class InvitationController extends Controller |
13 | { |
14 | use Notifiable; |
15 | |
16 | public function create(InvitationFormRequest $request): JsonResponse |
17 | { |
18 | $data = $request->validated(); |
19 | $user = $request->user(); |
20 | $userId = $user->getKey(); |
21 | |
22 | $referral_key = $user->referral_key; |
23 | if (! $referral_key) { |
24 | $referral_key = uniqid(); |
25 | User::where('_id', $userId)->update([ |
26 | 'referral_key' => $referral_key, |
27 | ]); |
28 | } |
29 | |
30 | $invited_emails = explode(',', $data['invited_email']); |
31 | |
32 | $invitation_request = array_merge( |
33 | $request->except( |
34 | 'invited_email' |
35 | ) |
36 | ); |
37 | |
38 | dispatch(function () use ($invited_emails, $referral_key, $data, $invitation_request, $userId) { |
39 | foreach ($invited_emails as $invited_email) { |
40 | $invitation_data = $invitation_request; |
41 | $invitation_data['user_id'] = $userId; |
42 | $invitation_data['status'] = 'Pending'; |
43 | $invitation_data['email'] = $invited_email; |
44 | $invitation_data['referral_key'] = $referral_key; |
45 | $invitation = Invitation::create($invitation_data); |
46 | |
47 | $invitation_data['first_name'] = $data['first_name']; |
48 | $invitation_data['last_name'] = $data['last_name']; |
49 | $invitation_data['personal_message'] = $data['personal_message']; |
50 | $invitation_data['invitation_id'] = $invitation['_id']; |
51 | $invitation->sendInvitationEmail($invitation_data); |
52 | } |
53 | }); |
54 | |
55 | return response()->json(true); |
56 | } |
57 | } |