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

class Clientes extends CI_Controller {

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

/**
 * Muestra listado de clientes ordenado por orden alfabético
 * En la parte superior existe un formulario para agregar un nuevo cliente
 */
	public function index() {
		$data['clientes'] = $this->Cliente->get_all();
		$data['view'] = 'clientes/index';
		$data['title'] = 'Clientes';
		$data['content'] = $this->load->view('clientes/index', $data , true);
		$this->load->view('default', $data);
	}

/**
 * Entrega información del producto por id
 */
	public function get() {
		if (!empty($this->input->post('id'))) {
			$result = $this->Cliente->get($this->input->post('id'));
		}
		else if(!empty($this->input->get('id'))) {
			$result = $this->Cliente->get($this->input->get('id'));
		}
		else {
			$result['error'] = TRUE;
		}
		echo json_encode($result);
	}

/**
 * Muestra datos y compras asociadas a clientes
 */
	public function view($id) {
		$data['cliente'] = $this->Cliente->full_info($id);
		$this->load->model('Punto_model', 'Punto', true);
		$data['estados_puntos'] = $this->Punto->estados();

		$data['title'] = $data['cliente']['nombre'];

		$data = $this->Venta->get_globales($data);

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

/**
 * Muestra clientes ordenados por cantidad de compras
 */
	public function ranking($periodo = '') {
		if (!$_SESSION['usuario']['admin']) {
			redirect('/clientes/index');
		}
		$periodo = $this->input->get('periodo') ?? $periodo ?? date('Ym');
		$data['periodo'] = $periodo;
		$data['clientes'] = $this->Cliente->ranking($periodo);

		$data['total'] = 0;
		foreach($data['clientes'] as $c){
			$data['total'] += $c['suma'];
		}

		$data['meses_ventas'] = $this->Venta->get_meses_ventas();
		$data['title'] = 'Clientes';
		$data['content'] = $this->load->view('clientes/ranking', $data , true);
		$this->load->view('default', $data);
	}


/**
 * Muestra clientes que no han comprado hace 3 meses o más
 */
	public function fuga() {
		$data['clientes'] = $this->Cliente->fuga();

		$data['total'] = 0;
		foreach($data['clientes'] as $c){
			$data['total'] += $c['suma'];
		}

		$data['meses_ventas'] = $this->Venta->get_meses_ventas();
		$data['title'] = 'Clientes';
		$data['content'] = $this->load->view('clientes/ranking', $data , true);
		$this->load->view('default', $data);
	}


	/**
	 * Actualiza registro en VDM con email obtenido de ps según su ps_id
	 */
	public function update_email() {
		$data['clientes'] = $this->Cliente->update_email();
		pr($data['clientes']);
		die;
	}


/* JSON */


	public function save() {
		//Se revisa si se está creando un cliente
		if ($this->input->post('nombre')) {
			$post = getPost($this->input, ['id', 'ps_id', 'nombre', 'email', 'fono', 'facebook', 'instagram', 'info']);
			$result = $this->Cliente->save($post);
			echo json_encode($result);
		}
	}

/**
 * Elimina un cliente de la lista, llevandolo a deleted 1
 * se mantienen todas sus compras y ventas
 */
	public function delete() {
		if ($this->input->post('id')) {
			$result = $this->Cliente->delete($this->input->post('id'));
			return true;
			die;
		}
		return false;
	}


	public function ac_emails(){
		$s = $_GET['term'];

		$r = $this->Cliente->autocomplete_email($s);

		echo $_GET['callback']. '(' . json_encode($r) .');';
		die;
	}

	public function get_total_points() {
		if (!empty($_POST)) {
			$result = $this->Cliente->get_points($_POST['ps_id']);
			$response = ['puntos_disponibles' => $result['total_puntos']];
			header('Content-type: application/json');
			echo json_encode($response);
		}
	}

	public function search_by_email() {
		if (!empty($_POST)) {
			$result = $this->Cliente->search_by_email($_POST['email']);
			header('Content-type: application/json');
			echo json_encode($result);
		}
	}

	public function search_loyalty() {
		$result = $this->Cliente->search_loyalty($_POST['id']);
		header('Content-type: application/json');
		echo json_encode($result);
	}

	public function carga_puntos($id) {
		$idCliente = $id ?? $_POST['id'];
		$result = $this->Cliente->carga_puntos_ventas($idCliente);
		header('Content-type: application/json');
		echo json_encode($result);
	}

}
