<?php
require './clases/movimiento.php';
require './clases/espacioHabitables.php';
require './clases/tercero.php';
class salidaMovController{

    private $salida;
    private $espacio;
    private $tercero;

    public function __construct(){
        $this->salida  = new movimiento();
        $this->espacio = new espacioHabitables();
        $this->tercero = new tercero();
    }

    public function index(){
        date_default_timezone_set('America/Bogota');
        list($id, $id_a, $tipo, $nomtipo, $idter, $tercero, $fecha, $idEstado, $nomEstado, $obs, $detallesAso, $descuento) = array(0, 0, 0, "", 0, "", date("d/m/Y"), 0, "", "", "", 0);
        $ingresos = $this->salida->obtenerMovClaseVadFecha(2);
        $todos    = $this->salida->obtenerTodo(3);
        $tipos    = $this->salida->obtenerTipoMovClase(3);
        $terceros = $this->salida->terceros(13);
        $estado   = $this->salida->obtenerEstado(1);
        $xTipo    = $this->salida->obtenerPrimerTipoClase(3);
        if(!empty($_REQUEST['asociado'])){
            $data = $this->salida->obtener($_REQUEST['asociado']);
            list($id_a, $idter, $tercero, $obs, $descuento) = array($data[0], $data[5], "$data[6] $data[7]", $data[11], $data[26]);
            $terceros    = $this->salida->tercerosDiff(13, $idter);
            $detallesAso = $this->salida->obtenerListadoDetalles($id_a);
        }

        if(!empty($_REQUEST['movimiento'])){
            $data = $this->salida->obtener($_GET['movimiento']);
            list($id, $tipo, $tiponom, $idter, $tercero, $fecha, $nomEstado, $obs, $numero)
                = array($data[0], $data[1], $data[2], $data[5], "$data[6] $data[7]", $data[12], $data[14], $data[10], $data[23]);
            $tipos    = $this->salida->obtenerTipoMovClDiff(3, $tipo);
            $detalles = $this->salida->obtenerListadoDetalles($id);
            $terceros = $this->salida->tercerosDiff(13, $idter);
        }else{
            list($idEstado, $nomEstado) = array($estado[0], $estado[1]);
        }
        require_once './vistas/movimiento/salida.php';
    }

    public function formatearFecha($fecha){
        $ff = explode("/", $fecha);
        return "$ff[2]-$ff[1]-$ff[0]";
    }

    public function guardar(){
        @session_start();
        $salida = new movimiento();
        $fecha    =  empty($_POST['txtFecha'])?date("Y-m-d"):salidaMovController::formatearFecha($_POST['txtFecha']);
        $asociado =  htmlspecialchars(filter_input(INPUT_POST, 'txtAso'), ENT_QUOTES, 'UTF-8');
        $this->salida->asociado            = empty($asociado)?'NULL':$asociado;
        $this->salida->tipo                = htmlspecialchars(filter_input(INPUT_POST, 'sltTipo'), ENT_QUOTES, 'UTF-8');
        $this->salida->numero              = $_REQUEST['txtNumero'];
        $this->salida->fecha               = $fecha;
        $this->salida->tercero             = htmlspecialchars(filter_input(INPUT_POST, 'sltTercero'), ENT_QUOTES, 'UTF-8');
        $this->salida->estado              = 1;
        $this->salida->fechaInicio         = $fecha;
        $this->salida->fechaFinal          = $fecha;
        $this->salida->fechaCancelacion    = $fecha;
        $this->salida->responsable         = $_SESSION['usuario_tercero'];
        $this->salida->numAdultos          = "NULL";
        $this->salida->numPeques           = "NULL";
        $this->salida->numHabitaciones     = "NULL";
        $this->salida->formaPago           = "NULL";
        $this->salida->tipo_tarifa         = "NULL";
        $this->salida->observaciones       = htmlspecialchars(filter_input(INPUT_POST, 'txtObservaciones'), ENT_QUOTES, 'UTF-8');
        $this->salida->parametrizacionanno = $_SESSION['anno'];
        $this->salida->descuento           = htmlspecialchars(filter_input(INPUT_POST, 'txtDescuento'), ENT_QUOTES, 'UTF-8');
        $data = $salida->registrar($this->salida);
        if($data == true){
            $id                      = $this->salida->obtenerUltimo($this->salida->tipo);
            $this->salida->id_unico  = $id[0];
            $id                      = md5($id[0]);
            if(!empty($this->salida->asociado)){
                $xxx = $this->salida->obtenerListadoDetalles($this->salida->asociado);
                while ($row = mysqli_fetch_row($xxx)){
                    $x = $this->salida->guardarDetalle($this->salida->id_unico, $row[3], $row[0]);
                }
            }

            if(!empty($_REQUEST['chkFactura'])){
                if($_REQUEST['chkFactura'] == 1){
                    $url = 'access.php?controller=Ingreso&action=buscarFacturaIngreso&ingreso='.md5($asociado);
                }else{
                    $url  = 'access.php?controller=SalidaMov&movimiento='.$id;
                }
            }else{
                $url  = 'access.php?controller=SalidaMov&movimiento='.$id;
            }
        }else{
            $url  = 'access.php?controller=Salida';
        }
        require_once './vistas/respuesta/index.php';
    }

