<?php

class AccionesControlador extends Controladores {
    
    function mostrarAcciones(){
        $accion = Acciones::todas();
        Vistas::mostrar("planeador", "acciones/mostrartodo",array('PlanesAcciones'=>$accion));
    }
    
    function verDetalles(){
        $accion = Acciones::datos($this->accionID);
        Vistas::mostrar("planeador", "acciones/form-ver-detalles",array('PlanesAcciones'=>$accion));
    }
    
    function tablaListado() {
        $acciones = Acciones::todas();
        Vistas::mostrar(
            'planeador','acciones/tbl-acciones',
            array('PlanesAcciones' => $acciones)
        );
    }
    
     function detallePorActividad() {
         $Accion = Acciones::datos($this->accionID);
        Vistas::mostrar('planeador', 'acciones/tbl-accion-sencilla', 
            array( 'Accion' => $Accion)
        );
    }
    
  
    function registrar() {
        if($this->accionesID!=""){
            $accion = Acciones::actualizar($this->accionesID, $this->programa, $this->titulo, $this->responsable, 
            $this->descripcion, $this->justificacion );
            $accion = $this->accionesID;
        }
        else{
            $codigoAccion = Consecutivos::usar('ACCIONES', 'ACC');
            $accion =Acciones::guardar($this->programa, $codigoAccion , $this->titulo, $this->responsable, 
            $this->descripcion, $this->justificacion );
            if(!empty($accion) and !empty($this->metasID)){
                $this->asignarMetas($this->metasID , $accion);
            }
        }
        if($accion>0){
            echo RespuestasSistema::exito("Accion guardada con éxito", Acciones::datos($accion));
        }else{
            echo RespuestasSistema::error("Error al guardar la accion, Comunicarse con Gestion TICS.");
        }
    }
    
    function asignarMetas($metas=null, $accion=null){
        if(!empty($accion)):
            if(is_array($metas)):
                foreach($metas as $meta):
                    AccionesMetas::guardar($meta, $accion );
                endforeach;
            else:
                AccionesMetas::guardar($metas, $accion);
            endif; 
        else:
            if(count(AccionesMetas::datos( $this->accionID, $this->metaID))>0):
                echo RespuestasSistema::fallo("La meta ya se encuentra registrada en la accion");
            else:
                AccionesMetas::guardar($this->metaID, $this->accionID);
                echo RespuestasSistema::exito("La meta se asigno con exito", Acciones::datos($this->accionID));
            endif;
        endif;
    }

    function mostrarFormularioNuevo() {
        $programa = PlanesProgramas::todos(ProgramasEstados::PLANEACION);
        $this->mostrarFormulario($programa);
    }
    
    function mostrarFormularioEditar() {
        if(!empty($this->accionesID)):
            $programa = PlanesProgramas::todos();
            $objAcciones=Acciones::datos($this->accionesID);
            $this->mostrarFormulario($programa, $objAcciones);
        endif;
    }
    
    private function mostrarFormulario($programa, $objAcciones=null) {
        $responsable = Cargos::todos(); 
        $planes = Planes::todos();
        Vistas::mostrar("planeador", "acciones/crear",array('CamaraCargos'=>$responsable ,
        'objAcciones'=>$objAcciones,'PlanesPrograma'=>$programa, 'planes' => $planes));
    }
    
    function getIdAccion(){
        Acciones::datos($this->$idAcciones);
    }
    
    function eliminar(){
        $acciones = $this->checkb;
        if (count($acciones)) {
            $cont = 0;
            foreach ($acciones as $accion):
                $nCambio = Acciones::eliminar($accion);
                if ($nCambio > 0) {
                    $cont++;
                }
            endforeach;
            if (count($acciones)==$cont) {
                echo RespuestasSistema::exito('Eliminación exitosa!');
            } else {
                echo RespuestasSistema::error('Hubo un error al eliminar uno de los registros!');
            }
        } else {
            echo RespuestasSistema::error('No llegarón los datos para eliminar.');
        }
    }
    
    function eliminarMeta(){
        $metas = $this->checkb;
        if (count($metas)) {
            $cont = 0;
            foreach ($metas as $meta):
                $accionMeta = AccionesMetas::datos($this->accionID, $meta);
                $nCambio = AccionesMetas::eliminar($accionMeta->planAccionMetaID);
                if ($nCambio > 0) {
                    $cont++;
                }
            endforeach;
            if (count($metas)==$cont) {
                echo RespuestasSistema::exito('Eliminación exitosa!');
            } else {
                echo RespuestasSistema::error('Hubo un error al eliminar uno de los registros!');
            }
        } else {
            echo RespuestasSistema::error('No llegarón los datos para eliminar.');
        }
    }
    
    function mostrarSelect(){
        $acciones = Acciones::Todas();
        Vistas::mostrar("planeador", "acciones/select-acciones", array('acciones'=>$acciones)); 
    }
    
    function mostrarTablaCompletaPorPrograma(){
        if(empty($this->tipoPlanID)){
            $Acciones = Acciones::delPrograma($this->programaID);
            foreach($Acciones as $accion):
                $accion->Total = PlanesOperaciones::presupuestoTotalPorAccion($accion->accionID);
                $accion->TotalGastado =  PlanesOperacionesAvances::GastadoTotalPorAccion($accion->accionID);
                $accion->FechaInicio = PlanesOperaciones::fechaTempranaPorAccion($accion->accionID);
                $accion->FechaFinal = PlanesOperaciones::fechaTardiaPorAccion($accion->accionID);
            endforeach;
             Vistas::mostrar("planeador", "acciones/tbl-completa", array("Acciones"=>$Acciones, 'hash_padre'=>$this->hash_padre));
        }else{
            $Acciones = Acciones::delPrograma($this->programaID, $this->tipoPlanID);
            foreach($Acciones as $accion):
                $accion->Total = PlanesOperaciones::presupuestoTotalPorAccion($accion->accionID,  $this->tipoPlanID);
                $accion->TotalGastado =  PlanesOperacionesAvances::GastadoTotalPorAccion($accion->accionID,  $this->tipoPlanID);
                $accion->FechaInicio = PlanesOperaciones::fechaTempranaPorAccion($accion->accionID,  $this->tipoPlanID);
                $accion->FechaFinal = PlanesOperaciones::fechaTardiaPorAccion($accion->accionID,  $this->tipoPlanID);
            endforeach;
             Vistas::mostrar("planeador", "acciones/tbl-completa", array("Acciones"=>$Acciones,'TipoPlanID' => $this->tipoPlanID, 'hash_padre'=>$this->hash_padre));
        }
       
    }
    
    /**
    * Permite mostrar los detalles de la Accion.  
    * @return HTML Formulario solo con datos inciales o necesarios.
    */
    function detallesAccion() {
       
        if(@$this->tipoPlanID){
            $PlanesAcciones = Acciones::datos($this->accionID, $this->tipoPlanID);
            Vistas::mostrar('planeador', 'acciones/ver-detalles', array('PlanesAcciones' => $PlanesAcciones, 'TipoPlanID' => $this->tipoPlanID, 'hash_padre'=>$this->hash_padre));
        }else{
            $PlanesAcciones = Acciones::datos($this->accionID);
            Vistas::mostrar('planeador', 'acciones/ver-detalles', array('PlanesAcciones' => $PlanesAcciones, 'hash_padre'=>$this->hash_padre));  
        }
    }
}                                       
