team folder browsing with static team folder details

This commit is contained in:
Peter Papp
2021-08-31 14:08:47 +02:00
parent f44e262d6e
commit a3516769de
46 changed files with 317 additions and 225 deletions
@@ -2,9 +2,9 @@
namespace Domain\Folders\Controllers;
use Auth;
use Domain\Folders\Resources\FolderResource;
use Illuminate\Http\Response;
use App\Http\Controllers\Controller;
use Domain\Folders\Resources\FolderResource;
use Domain\Folders\Actions\CreateFolderAction;
use Domain\Folders\Requests\CreateFolderRequest;
use Support\Demo\Actions\FakeCreateFolderAction;
+26 -18
View File
@@ -203,6 +203,16 @@ class Folder extends Model
->withPivot('permission');
}
public function parents(): HasMany
{
return $this->hasMany(Folder::class, 'id', 'parent_id');
}
public function teamRoot(): HasMany
{
return $this->parents()->with('teamRoot');
}
// Delete all folder children
public static function boot()
{
@@ -214,30 +224,28 @@ class Folder extends Model
static::deleting(function ($item) {
if ($item->isForceDeleting()) {
$item->trashedChildren()->each(function ($folder) {
$folder->forceDelete();
});
$item
->trashedChildren()
->each(fn ($folder) => $folder->forceDelete());
} else {
$item->children()->each(function ($folder) {
$folder->delete();
});
$item
->children()
->each(fn ($folder) => $folder->delete());
$item->files()->each(function ($file) {
$file->delete();
});
$item
->files()
->each(fn ($file) => $file->delete());
}
});
// Restore children folders and files
static::restoring(function ($item) {
// Restore children folders
$item->trashedChildren()->each(function ($folder) {
$folder->restore();
});
// Restore children files
$item->trashedFiles()->each(function ($files) {
$files->restore();
});
$item
->trashedChildren()
->each(fn ($folder) => $folder->restore());
$item
->trashedFiles()
->each(fn ($files) => $files->restore());
});
}
}
@@ -1,11 +1,10 @@
<?php
namespace Domain\Folders\Resources;
use Domain\Sharing\Resources\ShareResource;
use Domain\Teams\Resources\TeamInvitationsCollection;
use Domain\Teams\Resources\TeamMembersCollection;
use Illuminate\Http\Resources\Json\JsonResource;
use Domain\Teams\Resources\TeamMembersCollection;
use Domain\Teams\Resources\TeamInvitationsCollection;
class FolderResource extends JsonResource
{
@@ -34,16 +33,16 @@ class FolderResource extends JsonResource
),*/
],
'relationships' => [
$this->mergeWhen($this->teamMembers, fn() => [
$this->mergeWhen($this->teamMembers, fn () => [
'members' => new TeamMembersCollection($this->teamMembers),
]),
$this->mergeWhen($this->teamInvitations, fn() => [
$this->mergeWhen($this->teamInvitations, fn () => [
'invitations' => new TeamInvitationsCollection($this->teamInvitations),
]),
$this->mergeWhen($this->shared, fn() => [
$this->mergeWhen($this->shared, fn () => [
'shared' => new ShareResource($this->shared),
]),
$this->mergeWhen($this->parent, fn() => [
$this->mergeWhen($this->parent, fn () => [
'parent' => [
'data' => [
'type' => 'folder',