<?php


class CotizacionesControlador extends Controladores {

    function mostrarTodas(){
        Vistas::mostrar("ventas","cotizaciones/todas-cotizaciones", array());
    }
    
    function tablatodas(){
        $total = array();
        $totalItem = '0';
        $Cotizaciones = Cotizaciones::todas();
        foreach($Cotizaciones as $cotizacion){
            $Items = CotizacionesItems::deLaCotizacion($cotizacion->cotizacionID);
            foreach($Items as $item){
                $totalItem = $totalItem + (($item->itemCANTIDAD * $item->itemVLRUNITARIO)+$item->itemVLRIMPUESTOS);
            }
            array_push($total,$totalItem);
            $totalItem = '0';
        }
        Vistas::mostrar("ventas","cotizaciones/todas-cotizaciones/tabla", array("Cotizaciones"=>$Cotizaciones, "Totales"=>$total));
    }
    
    function nuevaCotizacion(){
        $TiposIdentificacion = TiposIdentificacion::todos();
        $Categorias = CategoriasServicios::todas();
        $Municipios = GeoMunicipios::todos();
            Vistas::mostrar("ventas","cotizaciones/cotizacion", 
            array("Categorias"=>$Categorias, "TiposIdentificacion"=> $TiposIdentificacion, "Municipios"=> $Municipios));
    }
    
    function datosCliente() {
        $Persona = Personas::porIdentificacion($this->identificacion, $this->tipoIdentificacion);
        if (!is_null($Persona)) {
            echo RespuestasSistema::exito(array("Persona" => $Persona));
        } else {
            echo RespuestasSistema::fallo("No se encontró una persona con identificación [" . $this->identificacion . " ], verifique el tipo y el número e intente nuevamente!");
        }
    }
    
    function servicios(){
        $Servicios = Servicios::porCategoriaID($this->categoria);
        if (!is_null($Servicios)) {
            echo RespuestasSistema::exito(array("Servicios" => $Servicios));
        } else {
            echo RespuestasSistema::fallo("No se encontraron servicios de la categoria [" . $this->categoria . " ].");
        }
    }
    
    function nuevoSoporte(){
        $Cotizacion = Cotizaciones::porID($this->cotizacionID);
        Vistas::mostrar("ventas","cotizaciones/soporte-cotizacion", array('Cotizacion'=>$Cotizacion));
    }
    
    function cargarSoporte(){
        var_dump($_POST);
        /*$Cargado = SoportesPagos::registrar($this->usuarioID);
        Vistas::mostrar("ventas","cotizaciones/soporte-cotizacion", array('Cotizacion'=>$Cotizacion));*/
    }
    
    function vistaPrevia(){
        $Logo = Parametros::valor("LOGOCCSM");
        $Cotizacion = Cotizaciones::datosCompletos($this->cotizacionID);
        //$Colaborador = Colaboradores::porIdUsuario($this->usuarioID);
        Vistas::mostrar("ventas","cotizaciones/vista-previa",array("Logo"=>$Logo, "Cotizacion"=>$Cotizacion));
    }
    
    function eliminarCotizacion(){
        $Eliminado = "";
        foreach ($this->cotizaciones as $cotizacion){
            $Eliminado .= CotizacionesItems::eliminarDeLaCotizacion($cotizacion);
        }
        foreach ($this->cotizaciones as $cotizacion){
            $Eliminado .= Cotizaciones::desactivar($cotizacion);
        }
    
        if (!is_null($Eliminado)) {
            $Cotizaciones = Cotizaciones::todas();
            echo RespuestasSistema::exito(array("Cotizaciones" => $Cotizaciones));
            //Vistas::mostrar("ventas","cotizaciones/todas-cotizaciones", array("Cotizaciones"=>$Cotizaciones));
        } else {
            echo RespuestasSistema::fallo("No se pudo eliminar la cotización [ " . $this->cotizacionID . " ].");
        }
    }
    
    function reactivarCotizacion(){
       // $Activada = Cotizaciones::activar( $this->cotizacionCONSECUTIVO);
       // $Cotizaciones = Cotizaciones::todas();
      //  if (!is_null($Activada)) {
      //      echo RespuestasSistema::exito(array("Cotizacion" => $this->cotizacionCONSECUTIVO));
      // } else {
            echo RespuestasSistema::fallo("No se pudo activar la cotización con el consecutivo [ " . $this->cotizacionCONSECUTIVO . " ].");
     //   }
    }  
    
