<?php
/**
 * Obtención de información mensual desde la API de Compibot.
 *
 * Este archivo contiene la función que permite obtener el estado del CMS
 * para un mes y año específicos desde la API de Compibot.
 *
 * @package Compibot
 */

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly.
}

/**
 * Obtiene la información mensual del estado del CMS desde la API de Compibot.
 *
 * Esta función realiza una solicitud a la API de Compibot para obtener datos sobre el estado del CMS
 * en un mes y año específicos.
 *
 * @param string $token Token de autenticación del usuario.
 * @param string $month Nombre del mes en español (ejemplo: "enero", "febrero").
 * @param int    $year  Año en formato de cuatro dígitos (ejemplo: 2024).
 * @return array Datos de la respuesta de la API o un mensaje de error en caso de fallo.
 */
function compibot_get_monthly_info( $token, $month, $year ) {

	$meses = array(
		'enero'      => 1,
		'febrero'    => 2,
		'marzo'      => 3,
		'abril'      => 4,
		'mayo'       => 5,
		'junio'      => 6,
		'julio'      => 7,
		'agosto'     => 8,
		'septiembre' => 9,
		'octubre'    => 10,
		'noviembre'  => 11,
		'diciembre'  => 12,
	);

	// Obtenemos el intervalo en minutos o usar un valor por defecto.
	// TODO: Cambiar el valor por defecto al mes actual.
	$mes = isset( $meses[ $month ] ) ? $meses[ $month ] : 1;

	$url = 'https://panel.compibot.com/api/cms-status';

	// TODO: Cambiar el num_pagina por el valor que se reciba al invocar la función.
	$args = array(
		'headers' => array(
			'Authorization' => 'Bearer ' . $token,
			'Content-Type'  => 'application/json',
		),
		'body'    => wp_json_encode(
			array(
				'mes'  => $mes,
				'year' => $year,
			)
		),
		'method'  => 'POST',
	);

	// Realizamos la solicitud GET.
	$response = wp_remote_post( $url, $args );

	// Verificamos si hubo algún error en la solicitud.
	if ( is_wp_error( $response ) ) {
		return array( 'error' => 'Error al obtener los datos de la conversación.' );
	}

	// Obtenemos el cuerpo de la respuesta.
	$body = wp_remote_retrieve_body( $response );

	// Convertir la respuesta JSON a un array asociativo.
	$data = json_decode( $body, true );

	// Verificar si la conversación fue exitosa.
	// Verificar si la conversión fue exitosa.
	if ( json_last_error() !== JSON_ERROR_NONE ) {
		return array( 'error' => 'Error al decodificar los datos JSON.' );
	}

	return $data;
}
