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

class Usuarios extends CI_Controller {

	public function __construct() {
		parent::__construct();

		if (!$this->Usuario->try()) {
			redirect('login');
		}

		$this->load->model('Cambio_model', 'Cambio', true);
	}

	/**
	 * Setea token para links a PrestaShop
	 */
	public function save_token() {
		//Se revisa si se está creando o editando una venta
		if (!empty($this->input->post('token'))) {
			$_SESSION['token'] =  $this->input->post('token');
			$_SESSION['productToken'] =  $this->input->post('productToken');

			//crear cookie
			$cookie = array(
				'name' => 'token',
				'value' => $this->input->post('token'),
				'expire' => '36000000',
			);
			$this->input->set_cookie($cookie);
			//crear cookie productos
			$cookie = array(
				'name' => 'productToken',
				'value' => $this->input->post('productToken'),
				'expire' => '36000000',
			);
			$this->input->set_cookie($cookie);
		}
	}

	public function log() {
		$parametros = '?';
		$data['id_usuario'] = $filtros['id_usuario'] = $this->input->get('id_usuario') ?? 'todos';
		$parametros .= 'id_usuario='.$data['id_usuario'];

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

		$data = $this->Cambio->log($data['id_usuario'], [$offset, $cantidad]);

		$data['usuarios'] = $this->Usuario->lista();
		$this->load->model('almacen_model', 'Almacen', true);
		$data['almacenes'] = $this->Almacen->lista();

		$data['entidades'] = [
			1 => 'Producto',
			2 => 'Venta'
		];

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

		$data['productos'] = $this->Producto->lista();
		$data['estados_ventas'] = $this->Venta->get_estados();
		$data['transportistas'] = $this->Venta->get_transportistas();

		$this->load->model('proveedor_model', 'Proveedor', true);
		$data['proveedores'] = $this->Proveedor->lista();
		$this->load->model('categoria_model', 'Categoria', true);
		$data['categorias'] = $this->Categoria->list();

		
		$data['title'] = 'Cambios';
		$data['content'] = $this->load->view('usuarios/cambios', $data , true);
		$this->load->view('default', $data);
	}

	public function guardar_pv_canal() {	
		$id_canal = $this->input->post('id_canal');
		$id_pv = $this->input->post('id_punto_venta');
		if (!isset($id_canal)) {
			echo json_encode(['success' => false, 'message' => 'Canal no válido']);
			return;
		}
	
		$_SESSION['usuario']['id_canal'] = $id_canal;
		if (isset($_SESSION['req_canal'])) {
			unset($_SESSION['req_canal']);
		}
		if (isset($_SESSION['req_pv'])) {
			unset($_SESSION['req_pv']);
		}

		if (!empty($id_pv)) {
			$_SESSION['usuario']['id_punto_venta'] = $id_pv;
		}
		else {
			$_SESSION['usuario']['id_punto_venta'] = 0;
		}

		// Actualizar la cookie
		if (isset($_SESSION['usuario']['username'])) {
			$cookie_data = [
				'username' => $_SESSION['usuario']['username'],
				'id_canal' => $_SESSION['usuario']['id_canal'],
				'id_punto_venta' => $_SESSION['usuario']['id_punto_venta']
			];
			$cookie = array(
				'name' => 'VentasDMG',
				'value' => base64_encode(json_encode($cookie_data)),
				'expire' => 36000000
			);
			$this->input->set_cookie($cookie);
		}

		echo json_encode(['success' => true]);
	}

	/**
	 * Muestra Log de ingresos, permite filtrar por usuario y fecha
	 */
	public function ingresos() {
		$parametros = '?';
		$data['id_usuario'] = $this->input->get('id_usuario') ?? '0';
		$parametros .= 'id_usuario=' . $data['id_usuario'];

		// ⇩ ➊ Capturamos la fecha
		$data['fecha'] = $this->input->get('fecha') ?? null;
		if ($data['fecha']) $parametros .= '&fecha='.$data['fecha'];

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

		$this->load->model('Ingreso_model', 'Ingreso', true);

		// ⇩ ➋ NO sobrescribimos $data, lo combinamos
		$result = $this->Ingreso->log($data['id_usuario'], $data['fecha'], [$offset, $cantidad]);
		$data = array_merge($data, $result);

		$data['usuarios'] = $this->Usuario->lista();

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

		$data['title'] = 'Ingresos';
		$data['content'] = $this->load->view('usuarios/ingresos', $data , true);
		$this->load->view('default', $data);
	}
}
