- convert folders into teams folders in convert/delete events

- composer update
This commit is contained in:
Čarodej
2021-11-04 10:05:29 +01:00
parent aec5b98313
commit ee86fbbe66
14 changed files with 135 additions and 48 deletions
@@ -0,0 +1,23 @@
<?php
namespace Domain\Teams\Actions;
use Domain\Folders\Models\Folder;
use Illuminate\Support\Arr;
use Illuminate\Support\Facades\DB;
class SetTeamFolderPropertyForAllChildrenAction
{
public function __invoke(Folder $folder, bool $isTeamFolder)
{
// Get all children of team folder
$childrenFolderIds = Folder::with('folders:id,parent_id')
->where('id', $folder->id)
->get('id');
// Set all children as team_folder = true
DB::table('folders')
->whereIn('id', Arr::flatten([filter_folders_ids($childrenFolderIds)]))
->update(['team_folder' => $isTeamFolder]);
}
}
@@ -1,6 +1,8 @@
<?php
namespace Domain\Teams\Controllers;
use Domain\Teams\Actions\SetTeamFolderPropertyForAllChildrenAction;
use Illuminate\Support\Arr;
use Illuminate\Http\Response;
use Domain\Folders\Models\Folder;
use Illuminate\Support\Facades\DB;
@@ -13,18 +15,22 @@ class ConvertFolderIntoTeamFolderController extends Controller
{
public function __construct(
public InviteMembersIntoTeamFolderAction $inviteMembers,
public SetTeamFolderPropertyForAllChildrenAction $setTeamFolderPropertyForAllChildren,
) {
}
public function __invoke(
ConvertIntoTeamFolderRequest $request,
Folder $folder
): ResponseFactory | Response {
): ResponseFactory|Response {
// Update root team folder
$folder->update([
'team_folder' => 1,
'parent_id' => null,
]);
($this->setTeamFolderPropertyForAllChildren)($folder, true);
// Attach owner into members
DB::table('team_folder_members')
->insert([
@@ -1,6 +1,7 @@
<?php
namespace Domain\Teams\Controllers;
use Domain\Teams\Actions\SetTeamFolderPropertyForAllChildrenAction;
use Illuminate\Support\Str;
use Domain\Files\Models\File;
use Illuminate\Http\Response;
@@ -23,6 +24,7 @@ class TeamFoldersController extends Controller
{
public function __construct(
public InviteMembersIntoTeamFolderAction $inviteMembers,
public SetTeamFolderPropertyForAllChildrenAction $setTeamFolderPropertyForAllChildren,
) {
}
@@ -31,7 +33,7 @@ class TeamFoldersController extends Controller
$id = Str::isUuid($id) ? $id : null;
$folders = Folder::where('parent_id', $id)
->where('team_folder', ! Str::isUuid($id))
->where('team_folder', true)
->where('user_id', Auth::id())
->sortable()
->get();
@@ -111,6 +113,8 @@ class TeamFoldersController extends Controller
->where('parent_id', $folder->id)
->delete();
($this->setTeamFolderPropertyForAllChildren)($folder, false);
$folder->update([
'team_folder' => 0,
]);