adrema/app/Member/Data/MembershipData.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);
}
}