rules->serializeWrites(fn()=>$this->lock->run(null,fn()=>parent::save($input,$id)));} protected function validate(array $input,array $current):array{$d=array_replace(['name'=>'','currency'=>'CZK','is_active'=>true],$current,$input);$d['name']=S\MembershipValidator::text($d['name'],'name',150);$d['currency']=strtoupper(S\MembershipValidator::text($d['currency'],'currency',3));if(!preg_match('/^[A-Z]{3}$/D',$d['currency']))S\CatalogValidator::invalid('currency',__('A three-letter currency code is required.','abece-booking'));$d['is_active']=S\CatalogValidator::boolean($d['is_active'],'is_active');return $d;} protected function persist(array $data,?int $id):array{$result=parent::persist($data,$id);BasicPriceConfiguration::validate($this->rules->configuration());return $result;} }