<?php
class Ayuda_model extends CI_Model {

	/**
	 * Entrega una lista de todas las categorias hijas de $idCategoria
	 */
	public function categorias($idCategoria) {
		// Traer categorías activas
		$this->db->from('ayudas_categorias ac');
		$this->db->where('ac.deleted', 0);
		$this->db->where('ac.id_categoria', $idCategoria);
		$this->db->order_by('ac.nombre', 'ASC');
		$categorias = $this->db->get()->result_array();

		// Contar ayudas visibles por categoría
		$this->db->select('a.id_categoria, count(a.id) as cant');
		$this->db->from('ayudas a');
		$this->db->where('a.deleted', 0);

		if (!$_SESSION['usuario']['admin']) {
			// Si no es admin: contar solo públicas o privadas propias
			$this->db->group_start();
			$this->db->where('a.privado', 0);
			$this->db->or_where('a.id_usuario', $_SESSION['usuario']['id']);
			$this->db->group_end();
		}

		$this->db->group_by('a.id_categoria');
		$ayudas = $this->db->get()->result_array();

		// Pasar conteo a un mapa id_categoria => cantidad
		$cant = [];
		foreach ($ayudas as $a) {
			$cant[$a['id_categoria']] = $a['cant'];
		}

		// Agregar la cantidad a cada categoría
		foreach ($categorias as &$c) {
			$c['cant'] = $cant[$c['id']] ?? 0;
		}

		return $categorias;
	}
	/*
	public function categorias($idCategoria) {
		$this->db->from('ayudas_categorias ac');
		$this->db->where('ac.deleted', 0);
		$this->db->where('ac.id_categoria', $idCategoria);
		$this->db->order_by('ac.nombre', 'ASC');
		$categorias = $this->db->get()->result_array();

		$this->db->select('id_categoria, count(id) as cant');
		$this->db->from('ayudas a');
		$this->db->where('a.deleted', 0);
		$this->db->group_by('a.id_categoria');
		$ayudas =  $this->db->get()->result_array();
		foreach($ayudas as $a){
			$cant[$a['id_categoria']] = $a['cant'];
		}

		foreach($categorias as &$c) {
			$c['cant'] = $cant[$c['id']] ?? 0;
		}

		return $categorias;
	}
	*/

	/**
	 * Entrega una lista de todas las categorias agrupadas por padre
	 */
	public function lista_categorias() {
		$this->db->from('ayudas_categorias ac');
		$this->db->where('ac.deleted', 0);
		$this->db->order_by('ac.id_categoria', 'ASC');
		$this->db->order_by('ac.nombre', 'ASC');
		$categorias =  $this->db->get()->result_array();

		$res = [];

		foreach($categorias as $c) {
			if ($c['id_categoria'] == 0) {
				$res[$c['id']] = $c;
				$res[$c['id']]['subcategorias'] = [];
			}
			else {
				$res[$c['id_categoria']]['subcategorias'][$c['id']] = $c;
			}
		}

		return $res;
	}



	/**
	 * Entrega una lista de todas las ayudas de la categorias $idCategoria
	 */
	public function ayudas($idCategoria) {
		$this->db->select('a.*, u.alias as autor');
		$this->db->from('ayudas a');
		$this->db->join('usuarios u', 'a.id_usuario = u.id', 'left');
		$this->db->where('a.deleted', 0);
		$this->db->where('a.id_categoria', $idCategoria);

		if (!$_SESSION['usuario']['admin']) {
			// Si no es admin: ver solo públicas o las privadas propias
			$this->db->group_start();
			$this->db->where('a.privado', 0);
			$this->db->or_where('a.id_usuario', $_SESSION['usuario']['id']);
			$this->db->group_end();
		}

		$this->db->order_by('a.titulo', 'ASC');
		return $this->db->get()->result_array();
	}
	
	
	/*
	public function ayudas($idCategoria) {
		$this->db->select('a.*, u.alias as usuario');
		$this->db->from('ayudas a');
		$this->db->join('usuarios u', 'a.id_usuario = u.id', 'left');
		$this->db->where('a.deleted', 0);
		$this->db->where('a.id_categoria', $idCategoria);
		$this->db->order_by('a.titulo', 'ASC');
		return $this->db->get()->result_array();
	}
	*/

	/**
	 * Entrega toda la informacion de una categoria de ayuda
	 * @param $id id del anuncio que se solicita
	 */
	public function info_categoria($id = null) {
		$this->db->select('*');
		$this->db->from('ayudas_categorias');
		$this->db->where('id', $id);
		$this->db->where('deleted', 0);
		$categoria = $this->db->get()->row_array();

		// Buscar subcategorias
		$this->db->select('count(id) as cant');
		$this->db->from('ayudas_categorias');
		$this->db->where('id_categoria', $id);
		$this->db->where('deleted', 0);
		$sub = $this->db->get()->row_array();

		$categoria['subcategorias'] = $sub['cant'];

		// Buscar artículos 
		$this->db->select('count(id) as cant');
		$this->db->from('ayudas');
		$this->db->where('id_categoria', $id);
		$this->db->where('deleted', 0);
		$art = $this->db->get()->row_array();

		$categoria['articulos'] = $art['cant'];

		return $categoria;
	}

	/**
	 * Entrega info de una ayuda
	 */
	public function detalle($idAyuda) {
		$this->db->from('ayudas a');
		$this->db->where('a.deleted', 0);
		$this->db->where('a.id', $idAyuda);
		return $this->db->get()->row_array();
	}

	/**
	 * Guardar datos de un nuevo articulo o edición
	 */
	public function guardar($data) {
		//revisar si viene id y si viene se hace update
		if (empty($data['id'])) {
			//$data['created'] = date('Y-m-d H:i:s');
			$this->db->insert('ayudas', $data);
			$return['id_ayuda'] = $this->db->insert_id();
		}
		else {
			$ayuda = $this->detalle($data['id']);

			$this->db->where('id', $data['id']);
			$this->db->update('ayudas', $data);
			$return['id_ayuda'] = $data['id'];

			// Guarda log de ayuda
			$ayuda['id_ayuda'] = $ayuda['id'];
			unset($ayuda['id'], $ayuda['created']);
			$this->db->insert('ayudas_log', $ayuda);
		}
		$return['status'] = 'success';
		return $return;
	}

	/**
	 * Guardar datos de un nuevo articulo o edición
	 */
	public function guardar_categoria($data) {
		//revisar si viene id y si viene se hace update
		if (empty($data['id'])) {
			//$data['created'] = date('Y-m-d H:i:s');
			$this->db->insert('ayudas_categorias', $data);
			$return['id_ayuda'] = $this->db->insert_id();
		}
		else {
			$this->db->where('id', $data['id']);
			$this->db->update('ayudas_categorias', $data);
			$return['id_ayuda_categoria'] = $data['id'];
		}
		$return['status'] = 'success';
		return $return;
	}

	public function carga_menu() {
		$this->db->from('ayudas_categorias');
		$this->db->where('id_categoria', 0);
		$this->db->where('deleted', 0);
		$this->db->order_by('nombre', 'ASC');
		$categorias = $this->db->get()->result_array();

		$r = [];
		foreach ($categorias as $ac) {
			$r[$ac['id']] = $ac['nombre'];
		}

		$_SESSION['categorias_ayuda'] = $r;
	}
}