<?php

class Mensajeria_sistema extends Controller {

    protected $cliente;

    public function __construct() {
        if (!isset($_SESSION['login_user']) || !(in_array('admin', $_SESSION['login_user']['PRIVILEGIOS']) || in_array('b', $_SESSION['login_user']['PRIVILEGIOS']))) {
            header('Location:' . URL_SITIO);
            exit();
        }
        parent::__construct();

        try {
            $this->cliente = new SoapClient(null, array('location' => URL_WEBSERVICE . 'webservices/mensajeria/', 'uri' => 'urn:webservices')); // Llamar al método como si fuera del cliente 
        } catch (Exception $e) { //verificar errores
            echo $e->getMessage();
            exit();
        }
    }

    public function index() {

        $mensajes = $this->cliente->getMensajesSistema();
        $comandos = $this->cliente->getComandos();
        $locales = $mensajes['locales'];
        $mensajes = $mensajes['mensajes'];

        $mensajeria_sistema = true;

        $css_template = array('mensajeria');
        $js_template = array('mensajeria');
        $page_template = 'mensajeria/index';
        $url_mensajeria = URL_SITIO . 'mensajeria_sistema';

        require APP_DIR . '/views/_templates/general.php';
    }

    public function id($id = NULL) {
        if (!$id) {
            header('Location:' . URL_SITIO);
            exit();
        }
        $mensajes = $this->cliente->getMensajeSistema($id);


        if ($mensajes && $mensajes['destinatarios']) {
            foreach ($mensajes['destinatarios'] as $destinatario) {
                if ($destinatario['destinatario'] == 0 && $destinatario['fecha_leido'] == NULL) {
                    $this->cliente->setLeidoSistema(0, $id); //0 id de HEAD
                }
            }
        }

        $css_template = array('mensajeria_ver');
        $js_template = array();
        $page_template = 'mensajeria/view';
        $url_mensajeria = URL_SITIO . 'mensajeria_sistema';
        $mensajeria_sistema = true;

        require APP_DIR . '/views/_templates/general.php';
    }

    public function action($action) {

        if ($action == 'enviar' && isset($_POST['asunto'])) {
            $destinatarios = isset($_POST['local']) ? $_POST['local'] : 0;
            if (!is_array($destinatarios)) {
                $destinatarios = explode(", ", $destinatarios);
            }

            $data = array(
                'local' => 0,
                'asunto' => $_POST['asunto'],
                'cuerpo' => '',
                'respuesta_ID' => isset($_POST['respuestaId']) ? $_POST['respuestaId'] : 0,
                'ID_usuario' => $_SESSION['login_user']['ID'],
                'nombre_usuario' => $_SESSION['login_user']['USUARIO'],
                'destinatario' => $destinatarios,
                'fecha_generado' => date('Ymd H:i:s')
            );
            
            $comando = explode("-|-", $data['asunto']);
            if(count($comando)==2) {
                $data['asunto'] = $comando[1];
                $data['comando_id'] = $comando[0];
            }
            
            print_r($data);die();

            $result = $this->cliente->enviarSistema($data);
            echo json_encode($result);
        } elseif ($action == 'leido' && isset($_POST['id'])) {
            echo json_encode(array('return' => $this->cliente->setLeidoSistema(0, $_POST['id'])));
        }

        exit();
    }

    public function comandos($id = NULL) {
        if (!in_array('admin', $_SESSION['login_user']['PRIVILEGIOS'])) {
            header('Location:' . URL_SITIO . 'mensajeria_sistema');
            exit();
        }

        $comando = $this->cliente->getComando($id);

        $_error_post = false;
        $_save_ok = false;

        if (isset($_POST['action'])) {
            $id = $_POST['id'];

            $comando = $_POST['comando'];
            $_error = array();

            if (strlen($comando['nombre']) < 2) {
                $_error[] = 'El nombre del comando debe tener al menos 2 caracteres';
            }
            if (!$comando['tipo']) {
                $_error[] = 'Ingrese tipo de comando';
            }
            if (!$comando['comando']) {
                $_error[] = 'Ingrese el comando';
            }

            if (count($_error)) {
                $_error_post = implode('<br />', $_error);
            } else {

                if ($this->cliente->getComandoByName($comando['nombre'], $id)) {
                    $_error_post = "El nombre de comando ya está en uso";
                } else {
                    if ($this->cliente->updateComando($id, $comando)) {
                        $_SESSION['msg_ok'] = ($id) ? "El comando fue actualizado correctamente" : "El comando fue guardado correctamente";

                        header('Location:' . URL_SITIO . 'mensajeria_sistema/comandos');
                        exit();
                    } ELSE {
                        $_SESSION['msg_err'] = "Hubo un error en la base de datos, intente nuevamente en unos minutos";
                    }
                }
            }

            if ($comando) {
                $comando['id'] = $id;
            }
        }

        if (!$comando || !is_array($comando)) {
            $comando = array(
                'id' => '',
                'nombre' => '',
                'tipo' => '',
                'comando' => '',
            );
        }

        $comandos = $this->cliente->getComandos();

        $css_template = array('mensajeria');
        $js_template = array('mensajeria');
        $page_template = 'mensajeria/comandos';
        $url_mensajeria = URL_SITIO . 'mensajeria_sistema';

        require APP_DIR . '/views/_templates/general.php';
    }

    public function delete_comando($id = NULL) {

        if ((int) $id && $this->cliente->removeComando($id)) {
            $_SESSION['msg_ok'] = "El comando ha sido eliminado";
        } else {
            $_SESSION['msg_err'] = "No se pudo eliminar el comando, vuelva a intentar nuevamente";
        }

        header('Location:' . URL_SITIO . 'mensajeria_sistema/comandos');
    }

}
