has('memberships')&&(new SettingsRepository())->membership()['memberships_enabled'];} public static function requireEnabled(): void {if(!self::enabled())throw new CatalogException('abece_booking_membership_disabled',__('Club membership is disabled.','abece-booking'),403);} public function __construct(private readonly SettingsRepository $settings){} public function get(): array {return $this->settings->membership()+['has_member_data'=>$this->settings->membershipDataExists()];} public function save(array $input): array { BookingValidator::fields($input,['memberships_enabled','confirm_disable','self_link_enabled','self_link_method']);$enabled=CatalogValidator::boolean($input['memberships_enabled']??self::enabled(),'memberships_enabled');$confirm=CatalogValidator::boolean($input['confirm_disable']??false,'confirm_disable'); if(self::enabled()&&!$enabled&&$this->settings->membershipDataExists()&&!$confirm)throw new CatalogException('abece_booking_membership_confirmation_required',__('Member data will be retained, but member rules, discounts and restrictions will no longer apply.','abece-booking'),409,'confirm_disable'); $values=['memberships_enabled'=>$enabled];if(array_key_exists('self_link_enabled',$input))$values['self_link_enabled']=CatalogValidator::boolean($input['self_link_enabled'],'self_link_enabled');if(array_key_exists('self_link_method',$input))$values['self_link_method']=CatalogValidator::choice($input['self_link_method'],'self_link_method',['email_dob','member_number_dob','email_or_member_number_dob']);$this->settings->save($values);return $this->get(); } }