<?php declare( strict_types=1 ); namespace Automattic\WooCommerce\GoogleListingsAndAds\Shipping\GoogleAdapter; use Automattic\WooCommerce\GoogleListingsAndAds\Shipping\LocationRate; use Google\Service\ShoppingContent\Headers; use Google\Service\ShoppingContent\LocationIdSet; use Google\Service\ShoppingContent\Row; use Google\Service\ShoppingContent\Table; defined( 'ABSPATH' ) || exit; /** * Class StatesRateGroupAdapter * * @package Automattic\WooCommerce\GoogleListingsAndAds\Shipping * * @since 2.1.0 */ class StatesRateGroupAdapter extends AbstractRateGroupAdapter { /** * Map the location rates to the class properties. * * @param LocationRate[] $location_rates * @param string $currency * * @return void */ protected function map_location_rates( array $location_rates, string $currency ): void { $location_id_sets = []; $rows = []; foreach ( $location_rates as $location_rate ) { $location_id = $location_rate->get_location()->get_google_id(); $location_id_sets[ $location_id ] = new LocationIdSet( [ 'locationIds' => [ $location_id ] ] ); $rows[ $location_id ] = new Row( [ 'cells' => [ $this->create_value_object( $location_rate->get_shipping_rate()->get_rate(), $currency ) ] ] ); } $table = new Table( [ 'rowHeaders' => new Headers( [ 'locations' => array_values( $location_id_sets ) ] ), 'rows' => array_values( $rows ), ] ); $this->setMainTable( $table ); } }