team invitation notification with broadcasting

This commit is contained in:
Čarodej
2022-03-10 16:23:13 +01:00
parent 64e80d387b
commit 9ae2d54a5e
50 changed files with 331 additions and 201 deletions

View File

@@ -8,6 +8,7 @@ use Domain\Teams\Models\TeamFolderMember;
use Domain\Teams\Models\TeamFolderInvitation;
use Illuminate\Contracts\Routing\ResponseFactory;
use Domain\Teams\Resources\TeamInvitationResource;
use Domain\Teams\Actions\ClearActionInInvitationNotificationAction;
class InvitationsController extends Controller
{
@@ -21,22 +22,31 @@ class InvitationsController extends Controller
}
public function update(
TeamFolderInvitation $invitation
): ResponseFactory | Response {
$user = User::where('email', $invitation->email);
TeamFolderInvitation $invitation,
ClearActionInInvitationNotificationAction $clearActionInInvitationNotification,
): ResponseFactory|Response {
$user = User::where('email', $invitation->email)
->first();
if ($user) {
if (is_demo_account()) {
return response('Done', 204);
}
if ($user->exists()) {
$invitation->accept();
// Store team member
TeamFolderMember::create([
'user_id' => $user->first()->id,
'user_id' => $user->id,
'parent_id' => $invitation->parent_id,
'permission' => $invitation->permission,
]);
// Clear action in existing notification
$clearActionInInvitationNotification($user, $invitation);
}
if ($user->doesntExist()) {
if (! $user) {
$invitation->update([
'status' => 'waiting-for-registration',
]);
@@ -46,10 +56,24 @@ class InvitationsController extends Controller
}
public function destroy(
TeamFolderInvitation $invitation
): ResponseFactory | Response {
TeamFolderInvitation $invitation,
ClearActionInInvitationNotificationAction $clearActionInInvitationNotification,
): ResponseFactory|Response {
$invitation->reject();
// Get user from invitation
$user = User::where('email', $invitation->email)
->first();
// Clear action in existing notification
if ($user) {
if (is_demo_account()) {
return response('Done', 204);
}
$clearActionInInvitationNotification($user, $invitation);
}
return response('Done', 204);
}
}