wpdb;$rows=$wpdb->get_results($wpdb->prepare('SELECT * FROM %i ORDER BY priority DESC,id',$this->table),ARRAY_A);$this->checkRead();return array_map([$this,'serialize'],$rows);} public function rules(int $id): array { $wpdb = $this->wpdb; $rows=$wpdb->get_results($wpdb->prepare('SELECT * FROM %i WHERE policy_id=%d ORDER BY min_minutes_before DESC',\ABeCe\Booking\Infrastructure\Database\Tables::name( $wpdb, 'cancellation_rules' ),$id),ARRAY_A);$this->checkRead(); foreach($rows as &$r)foreach(['id','policy_id','min_minutes_before','fee_amount','priority'] as $key)$r[$key]=null===$r[$key]?null:(int)$r[$key];unset($r);return $rows; } public function replaceRules(int $id,array $rules): void { if(false===$this->wpdb->delete(\ABeCe\Booking\Infrastructure\Database\Tables::name( $this->wpdb, 'cancellation_rules' ),['policy_id'=>$id]))$this->storageError(); $stamp=current_time('mysql',true);foreach($rules as $r)if(false===$this->wpdb->insert(\ABeCe\Booking\Infrastructure\Database\Tables::name( $this->wpdb, 'cancellation_rules' ),$r+['policy_id'=>$id,'created_at'=>$stamp,'updated_at'=>$stamp]))$this->storageError(); } private function storageError(): never {throw new \ABeCe\Booking\Domain\CatalogException('abece_booking_database_error',__('The item could not be saved. Please try again.','abece-booking'),503);} }