label(__('memberships.actions.validate')) ->icon(Heroicon::OutlinedCheckCircle) ->color('success') ->visible(fn (Membership $record) => $record->status === 'pending') ->form([ DatePicker::make('start_date') ->label(Membership::getAttributeLabel('start_date')) ->required(), DatePicker::make('end_date') ->label(Membership::getAttributeLabel('end_date')) ->required(), ]) ->fillForm(fn (Membership $record): array => [ 'start_date' => $record->start_date, 'end_date' => $record->end_date, ]) ->action(function (Membership $record, array $data): void { $record->update([ 'status' => 'active', 'start_date' => $data['start_date'], 'end_date' => $data['end_date'], ]); $record->member->notify(new MembershipValidatedNotification($record->fresh(['member', 'package']))); }), DeleteAction::make(), ]; } /** * @property Membership $record */ public function getTitle(): string|Htmlable { return Membership::getAttributeLabel('membership').' #'.$this->record->id; } }