mirror of
https://github.com/VueFileManager/vuefilemanager.git
synced 2026-04-05 18:23:48 +00:00
added folder resource
This commit is contained in:
@@ -48,7 +48,6 @@ class Folder extends Model
|
||||
protected $appends = [
|
||||
'items',
|
||||
'trashed_items',
|
||||
'type',
|
||||
];
|
||||
|
||||
protected $casts = [
|
||||
@@ -74,11 +73,6 @@ class Folder extends Model
|
||||
return FolderFactory::new();
|
||||
}
|
||||
|
||||
public function getTypeAttribute(): string
|
||||
{
|
||||
return 'folder';
|
||||
}
|
||||
|
||||
/**
|
||||
* Index folder
|
||||
*/
|
||||
@@ -122,17 +116,6 @@ class Folder extends Model
|
||||
return $folders + $files;
|
||||
}
|
||||
|
||||
/**
|
||||
* Format created at date reformat
|
||||
*/
|
||||
public function getCreatedAtAttribute(): string
|
||||
{
|
||||
return format_date(
|
||||
set_time_by_user_timezone($this->attributes['created_at']),
|
||||
__t('time')
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Format deleted at date reformat
|
||||
*/
|
||||
|
||||
16
src/Domain/Folders/Resources/FolderCollection.php
Normal file
16
src/Domain/Folders/Resources/FolderCollection.php
Normal file
@@ -0,0 +1,16 @@
|
||||
<?php
|
||||
namespace Domain\Folders\Resources;
|
||||
|
||||
use Illuminate\Http\Resources\Json\ResourceCollection;
|
||||
|
||||
class FolderCollection extends ResourceCollection
|
||||
{
|
||||
public $collects = FolderResource::class;
|
||||
|
||||
public function toArray($request): array
|
||||
{
|
||||
return [
|
||||
'data' => $this->collection,
|
||||
];
|
||||
}
|
||||
}
|
||||
57
src/Domain/Folders/Resources/FolderResource.php
Normal file
57
src/Domain/Folders/Resources/FolderResource.php
Normal file
@@ -0,0 +1,57 @@
|
||||
<?php
|
||||
|
||||
namespace Domain\Folders\Resources;
|
||||
|
||||
use Domain\Teams\Resources\TeamInvitationsCollection;
|
||||
use Domain\Teams\Resources\TeamMembersCollection;
|
||||
use Illuminate\Http\Resources\Json\JsonResource;
|
||||
|
||||
class FolderResource extends JsonResource
|
||||
{
|
||||
public function toArray($request): array
|
||||
{
|
||||
return [
|
||||
'data' => [
|
||||
'id' => $this->id,
|
||||
'type' => 'folder',
|
||||
'attributes' => [
|
||||
'name' => $this->name,
|
||||
'color' => $this->color,
|
||||
'emoji' => $this->emoji,
|
||||
'isTeamFolder' => $this->team_folder,
|
||||
'items' => $this->items,
|
||||
'trashed_items' => $this->trashed_items,
|
||||
'updated_at' => format_date(
|
||||
set_time_by_user_timezone($this->updated_at), __t('time')
|
||||
),
|
||||
'created_at' => format_date(
|
||||
set_time_by_user_timezone($this->created_at), __t('time')
|
||||
),
|
||||
],
|
||||
'relationships' => [
|
||||
$this->mergeWhen($this->teamMembers, fn () => [
|
||||
'members' => new TeamMembersCollection($this->teamMembers),
|
||||
]),
|
||||
$this->mergeWhen($this->teamInvitations, fn () => [
|
||||
'invitations' => new TeamInvitationsCollection($this->teamInvitations),
|
||||
]),
|
||||
$this->mergeWhen($this->shared, fn () => [
|
||||
'shared' => [
|
||||
'data' => [
|
||||
'id' => $this->shared->id,
|
||||
'type' => 'shared',
|
||||
'attributes' => [
|
||||
'expire_in' => $this->shared->expire_in,
|
||||
'link' => $this->shared->link,
|
||||
'permission' => $this->shared->permission,
|
||||
'protected' => $this->shared->protected,
|
||||
'token' => $this->shared->token,
|
||||
],
|
||||
],
|
||||
],
|
||||
]),
|
||||
],
|
||||
],
|
||||
];
|
||||
}
|
||||
}
|
||||
@@ -5,8 +5,8 @@ use Illuminate\Http\Response;
|
||||
use Domain\Settings\Models\Setting;
|
||||
use App\Http\Controllers\Controller;
|
||||
use Domain\Localization\Models\Language;
|
||||
use Domain\Localization\Resources\LanguageResource;
|
||||
use Domain\Localization\Resources\LanguageCollection;
|
||||
use Domain\Teams\Resources\LanguageResource;
|
||||
use Domain\Teams\Resources\LanguageCollection;
|
||||
use Domain\Localization\Requests\CreateLanguageRequest;
|
||||
use Domain\Localization\Requests\UpdateLanguageRequest;
|
||||
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
namespace Domain\Teams\Controllers;
|
||||
|
||||
use DB;
|
||||
use Domain\Folders\Resources\FolderCollection;
|
||||
use Domain\Teams\Requests\CreateTeamFolderRequest;
|
||||
use Domain\Teams\Requests\UpdateTeamFolderMembersRequest;
|
||||
use Illuminate\Contracts\Routing\ResponseFactory;
|
||||
@@ -50,6 +51,8 @@ class TeamFoldersController extends Controller
|
||||
->get();
|
||||
}
|
||||
|
||||
return new FolderCollection($folders);
|
||||
|
||||
// Collect folders and files to single array
|
||||
return [
|
||||
'content' => collect([$folders, $files])->collapse(),
|
||||
|
||||
23
src/Domain/Teams/Resources/TeamInvitationResource.php
Normal file
23
src/Domain/Teams/Resources/TeamInvitationResource.php
Normal file
@@ -0,0 +1,23 @@
|
||||
<?php
|
||||
|
||||
namespace Domain\Teams\Resources;
|
||||
|
||||
use Illuminate\Http\Resources\Json\JsonResource;
|
||||
|
||||
class TeamInvitationResource extends JsonResource
|
||||
{
|
||||
public function toArray($request): array
|
||||
{
|
||||
return [
|
||||
'data' => [
|
||||
'id' => $this->id,
|
||||
'type' => 'invitation',
|
||||
'attributes' => [
|
||||
'email' => $this->email,
|
||||
'status' => $this->status,
|
||||
'permission' => $this->permission,
|
||||
],
|
||||
],
|
||||
];
|
||||
}
|
||||
}
|
||||
16
src/Domain/Teams/Resources/TeamInvitationsCollection.php
Normal file
16
src/Domain/Teams/Resources/TeamInvitationsCollection.php
Normal file
@@ -0,0 +1,16 @@
|
||||
<?php
|
||||
namespace Domain\Teams\Resources;
|
||||
|
||||
use Illuminate\Http\Resources\Json\ResourceCollection;
|
||||
|
||||
class TeamInvitationsCollection extends ResourceCollection
|
||||
{
|
||||
public $collects = TeamInvitationResource::class;
|
||||
|
||||
public function toArray($request): array
|
||||
{
|
||||
return [
|
||||
'data' => $this->collection,
|
||||
];
|
||||
}
|
||||
}
|
||||
24
src/Domain/Teams/Resources/TeamMemberResource.php
Normal file
24
src/Domain/Teams/Resources/TeamMemberResource.php
Normal file
@@ -0,0 +1,24 @@
|
||||
<?php
|
||||
|
||||
namespace Domain\Teams\Resources;
|
||||
|
||||
use Illuminate\Http\Resources\Json\JsonResource;
|
||||
|
||||
class TeamMemberResource extends JsonResource
|
||||
{
|
||||
public function toArray($request): array
|
||||
{
|
||||
return [
|
||||
'data' => [
|
||||
'id' => $this->id,
|
||||
'type' => 'member',
|
||||
'attributes' => [
|
||||
'email' => $this->email,
|
||||
'name' => $this->settings->name,
|
||||
'avatar' => $this->settings->avatar,
|
||||
'permission' => $this->pivot->permission,
|
||||
],
|
||||
],
|
||||
];
|
||||
}
|
||||
}
|
||||
16
src/Domain/Teams/Resources/TeamMembersCollection.php
Normal file
16
src/Domain/Teams/Resources/TeamMembersCollection.php
Normal file
@@ -0,0 +1,16 @@
|
||||
<?php
|
||||
namespace Domain\Teams\Resources;
|
||||
|
||||
use Illuminate\Http\Resources\Json\ResourceCollection;
|
||||
|
||||
class TeamMembersCollection extends ResourceCollection
|
||||
{
|
||||
public $collects = TeamMemberResource::class;
|
||||
|
||||
public function toArray($request): array
|
||||
{
|
||||
return [
|
||||
'data' => $this->collection,
|
||||
];
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user