it_accept_team_folder_invite

This commit is contained in:
Peter Papp
2021-08-24 13:29:45 +02:00
parent ca1d037975
commit d53a4964ae
9 changed files with 165 additions and 12 deletions
@@ -0,0 +1,34 @@
<?php
namespace Domain\Teams\Controllers;
use App\Http\Controllers\Controller;
use App\Users\Models\User;
use Domain\Teams\Models\TeamFoldersInvitation;
use Illuminate\Http\Response;
use Illuminate\Support\Facades\DB;
class AcceptTeamFolderInvitationController extends Controller
{
public function __invoke(TeamFoldersInvitation $invitation): Response
{
$user = User::where('email', $invitation->email)
->firstOrFail();
$invitation->update([
'status' => 'accepted',
]);
DB::table('team_folder_members')
->insert([
'folder_id' => $invitation->folder_id,
'member_id' => $user->id,
'permission' => 'can-edit',
]);
return response('Done', 201);
}
}
@@ -1,10 +1,11 @@
<?php
namespace Domain\Teams\Controllers;
use Illuminate\Http\Request;
use Illuminate\Http\Response;
use Domain\Folders\Models\Folder;
use App\Http\Controllers\Controller;
use Illuminate\Support\Facades\Response;
use Domain\Teams\DTO\CreateTeamFolderData;
use Illuminate\Support\Facades\Notification;
use Domain\Teams\Models\TeamFoldersInvitation;
@@ -23,16 +24,17 @@ class TeamFoldersController extends Controller
]);
collect($data->members)
->each(function ($email) use ($teamFolder) {
->each(function ($member) use ($teamFolder) {
// Create invitation
$invitation = TeamFoldersInvitation::create([
'folder_id' => $teamFolder->id,
'email' => $email,
'permission' => $member['permission'],
'email' => $member['email'],
'folder_id' => $teamFolder->id,
]);
// Invite user
Notification::route('mail', $email)
Notification::route('mail', $member['email'])
->notify(new InvitationIntoTeamFolder($teamFolder, $invitation));
});
@@ -3,6 +3,7 @@ namespace Domain\Teams\Models;
use Illuminate\Support\Str;
use Illuminate\Database\Eloquent\Model;
use Database\Factories\TeamFoldersInvitationFactory;
use Illuminate\Database\Eloquent\Factories\HasFactory;
/**
@@ -28,6 +29,11 @@ class TeamFoldersInvitation extends Model
protected $keyType = 'string';
protected static function newFactory(): TeamFoldersInvitationFactory
{
return TeamFoldersInvitationFactory::new();
}
protected static function boot()
{
parent::boot();