<?php
defined('BASEPATH') OR exit('No direct script access allowed');

class Notificaciones extends CI_Controller {

	public function __construct() {
		parent::__construct();
		if (!$this->Usuario->try()) {
			redirect('login');
		}
	}

	public function index() {
		$parametros = '?';
		$filtros['id_usuario'] = $_SESSION['usuario']['id'];

		// Capturamos los filtros desde GET
		$filtros['tipo']  = $this->input->get('tipo') ?? null;
		
		$leidoGet = $this->input->get('leido');

		// Si no se envió el parámetro (primera carga), mostrar solo NO leídas
		if ($leidoGet === null) {
			$filtros['leido'] = 0;
		} else {
			// Si viene vacío '' (usuario eligió "Todos"), no filtramos
			if ($leidoGet === '') {
				$filtros['leido'] = ''; // importante
			} else {
				$filtros['leido'] = $leidoGet; // puede ser '0' o '1'
			}
		}

		// Si no viene definido ningún filtro de tipo o leido, asumimos solo no leídas
		if ($filtros['tipo'] === null && $filtros['leido'] === null) {
			$filtros['leido'] = 0; // Mostrar solo las no leídas
		}

		// Construimos los parámetros para mantener filtros en la paginación
		if ($filtros['tipo'] !== null && $filtros['tipo'] !== '') {
			$parametros .= 'tipo='.urlencode($filtros['tipo']).'&';
		}
		if ($filtros['leido'] !== null && $filtros['leido'] !== '') {
			$parametros .= 'leido='.urlencode($filtros['leido']).'&';
		}

		$cantidad = 200;
		$pagina = $this->input->get('pagina') ?? 1;
		$offset = ($pagina - 1) * $cantidad;

		$this->load->model('Notificacion_model', 'Notificacion', true);
		$data = $this->Notificacion->listado($filtros['id_usuario'], [$offset, $cantidad], $filtros);

		$data['paginacion'] = paginacion(['url' => base_url().'notificaciones/index', 'parametros' => $parametros, 'total' => $data['total'], 'pagina' => $pagina, 'cantidad' => $cantidad]);

		// Enviamos los filtros a la vista para mantener los valores seleccionados
		$data['filtros'] = $filtros;
		$data['tipos'] = $this->Notificacion->getTipos($filtros['id_usuario']);

		$data['title'] = 'Notificaciones';
		$data['content'] = $this->load->view('notificaciones/index', $data , true);
		$this->load->view('default', $data);
	}

}