withoutMagicalCreation()->from([ 'id' => $membership->id, 'activity' => $membership->activity, 'subactivity' => $membership->subactivity, 'is_active' => $membership->isActive(), 'from' => $membership->from, 'group' => $membership->group, 'promised_at' => $membership->promised_at, ]); } /** * @return array */ public function with(): array { return [ // 'human_date' => $this->from->format('d.m.Y'), // 'promised_at_human' => $this->promisedAt?->format('d.m.Y'), // 'promised_at' => $this->promisedAt?->format('Y-m-d'), 'links' => [ 'update' => route('membership.update', ['membership' => $this->id]), 'destroy' => route('membership.destroy', ['membership' => $this->id]), ] ]; } /** * @return array */ public static function memberMeta(Member $member): array { $activities = Activity::with('subactivities')->get(); return [ 'links' => [ 'store' => route('member.membership.store', ['member' => $member]), ], 'groups' => NestedGroup::cacheForSelect(), 'activities' => $activities->map(fn($activity) => ['id' => $activity->id, 'name' => $activity->name]), 'subactivities' => $activities->mapWithKeys(fn($activity) => [$activity->id => $activity->subactivities->map(fn($subactivity) => ['id' => $subactivity->id, 'name' => $subactivity->name, 'is_age_group' => $subactivity->is_age_group])]), 'default' => [ 'group_id' => $member->group_id, 'activity_id' => null, 'subactivity_id' => null, 'promised_at' => null, ], ]; } }