47 lines
1.3 KiB
PHP
47 lines
1.3 KiB
PHP
<?php
|
|
|
|
namespace App\Member\Data;
|
|
|
|
use Spatie\LaravelData\Data;
|
|
use App\Member\Membership;
|
|
use App\Member\Member;
|
|
use App\Lib\Data\DateData;
|
|
|
|
class MembershipData extends Data
|
|
{
|
|
|
|
public function __construct(
|
|
public ?ActivityData $activity = null,
|
|
public ?SubactivityData $subactivity = null,
|
|
public ?GroupData $group = null,
|
|
public ?DateData $promisedAt = null,
|
|
public ?DateData $from = null,
|
|
public bool $isActive = false,
|
|
public array $links = [],
|
|
) {}
|
|
|
|
public static function fromModel(Membership $membership): static
|
|
{
|
|
return static::factory()->withoutMagicalCreation()->from([
|
|
'activity' => $membership->activity,
|
|
'subactivity' => $membership?->subactivity,
|
|
'isActive' => $membership->isActive(),
|
|
'from' => $membership->from,
|
|
'group' => $membership->group,
|
|
'promisedAt' => $membership->promised_at,
|
|
'links' => [
|
|
'update' => route('membership.update', $membership),
|
|
'destroy' => route('membership.destroy', $membership),
|
|
]
|
|
]);
|
|
}
|
|
|
|
/**
|
|
* @return array<string, mixed>
|
|
*/
|
|
public static function memberMeta(Member $member): MembershipMeta
|
|
{
|
|
return MembershipMeta::fromMember($member);
|
|
}
|
|
}
|