diff --git a/src/Domain/Subscriptions/Controllers/SubscriptionUpgradeController.php b/src/Domain/Subscriptions/Controllers/SubscriptionUpgradeController.php index bf1404a7..99a9b3cc 100644 --- a/src/Domain/Subscriptions/Controllers/SubscriptionUpgradeController.php +++ b/src/Domain/Subscriptions/Controllers/SubscriptionUpgradeController.php @@ -6,7 +6,7 @@ use Illuminate\Http\Response; use App\Http\Controllers\Controller; use Illuminate\Support\Facades\Cache; use Domain\Subscriptions\Services\StripeService; -use Domain\Subscriptions\Requests\StoreUpgradeAccountRequest; +use Domain\Teams\Requests\StoreUpgradeAccountRequest; /** * Upgrade account to subscription diff --git a/src/Domain/Teams/Controllers/BrowseSharedWithMeController.php b/src/Domain/Teams/Controllers/BrowseSharedWithMeController.php index fc4b4fc7..1afea588 100644 --- a/src/Domain/Teams/Controllers/BrowseSharedWithMeController.php +++ b/src/Domain/Teams/Controllers/BrowseSharedWithMeController.php @@ -9,18 +9,23 @@ use Illuminate\Support\Facades\Auth; class BrowseSharedWithMeController { - public function __invoke($id) + public function __invoke($id): array { $rootId = Str::isUuid($id) ? $id : null; $requestedFolder = Str::isUuid($id) ? Folder::findOrFail($rootId) : null; + $relations = [ + 'parent:id,name', + 'shared:token,id,item_id,permission,is_protected,expire_in' + ]; + if ($rootId) { - $folders = Folder::with(['parent:id,name', 'shared:token,id,item_id,permission,is_protected,expire_in']) + $folders = Folder::with($relations) ->where('id', $id) ->sortable() ->get(); - $files = File::with(['parent:id,name', 'shared:token,id,item_id,permission,is_protected,expire_in']) + $files = File::with($relations) ->where('folder_id', $id) ->sortable() ->get(); @@ -31,7 +36,7 @@ class BrowseSharedWithMeController ->where('user_id', Auth::id()) ->pluck('folder_id'); - $folders = Folder::with(['parent:id,name', 'shared:token,id,item_id,permission,is_protected,expire_in']) + $folders = Folder::with($relations) ->whereIn('id', $folderIds) ->sortable() ->get(); diff --git a/src/Domain/Teams/Controllers/ConvertFolderIntoTeamFolderController.php b/src/Domain/Teams/Controllers/ConvertFolderIntoTeamFolderController.php index 5b1ba857..146cefb5 100644 --- a/src/Domain/Teams/Controllers/ConvertFolderIntoTeamFolderController.php +++ b/src/Domain/Teams/Controllers/ConvertFolderIntoTeamFolderController.php @@ -1,7 +1,8 @@ update([ 'team_folder' => 1, 'parent_id' => null, ]); // Invite team members - ($this->inviteMembers)($request->input('members'), $folder); + ($this->inviteMembers)($request->input('invitations'), $folder); return response($folder, 201); } diff --git a/src/Domain/Teams/Controllers/InvitationsController.php b/src/Domain/Teams/Controllers/InvitationsController.php index f075544d..3f673f23 100644 --- a/src/Domain/Teams/Controllers/InvitationsController.php +++ b/src/Domain/Teams/Controllers/InvitationsController.php @@ -6,12 +6,15 @@ use Illuminate\Http\Response; use Illuminate\Support\Facades\DB; use App\Http\Controllers\Controller; use Domain\Teams\Models\TeamFolderInvitation; +use Illuminate\Contracts\Routing\ResponseFactory; class InvitationsController extends Controller { + public function update( TeamFolderInvitation $invitation - ): Response { + ): ResponseFactory|Response { + $user = User::where('email', $invitation->email) ->firstOrFail(); @@ -31,7 +34,7 @@ class InvitationsController extends Controller public function destroy( TeamFolderInvitation $invitation - ): Response { + ): ResponseFactory|Response { $invitation->update([ 'status' => 'rejected', ]); diff --git a/src/Domain/Teams/Controllers/TeamFoldersController.php b/src/Domain/Teams/Controllers/TeamFoldersController.php index 0382300a..4fd353f2 100644 --- a/src/Domain/Teams/Controllers/TeamFoldersController.php +++ b/src/Domain/Teams/Controllers/TeamFoldersController.php @@ -2,7 +2,9 @@ namespace Domain\Teams\Controllers; use DB; -use Illuminate\Http\Request; +use Domain\Teams\Requests\CreateTeamFolderRequest; +use Domain\Teams\Requests\UpdateTeamFolderMembersRequest; +use Illuminate\Contracts\Routing\ResponseFactory; use Domain\Files\Models\File; use Illuminate\Http\Response; use Domain\Folders\Models\Folder; @@ -47,8 +49,8 @@ class TeamFoldersController extends Controller } public function store( - Request $request, - ): Response { + CreateTeamFolderRequest $request, + ): ResponseFactory|Response { $data = CreateTeamFolderData::fromRequest($request); $folder = Folder::create([ @@ -58,17 +60,17 @@ class TeamFoldersController extends Controller ]); // Invite team members - ($this->inviteMembers)($data->members, $folder); + ($this->inviteMembers)($data->invitations, $folder); return response($folder, 201); } public function update( - Request $request, + UpdateTeamFolderMembersRequest $request, Folder $folder, UpdateInvitationsAction $updateInvitations, UpdateMembersAction $updateMembers, - ): Response { + ): ResponseFactory|Response { $updateInvitations( $folder, $request->input('invitations') @@ -82,7 +84,7 @@ class TeamFoldersController extends Controller return response('Done', 201); } - public function destroy(Folder $folder): Response + public function destroy(Folder $folder): ResponseFactory|Response { // Delete existing invitations DB::table('team_folder_invitations') diff --git a/src/Domain/Teams/DTO/CreateTeamFolderData.php b/src/Domain/Teams/DTO/CreateTeamFolderData.php index 01ce0722..e3d51344 100644 --- a/src/Domain/Teams/DTO/CreateTeamFolderData.php +++ b/src/Domain/Teams/DTO/CreateTeamFolderData.php @@ -1,4 +1,5 @@ $request->input('name'), - 'members' => $request->input('members'), + 'name' => $request->input('name'), + 'invitations' => $request->input('invitations'), ]); } } diff --git a/src/Domain/Teams/Requests/ConvertIntoTeamFolderRequest.php b/src/Domain/Teams/Requests/ConvertIntoTeamFolderRequest.php new file mode 100644 index 00000000..b66d788e --- /dev/null +++ b/src/Domain/Teams/Requests/ConvertIntoTeamFolderRequest.php @@ -0,0 +1,30 @@ + 'required|array', + ]; + } +} diff --git a/src/Domain/Teams/Requests/CreateTeamFolderRequest.php b/src/Domain/Teams/Requests/CreateTeamFolderRequest.php new file mode 100644 index 00000000..400c1093 --- /dev/null +++ b/src/Domain/Teams/Requests/CreateTeamFolderRequest.php @@ -0,0 +1,31 @@ + 'required|string', + 'invitations' => 'required|array', + ]; + } +} diff --git a/src/Domain/Teams/Requests/UpdateTeamFolderMembersRequest.php b/src/Domain/Teams/Requests/UpdateTeamFolderMembersRequest.php new file mode 100644 index 00000000..a97e3040 --- /dev/null +++ b/src/Domain/Teams/Requests/UpdateTeamFolderMembersRequest.php @@ -0,0 +1,31 @@ + 'present|array', + 'invitations' => 'present|array', + ]; + } +} diff --git a/tests/Domain/Teams/TeamsTest.php b/tests/Domain/Teams/TeamsTest.php index 6c336ca9..c9a4abda 100644 --- a/tests/Domain/Teams/TeamsTest.php +++ b/tests/Domain/Teams/TeamsTest.php @@ -29,7 +29,7 @@ class TeamsTest extends TestCase ->actingAs($user) ->post('/api/teams/folders', [ 'name' => 'Company Project', - 'members' => [ + 'invitations' => [ [ 'email' => 'john@internal.com', 'permission' => 'can-edit', @@ -76,7 +76,7 @@ class TeamsTest extends TestCase $this ->actingAs($user) ->post("/api/teams/convert/{$folder->id}", [ - 'members' => [ + 'invitations' => [ [ 'email' => 'john@internal.com', 'permission' => 'can-edit', @@ -484,6 +484,7 @@ class TeamsTest extends TestCase 'permission' => 'can-view', ], ], + 'invitations' => [], ]) ->assertCreated();