    function editarCotizacion(){
        $TiposIdentificacion = TiposIdentificacion::todos();
        $Categorias = CategoriasServicios::todas();
        $Municipios = GeoMunicipios::todos();
        $Cotizacion = Cotizaciones::datosCompletos($this->cotizacionID);
        Vistas::mostrar("ventas","cotizaciones/cotizacion", array("Categorias"=>$Categorias, "TiposIdentificacion"=> $TiposIdentificacion, "Municipios"=> $Municipios, "CotizacionEditar"=>$Cotizacion));
    }
    
    function registrarCotizacion(){
        $listItem = array();
        $listItem2 = array();
        $Registrado = "";
        $Actualizado = "";
        $Eliminado = "";
        $personaID = Personas::idPorIdentificacion($this->cedulaCliente);
        Personas::actualizarInformacionCliente($this->telefonoCliente,$this->direccionCliente, $this->correoCliente, $this->telefonoCliente, $this->ciudadCliente, $personaID);
        if(isset($this->consecutivo)){
            $Cotizacion = Cotizaciones::idPorConsecutivo($this->consecutivo);
            $serviciosViejos = Cotizaciones::porConsecutivo($this->consecutivo);
        }else{
            $Cotizacion = null;
        }
        
        $fecha= new DateTime('now');
        $fecha->add(new DateInterval('P'.Parametros::valor('DIASVIGENCIACOTIZACION').'D'));
        $this->fechaVencimiento = $fecha->format('Y-m-d');

        if(is_null($Cotizacion)){
            $CotizacionRegistradaID = Cotizaciones::registrar($personaID, Consecutivos::usar('COTIZACIONES'), $this->fechaVencimiento, $this->Observaciones, $this->usuarioID);
            $Cotizacion = Cotizaciones::porID($CotizacionRegistradaID);
            foreach($this->servicioID as $servicio){
            $Registrado .= CotizacionesItems::registrar($servicio,$Cotizacion->cotizacionID, $this->itemDESCRIPCION[$servicio], 
                                                       $this->itemCANTIDAD[$servicio], $this->itemVLRUNITARIO[$servicio], $this->itemVLRIMPUESTOS[$servicio],
                                                       $this->itemIMPUESTO[$servicio],$this->Observaciones);
            }
        }else{
            foreach($this->servicioID as $servicio){
                Cotizaciones::actualizar($Cotizacion->cotizacionID,$this->fechaVencimiento, $this->Observaciones, $this->usuarioID);
                if(($this->ItemID[$servicio]) != '0'){
                    $Actualizado .= CotizacionesItems::actualizar($this->ItemID[$servicio], $servicio, $Cotizacion->cotizacionID, $this->itemDESCRIPCION[$servicio], 
                                                                $this->itemCANTIDAD[$servicio],  $this->itemVLRUNITARIO[$servicio],$this->itemVLRIMPUESTOS[$servicio],
                                                                $this->itemIMPUESTO[$servicio],$this->Observaciones);
                }else{
                    $Registrado .= CotizacionesItems::registrar($servicio, $Cotizacion->cotizacionID, $this->itemDESCRIPCION[$servicio], $this->itemCANTIDAD[$servicio],  
                                                                $this->itemVLRUNITARIO[$servicio],$this->itemVLRIMPUESTOS[$servicio],
                                                                $this->itemIMPUESTO[$servicio],$this->Observaciones);
                }
            }
            
            foreach($serviciosViejos as $item){
                //foreach($serviciosNuevos as $servicio){
                    foreach($this->servicioID as $servicio){
                    //$id = explode("-",$servicio->$servicioID);
                    //if($item->itemID == $id[0]){
                        if($item->itemID == $this->ItemID[$servicio]){
                        if(!in_array($item->itemID, $listItem)){
                            if(!in_array($item->itemID, $listItem2)){
                                array_push($listItem,$item->itemID);
                            }else{
                                $id = array_search($item->itemID, $listItem2);
                                array_push($listItem,$item->itemID);
                                unset($listItem2[$id]);
                            }
                        }
                        break;
                    }else{
                        if(!in_array($item->itemID, $listItem2)){
                            if(!in_array($item->itemID, $listItem)){
                                 array_push($listItem2, $item->itemID);
                            }
                        }
                    }
                }
             }
            
            foreach($listItem2 as $itemID){
                $Eliminado .= CotizacionesItems::eliminar($itemID);
            }
            
        }
        if (!is_null($Registrado) || !is_null($Actualizado) || !is_null($Eliminado)) {
            echo RespuestasSistema::exito(array("Cotizacion" => $Cotizacion));
        } else {
            echo RespuestasSistema::fallo("No se pudo Registrar/Actualizar la cotización.");
        }
    }
    
    
}