    public function actualizar(){
        $salida = new movimiento();
        $tercero = $_GET['sltTercero'];
        $id      = $_GET['movimiento'];
        $fechaC  = 'NULL';
        $data    = $salida->actualizar($id, $tercero, $fechaC);
        if($data == true){
            $url  = 'access.php?controller=SalidaMov&movimiento='.$id;
        }else{
            $url  = 'access.php?controller=Salida';
        }
        require_once './vistas/respuesta/edit.php';
    }

    public function informe(){
        if(!empty($_REQUEST['mov'])){
            ini_set('max_execution_time', 0);
            session_start();
            ob_start();
            $ente = $this->salida->obtenerCompania($_SESSION['compania']);
            $data = $this->salida->obtener($_REQUEST['mov']);
            $hab  = ""; $idEsp = "";
            $espc = $this->salida->obtenerEspaciosMovimiento($_REQUEST['mov']);
            foreach ($espc as $item){
                $datE  = $this->espacio->obtener(md5($item[0]));
                $idEsp .= "$item[0] ,";
                $hab   .= "$datE[3] ,";
            }
            $hab   = substr($hab, 0, strlen($hab) - 2);
            $idEsp = substr($idEsp, 0, strlen($idEsp) - 2);
            list($nombreCompania, $nitcompania, $ruta) = array($ente[0], "$ente[1] - $ente[2]", $ente[3]);
            list($numero, $responsable, $fechaE, $fechaS, $tercero, $empresa, $tipoTar, $asociado, $descuento) = array($data[23], $data[15], $data[3], $data[4], $data[5], "", $data[24], $data[16], $data[26]);
            $dataT = $this->tercero->obtenerTerceroNOMS($tercero);
            list($nombres, $apellidos, $tdoc, $doc, $fechaN, $email, $telefono, $direccion, $repl)
                = array($dataT[1], $dataT[2], $dataT[3], $dataT[4], $dataT[5], $dataT[6], $dataT[7], $dataT[8], $dataT[10]);
            $pais = !empty($dataT[9])?$this->tercero->obtenerPaisCiudad($dataT[9]):"COLOMBIA";
            if(!empty($repl)){
                $dataE = $this->tercero->obtenerTerceroNOMS($repl);
                $empresa  = $dataE[11];
                $empresa .= "\nNIT : $dataE[4]";
                $empresa .= "\nTELEFONO : $dataE[7]";
            }
            $noches = salidaMovController::calculoEntreFechas($fechaE, $fechaS);
            $tarifa = salidaMovController::obtenerValorNoche($idEsp, $tipoTar);
            require ('./fpdf/fpdf.php');
            require_once './informes/salida/salida.informe.php';
        }
    }

    public function calculoEntreFechas($fechaI, $fechaF){
        date_default_timezone_set('America/Bogota');
        $fechaS = new DateTime(salidaMovController::formatearFechaHora($fechaI));
        $fechaE = new DateTime(salidaMovController::formatearFechaHora($fechaF));
        $diff   = $fechaS->diff($fechaE);
        return $diff->days;
    }

    public function obtenerValorNoche($espacios, $tipoT){
        $xxx = 0;
        $esp = explode(",", $espacios);
        foreach ($esp as $item){
            $conceptos = $this->salida->obtenerConceptosEspacio(md5($item[0]));
            if(count($conceptos) > 0){
                foreach ($conceptos as $value){
                    $xxx += $this->salida->obtenerValorTarifaConcepto($value[2], $tipoT);
                }
            }
        }
        return $xxx;
    }

    public function formatearFechaHora($fecha){
        $ff = explode("/", $fecha);
        $xx = explode(" ", $ff[2]);
        $fecha = trim($xx[0])."-$ff[1]-$ff[0] $xx[1]:00";
        return $fecha;
    }
}