<?php
/**
 * Regiones y comunas de Chile (códigos WooCommerce CL states).
 */
if ( ! defined( 'ABSPATH' ) ) {
	exit;
}

if ( ! function_exists( 'amispet_dc_chile_regions' ) ) {
function amispet_dc_chile_regions() {
	if ( function_exists( 'WC' ) && WC()->countries ) {
		$states = WC()->countries->get_states( 'CL' );
		if ( is_array( $states ) && $states ) {
			return $states;
		}
	}
	return array(
		'CL-AI' => 'Aysén',
		'CL-AN' => 'Antofagasta',
		'CL-AP' => 'Arica y Parinacota',
		'CL-AR' => 'La Araucanía',
		'CL-AT' => 'Atacama',
		'CL-BI' => 'Biobío',
		'CL-CO' => 'Coquimbo',
		'CL-LI' => "Libertador General Bernardo O'Higgins",
		'CL-LL' => 'Los Lagos',
		'CL-LR' => 'Los Ríos',
		'CL-MA' => 'Magallanes',
		'CL-ML' => 'Maule',
		'CL-NB' => 'Ñuble',
		'CL-RM' => 'Región Metropolitana',
		'CL-TA' => 'Tarapacá',
		'CL-VS' => 'Valparaíso',
	);
}
}

/**
 * @return array<string, array<int, string>> region_code => list of comunas
 */
