diff --git a/routes/teams.php b/routes/teams.php index c15582f3..7d5e25c8 100644 --- a/routes/teams.php +++ b/routes/teams.php @@ -1,11 +1,12 @@ where('id', $id) + ->sortable() + ->get(); + + $files = File::with(['parent:id,name', 'shared:token,id,item_id,permission,is_protected,expire_in']) + ->where('folder_id', $id) + ->sortable() + ->get(); + } + + if (! $rootId) { + + $folderIds = DB::table('team_folder_members') + ->where('member_id', Auth::id()) + ->pluck('folder_id'); + + $folders = Folder::with(['parent:id,name', 'shared:token,id,item_id,permission,is_protected,expire_in']) + ->whereIn('id', $folderIds) + ->sortable() + ->get(); + + $files = []; + } + + // Collect folders and files to single array + return [ + 'content' => collect([$folders, $files])->collapse(), + 'folder' => $requestedFolder, + ]; + } +} \ No newline at end of file diff --git a/tests/Domain/Teams/TeamsTest.php b/tests/Domain/Teams/TeamsTest.php index e835cfa7..c5f79d5a 100644 --- a/tests/Domain/Teams/TeamsTest.php +++ b/tests/Domain/Teams/TeamsTest.php @@ -283,9 +283,43 @@ class TeamsTest extends TestCase } /** - * + * @test */ public function it_get_team_folders_shared_with_another_user() { + $user = User::factory(User::class) + ->create(); + + $member = User::factory(User::class) + ->create(); + + $folders = Folder::factory() + ->count(2) + ->create([ + 'user_id' => $user->id, + 'team_folder' => 1, + ]); + + DB::table('team_folder_members') + ->insert([ + [ + 'folder_id' => $folders[0]->id, + 'member_id' => $member->id, + 'permission' => 'can-edit', + ], + [ + 'folder_id' => $folders[1]->id, + 'member_id' => $member->id, + 'permission' => 'can-edit', + ], + ]); + + $this + ->actingAs($member) + ->getJson('/api/teams/shared-with-me/undefined') + ->assertOk() + ->assertJsonFragment([ + 'id' => $folders[0]->id, + ]); } }