<?php

namespace Easymailing\App\Core\Provider\Woocommerce\Widgets;

use Easymailing\App\Core\Provider\Woocommerce\Service\MetadataHelper;
use Easymailing\App\Core\Provider\Woocommerce\Service\SynchronizationViewHandler;

class CustomerWidgets
{

	private $synchronizationViewHandler;

	public function __construct(SynchronizationViewHandler $synchronizationViewHandler)
	{
		$this->synchronizationViewHandler = $synchronizationViewHandler;
	}

	public function addWidgets($user): void
	{
		// 1) Leer el JSON con finalidades/campos que se guardó para este usuario
		$storedJson = get_user_meta($user->ID, MetadataHelper::getTreatmentPurposes(), true);
		$decoded    = json_decode($storedJson, true);

		// 2) Generar HTML con checkboxes disabled
		$fieldsHtml = $this->generateDisabledCheckboxesHtml($decoded);

		// 3) Mostrar la sección de "consent data" (encima del estado de sincronización)
		echo '<div style="margin-bottom:1em;">';
		echo '<h3>'. __('Finalidades Easymailing:', 'easymailing') .'</h3>';
		echo $fieldsHtml;
		echo '</div>';

		// 4) Mostrar el contenido de sincronización
		$status  = get_user_meta($user->ID, MetadataHelper::getSynchronizationStatus(), true);
		$content = $this->synchronizationViewHandler->getWidgetContent($status, $user->ID, 'customer');
		echo $content;
	}


	public function addColumn($columns): array
	{
		$columns[MetadataHelper::getSynchronizationStatus()] = __('Sincronización Easymailing', 'easymailing');
		return $columns;
	}


	public function showCustomCustomerColumnData($content, $columnName, $userId): string
	{
		if (MetadataHelper::getSynchronizationStatus() === $columnName) {
			$status  = get_user_meta($userId, MetadataHelper::getSynchronizationStatus(), true);
			$content = $this->synchronizationViewHandler->getTableContent($status, $userId, "customer");
		}
		return $content;
	}


	private function generateDisabledCheckboxesHtml($decoded): string
	{
		// Si no hay nada, mostramos un mensaje genérico
		if (empty($decoded) || !is_array($decoded)) {
			return '<p>'. __('No se han guardado finalidades ni custom fields.', 'easymailing') .'</p>';
		}

		$html = '';
		foreach ($decoded as $item) {
			// Cada $item es algo como:
			//   [ 'type' => 'treatment_purpose'|'custom_field', 'id' => 'xxx', 'title' => '...', 'value' => bool ]
			$checked = $item['value'] ? 'checked' : '';
			$title   = isset($item['title']) ? $item['title'] : $item['id']; // fallback

			// Generamos el checkbox
			$html .= '<label style="display: block; margin-bottom:5px;">';
			$html .= '<input type="checkbox" disabled ' . $checked . '>';
			$html .= ' ' . esc_html($title);
			$html .= '</label>';
		}

		return $html;
	}
}