if ( ! function_exists( 'amispet_dc_chile_comunas_map' ) ) {
function amispet_dc_chile_comunas_map() {
	return array(
		'CL-RM' => array(
			'Santiago', 'Cerrillos', 'Cerro Navia', 'Conchalí', 'El Bosque', 'Estación Central',
			'Huechuraba', 'Independencia', 'La Cisterna', 'La Florida', 'La Granja', 'La Pintana',
			'La Reina', 'Las Condes', 'Lo Barnechea', 'Lo Espejo', 'Lo Prado', 'Macul', 'Maipú',
			'Ñuñoa', 'Pedro Aguirre Cerda', 'Peñalolén', 'Providencia', 'Pudahuel', 'Quilicura',
			'Quinta Normal', 'Recoleta', 'Renca', 'San Joaquín', 'San Miguel', 'San Ramón',
			'Vitacura', 'Puente Alto', 'Pirque', 'San José de Maipo', 'Colina', 'Lampa', 'Tiltil',
			'San Bernardo', 'Buin', 'Calera de Tango', 'Paine', 'Melipilla', 'Alhué', 'Curacaví',
			'María Pinto', 'San Pedro', 'Talagante', 'El Monte', 'Isla de Maipo', 'Padre Hurtado', 'Peñaflor',
		),
		'CL-VS' => array(
			'Valparaíso', 'Viña del Mar', 'Concón', 'Quilpué', 'Villa Alemana', 'Quillota',
			'La Calera', 'Hijuelas', 'La Cruz', 'Nogales', 'San Antonio', 'Cartagena', 'El Tabo',
			'El Quisco', 'Algarrobo', 'Santo Domingo', 'Casablanca', 'Quintero', 'Puchuncaví',
			'Juan Fernández', 'Isla de Pascua', 'Los Andes', 'Calle Larga', 'Rinconada', 'San Esteban',
			'San Felipe', 'Catemu', 'Llaillay', 'Panquehue', 'Putaendo', 'Santa María', 'Petorca',
			'Cabildo', 'La Ligua', 'Papudo', 'Zapallar', 'Limache', 'Olmué',
		),
		'CL-BI' => array(
			'Concepción', 'Talcahuano', 'Hualpén', 'Chiguayante', 'San Pedro de la Paz', 'Penco',
			'Tomé', 'Lota', 'Coronel', 'Hualqui', 'Florida', 'Santa Juana', 'Los Ángeles', 'Cabrero',
			'Yumbel', 'Laja', 'Nacimiento', 'Negrete', 'Mulchén', 'Quilaco', 'Santa Bárbara',
			'Quilleco', 'Antuco', 'Tucapel', 'Alto Biobío', 'Arauco', 'Cañete', 'Contulmo',
			'Curanilahue', 'Lebu', 'Los Álamos', 'Tirúa',
		),
		'CL-AR' => array(
			'Temuco', 'Padre Las Casas', 'Villarrica', 'Pucón', 'Angol', 'Victoria', 'Lautaro',
			'Nueva Imperial', 'Carahue', 'Pitrufquén', 'Gorbea', 'Loncoche', 'Toltén', 'Teodoro Schmidt',
			'Saavedra', 'Cholchol', 'Cunco', 'Curarrehue', 'Freire', 'Galvarino', 'Melipeuco',
			'Perquenco', 'Vilcún', 'Collipulli', 'Ercilla', 'Lonquimay', 'Los Sauces', 'Lumaco',
			'Purén', 'Renaico', 'Traiguén', 'Curacautín',
		),
		'CL-LL' => array(
			'Puerto Montt', 'Puerto Varas', 'Osorno', 'Castro', 'Ancud', 'Calbuco', 'Maullín',
			'Los Muermos', 'Puerto Octay', 'Purranque', 'Puyehue', 'Río Negro', 'San Juan de la Costa',
			'San Pablo', 'Chaitén', 'Futaleufú', 'Hualaihué', 'Palena', 'Chonchi', 'Curaco de Vélez',
			'Dalcahue', 'Puqueldón', 'Queilén', 'Quellón', 'Quemchi', 'Quinchao', 'Cochamó', 'Fresia',
			'Frutillar', 'Llanquihue',
		),
		'CL-ML' => array(
			'Talca', 'Curicó', 'Linares', 'Constitución', 'Cauquenes', 'Molina', 'San Javier',
			'Parral', 'San Clemente', 'Río Claro', 'Pelarco', 'Pencahue', 'Maule', 'Empedrado',
			'San Rafael', 'Hualañé', 'Licantén', 'Rauco', 'Romeral', 'Sagrada Familia', 'Teno',
			'Vichuquén', 'Colbún', 'Longaví', 'Retiro', 'Villa Alegre', 'Yerbas Buenas',
			'Chanco', 'Pelluhue',
		),
		'CL-CO' => array(
			'La Serena', 'Coquimbo', 'Ovalle', 'Illapel', 'Vicuña', 'Andacollo', 'La Higuera',
			'Paihuano', 'Combarbalá', 'Monte Patria', 'Punitaqui', 'Río Hurtado', 'Canela',
			'Los Vilos', 'Salamanca',
		),
		'CL-AN' => array(
			'Antofagasta', 'Calama', 'Tocopilla', 'Mejillones', 'Sierra Gorda', 'Taltal',
			'Ollagüe', 'San Pedro de Atacama', 'María Elena',
		),
		'CL-AT' => array(
			'Copiapó', 'Vallenar', 'Caldera', 'Tierra Amarilla', 'Chañaral', 'Diego de Almagro',
			'Alto del Carmen', 'Freirina', 'Huasco',
		),
		'CL-TA' => array( 'Iquique', 'Alto Hospicio', 'Pozo Almonte', 'Camiña', 'Colchane', 'Huara', 'Pica' ),
		'CL-AP' => array( 'Arica', 'Camarones', 'Putre', 'General Lagos' ),
		'CL-LI' => array(
			'Rancagua', 'Machalí', 'San Fernando', 'Rengo', 'Pichilemu', 'Codegua', 'Coinco',
			'Coltauco', 'Doñihue', 'Graneros', 'Las Cabras', 'Malloa', 'Mostazal', 'Olivar',
			'Peumo', 'Pichidegua', 'Quinta de Tilcoco', 'Requínoa', 'San Vicente', 'Chépica',
			'Chimbarongo', 'Lolol', 'Nancagua', 'Palmilla', 'Peralillo', 'Placilla', 'Pumanque',
			'Santa Cruz', 'La Estrella', 'Litueche', 'Marchigüe', 'Navidad', 'Paredones',
		),
		'CL-LR' => array(
			'Valdivia', 'La Unión', 'Río Bueno', 'Panguipulli', 'Los Lagos', 'Máfil', 'Mariquina',
			'Paillaco', 'Corral', 'Lanco', 'Futrono', 'Lago Ranco',
		),
		'CL-AI' => array(
			'Coyhaique', 'Aysén', 'Chile Chico', 'Cisnes', 'Cochrane', 'Guaitecas',
			'Lago Verde', "O'Higgins", 'Río Ibáñez', 'Tortel',
		),
		'CL-MA' => array(
			'Punta Arenas', 'Puerto Natales', 'Porvenir', 'Cabo de Hornos', 'Laguna Blanca',
			'Río Verde', 'San Gregorio', 'Timaukel', 'Torres del Paine', 'Antártica',
		),
		'CL-NB' => array(
			'Chillán', 'Chillán Viejo', 'Bulnes', 'Cobquecura', 'Coelemu', 'Coihueco', 'El Carmen',
			'Ninhue', 'Ñiquén', 'Pemuco', 'Pinto', 'Portezuelo', 'Quillón', 'Quirihue', 'Ránquil',
			'San Carlos', 'San Fabián', 'San Ignacio', 'San Nicolás', 'Treguaco', 'Yungay',
		),
	);
}
}

if ( ! function_exists( 'amispet_dc_comunas_for_region' ) ) {
function amispet_dc_comunas_for_region( $region_code ) {
	$map = amispet_dc_chile_comunas_map();
	return isset( $map[ $region_code ] ) ? $map[ $region_code ] : array();
}
}
