koel/app/Values/PlaylistCollaborator.php

35 lines
789 B
PHP
Raw Normal View History

2024-01-24 22:39:47 +00:00
<?php
namespace App\Values;
use App\Models\User;
use Illuminate\Contracts\Support\Arrayable;
final class PlaylistCollaborator implements Arrayable
{
private function __construct(public int $id, public string $name, public string $avatar)
{
}
public static function make(int $id, string $name, string $avatar): self
{
return new self($id, $name, $avatar);
}
public static function fromUser(User $user): self
{
2024-04-04 22:20:42 +00:00
return new self($user->id, $user->name, $user->avatar);
2024-01-24 22:39:47 +00:00
}
/** @return array<mixed> */
public function toArray(): array
{
return [
'type' => 'playlist_collaborators',
'id' => $this->id,
'name' => $this->name,
'avatar' => $this->avatar,
];
}
}