diff --git a/src/Domain/Folders/Models/Folder.php b/src/Domain/Folders/Models/Folder.php index 7893091c..bde45d04 100644 --- a/src/Domain/Folders/Models/Folder.php +++ b/src/Domain/Folders/Models/Folder.php @@ -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 */ diff --git a/src/Domain/Folders/Resources/FolderCollection.php b/src/Domain/Folders/Resources/FolderCollection.php new file mode 100644 index 00000000..5b00fcf3 --- /dev/null +++ b/src/Domain/Folders/Resources/FolderCollection.php @@ -0,0 +1,16 @@ + $this->collection, + ]; + } +} diff --git a/src/Domain/Folders/Resources/FolderResource.php b/src/Domain/Folders/Resources/FolderResource.php new file mode 100644 index 00000000..e01b9bd5 --- /dev/null +++ b/src/Domain/Folders/Resources/FolderResource.php @@ -0,0 +1,57 @@ + [ + '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, + ], + ], + ], + ]), + ], + ], + ]; + } +} diff --git a/src/Domain/Localization/Controllers/LanguageController.php b/src/Domain/Localization/Controllers/LanguageController.php index 713a43be..3e2218d3 100644 --- a/src/Domain/Localization/Controllers/LanguageController.php +++ b/src/Domain/Localization/Controllers/LanguageController.php @@ -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; diff --git a/src/Domain/Teams/Controllers/TeamFoldersController.php b/src/Domain/Teams/Controllers/TeamFoldersController.php index d4054854..78eefff9 100644 --- a/src/Domain/Teams/Controllers/TeamFoldersController.php +++ b/src/Domain/Teams/Controllers/TeamFoldersController.php @@ -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(), diff --git a/src/Domain/Teams/Resources/TeamInvitationResource.php b/src/Domain/Teams/Resources/TeamInvitationResource.php new file mode 100644 index 00000000..902547e1 --- /dev/null +++ b/src/Domain/Teams/Resources/TeamInvitationResource.php @@ -0,0 +1,23 @@ + [ + 'id' => $this->id, + 'type' => 'invitation', + 'attributes' => [ + 'email' => $this->email, + 'status' => $this->status, + 'permission' => $this->permission, + ], + ], + ]; + } +} diff --git a/src/Domain/Teams/Resources/TeamInvitationsCollection.php b/src/Domain/Teams/Resources/TeamInvitationsCollection.php new file mode 100644 index 00000000..102f15d2 --- /dev/null +++ b/src/Domain/Teams/Resources/TeamInvitationsCollection.php @@ -0,0 +1,16 @@ + $this->collection, + ]; + } +} diff --git a/src/Domain/Teams/Resources/TeamMemberResource.php b/src/Domain/Teams/Resources/TeamMemberResource.php new file mode 100644 index 00000000..5222a170 --- /dev/null +++ b/src/Domain/Teams/Resources/TeamMemberResource.php @@ -0,0 +1,24 @@ + [ + 'id' => $this->id, + 'type' => 'member', + 'attributes' => [ + 'email' => $this->email, + 'name' => $this->settings->name, + 'avatar' => $this->settings->avatar, + 'permission' => $this->pivot->permission, + ], + ], + ]; + } +} diff --git a/src/Domain/Teams/Resources/TeamMembersCollection.php b/src/Domain/Teams/Resources/TeamMembersCollection.php new file mode 100644 index 00000000..c9a08084 --- /dev/null +++ b/src/Domain/Teams/Resources/TeamMembersCollection.php @@ -0,0 +1,16 @@ + $this->collection, + ]; + } +}