<?php
/**
 * Clase para manejar el número de conversaciones en CompiBot.
 *
 * Esta clase se encarga de contar las conversaciones no leídas
 * y actualizar el menú de administración de WordPress.
 *
 * @package CompiBot
 */

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

/**
 * Clase `CompibotNumberConversations`
 *
 * Clase encargada de contar las conversaciones no leídas y actualizar el menú de administración de WordPress.
 */
class CompibotNumberConversations {

	/**
	 * Conversaciones.
	 *
	 * @var array $conversations Lista de conversaciones.
	 */
	private $conversations;

	/**
	 * Constructor de la clase.
	 *
	 * @param array $conversations Lista de conversaciones.
	 */
	public function __construct( $conversations ) {
		$this->conversations = $conversations;
	}

	/**
	 * Método para obtener el número de conversaciones que no se han leído.
	 *
	 * @return int Número de conversaciones no leidas
	 */
	public function get_unread_conversations_count() {
		$unread_count = 0;

		foreach ( $this->conversations as $conversation_list ) {
			foreach ( $conversation_list as $conversation ) {
				if ( 0 === empty( $conversation['viewed'] ) || $conversation['viewed'] ) {
					++$unread_count;
				}
			}
		}

		return $unread_count;
	}

	/**
	 * Método para reconstruir el menú de administración con el número de conversaciones no leídas.
	 */
	public function rebuild_admin_menu() {
		$unread_count = $this->get_unread_conversations_count();

		// Eliminar el menú existente.
		remove_menu_page( 'compibot' );

		// Reconstruir el menú con el contador actualizado.
		$menu_title = 'Compibot';

		if ( ! empty( $unread_count ) ) {
			$menu_title .= ' <span class="update-plugins count-' . esc_attr( $unread_count ) . '"><span class="plugin-count">' . esc_html( $unread_count ) . '</span></span>';
		}

		add_menu_page(
			'Compibot',
			$menu_title,
			'manage_options',
			'compibot',
			array( new CompibotAdminPage(), 'display_page' ),
			plugin_dir_url( __FILE__ ) . '../assets/favicon.ico',
			6
		);

		add_submenu_page(
			'compibot',
			'Login Compibot',
			'Login Compibot',
			'manage_options',
			'compibot_login',
			'compibot_login_page'
		);
	}
}
