forked from TheRestartProject/restarters.net
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathAcceptUserInvites.php
More file actions
96 lines (86 loc) · 4.13 KB
/
AcceptUserInvites.php
File metadata and controls
96 lines (86 loc) · 4.13 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
<?php
namespace App\Http\Middleware;
use Symfony\Component\HttpFoundation\Response;
use Illuminate\Http\Request;
use App\Models\EventsUsers;
use App\Models\Invite;
use App\Models\UserGroups;
use Closure;
use Illuminate\Support\Facades\Auth;
class AcceptUserInvites
{
/**
* Handle an incoming request.
*/
public function handle(Request $request, Closure $next): Response
{
// Check if there are existing Groups/Events Shareable Invites for the
// Current User
if (! empty($request->session()->get('groups') || ! empty($request->session()->get('events')))) {
$request->session()->put('invites-feedback');
} else {
$request->session()->forget('invites-feedback');
}
if (! empty($request->session()->get('groups'))) {
foreach ($request->session()->get('groups') as $hashs) {
foreach ($hashs as $hash) {
$acceptance = Invite::where('hash', $hash)->firstOrFail();
$group = $acceptance->group;
// If the $acceptance type is a Group
// and the User has not already joined.
// Accept or Update a record and
// delete the Invite and create a new session
if ($acceptance->type == 'group' && ! $group->isVolunteer()) {
UserGroups::updateOrCreate([
'user' => auth()->id(),
'group' => $acceptance->record_id,
'status' => 1,
'role' => 4,
]);
$acceptance->delete();
$request->session()->push('invites-feedback', __('groups.you_have_joined', [
'url' => url("/group/view/{$group->idgroups}"),
'name' => e($group->name)
]));
// Else that must mean the User is already part of the Group.
// We can then delete the Invite and create a new session
} else {
$request->session()->push('invites-feedback', 'You are already a member of <a class="plain-link" href="'.url("/group/view/{$group->idgroups}").'">'.e($group->name).'</a>');
}
}
$request->session()->forget('groups');
}
}
if (! empty($request->session()->get('events'))) {
foreach ($request->session()->get('events') as $hashs) {
foreach ($hashs as $hash) {
$acceptance = Invite::where('hash', $hash)->firstOrFail();
$event = $acceptance->event;
// If the $acceptance type is a Event
// and the User has not already joined.
// Accept or Update a record and
// delete the Invite and create a new session
if ($acceptance->type == 'event' && ! $event->isVolunteer()) {
EventsUsers::updateOrCreate([
'user' => auth()->id(),
'event' => $acceptance->record_id,
'status' => 1,
'role' => 4,
]);
$acceptance->delete();
$request->session()->push('invites-feedback', __('events.you_have_joined', [
'url' => url("/party/view/{$event->idevents}"),
'name' => e($event->venue)
]));
// Else that must mean the User is already part of the Event.
// We can then delete the Invite and create a new session
} else {
$request->session()->push('invites-feedback', 'You are already a member of <a class="plain-link" href="'.url("/party/view/{$event->idevents}").'">'.e($event->venue).'</a>');
}
}
$request->session()->forget('events');
}
}
return $next($request);
}
}