rules->serializeWrites(fn()=>$this->lock->run(null,fn()=>parent::save($input,$id)));} protected function validate(array $input,array $current):array{ $d=array_replace(['price_list_id'=>null,'resource_id'=>null,'sport_id'=>null,'amount'=>null,'is_active'=>true],$current,$input); foreach(['price_list_id'=>[$this->lists,false],'resource_id'=>[$this->resources,true],'sport_id'=>[$this->sports,true]]as $f=>[$repo,$nullable]){$d[$f]=S\CatalogValidator::integer($d[$f],$f,1,PHP_INT_MAX,$nullable);if($d[$f]&&!$repo->find($d[$f]))S\CatalogValidator::invalid($f,__('The selected pricing reference does not exist.','abece-booking'));} $d['rule_type']='public_hourly_rate';$d['amount']=S\CatalogValidator::integer($d['amount'],'amount',0,\ABeCe\Booking\Support\Money::MAX);$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;} }