<?php
require_once "./Controller/Database.php";
require_once "./Controller/Setting.php";

class Productividad extends BD {

    private $PARM;
    function __construct() {
        $this->PARM = new Setting();
    }

    public function GET() {
        $this->Permission();
        if($this->id==0){
            if($this->admin){
                $query = $this->consult("SELECT * FROM vunidades");
                $query->execute();    
            } else {
                $query = $this->consult("SELECT * FROM vunidades WHERE userid=? OR userid_organizacion=?");
                $query->execute([$this->userid,$this->userid]);
            }    
            $result = $query->fetchAll(PDO::FETCH_ASSOC);
            $this->data = array(
                'result' => $result,
            );
            $this->httpHeaders = 200;
        } else {
            $query = $this->consult("SELECT * FROM vproyectos WHERE unidad=?");
            $query->execute([$this->id]);
            $proyectos = $query->fetchAll(PDO::FETCH_ASSOC);
            $query = $this->consult("SELECT * FROM vpublicaciones WHERE unidad=?");
            $query->execute([$this->id]);
            $publicaciones = $query->fetchAll(PDO::FETCH_ASSOC);
            $query = $this->consult("SELECT * FROM vdivulgativos_difusion WHERE unidad=?");
            $query->execute([$this->id]);
            $divulgativos_difusion = $query->fetchAll(PDO::FETCH_ASSOC);
            $query = $this->consult("SELECT * FROM vpublicaciones_grado WHERE unidad=?");
            $query->execute([$this->id]);
            $publicaciones_grado = $query->fetchAll(PDO::FETCH_ASSOC);
            $query = $this->consult("SELECT * FROM vpropiedad_intelectual WHERE unidad=?");
            $query->execute([$this->id]);
            $propiedad_intelectual = $query->fetchAll(PDO::FETCH_ASSOC);
            $this->data = array(
                'proyectos' => $proyectos,
                'publicaciones' => $publicaciones,
                'divulgativos_difusion' => $divulgativos_difusion,
                'publicaciones_grado' => $publicaciones_grado,
                'propiedad_intelectual' => $propiedad_intelectual,                
                'estado_avance' => $this->PARM->estado_avance(),
                'pais' => $this->PARM->pais(),
                'tipo_cooperacion' => $this->PARM->tipo_cooperacion(),
                'tipo_investigacion' => $this->PARM->tipo_investigacion(),
                'tipo_producto' => $this->PARM->tipo_producto(),
                'tipo_proyecto' => $this->PARM->tipo_proyecto(),
                'tipo_servic' => $this->PARM->tipo_servic(),
                'tipo_frecuencia' => $this->PARM->tipo_frecuencia(),
                'tipo_publicacion' => $this->PARM->tipo_publicacion(),
                'tipo_financiamiento' => $this->PARM->tipo_financiamiento(),
                'areas_conocimiento' => $this->PARM->areas_conocimiento(),
                'tipo_producto_divulgativo' => $this->PARM->tipo_producto_divulgativo(),
                'tipo_texto' => $this->PARM->tipo_texto(),
                'tipo_propiedad_intelectual' => $this->PARM->tipo_propiedad_intelectual(),
                'modalidad_registro' => $this->PARM->modalidad_registro(),
                'estado_solicitud' => $this->PARM->estado_solicitud(),
                'tipo_seriada' => $this->PARM->tipo_seriada(),
                'tipo_noseriada' => $this->PARM->tipo_noseriada(),
                'patente_opciones' => $this->PARM->patente_opciones(),
                'tipo_ubicacion' => $this->PARM->tipo_ubicacion(),
            );
            $this->httpHeaders = 200;
        }
    }

    public function POST() {
        $this->Permission();
        $input = $this->input;
        switch ($input->caso) {
            case 'proyectos':
                if($input->pais->id) {$input->pais = $input->pais->id;}
                $dat = array(
                    ':unidad' => $input->unidad,
                    ':titulo' => $input->titulo,
                    ':objetivo' => $input->objetivo,
                    ':tipo_investigacion' => $input->tipo_investigacion->id,
                    ':tipo_proyecto' => $input->tipo_proyecto->id,
                    ':tipo_servic' => $input->tipo_servic->id,
                    ':tipo_producto' => $input->tipo_producto->id,
                    ':area' => $input->area->id,
                    ':estado_avance' => $input->estado_avance->id,
                    ':fecha_inicio' => $input->fecha_inicio,
                    ':fecha_culminacion' => $input->fecha_culminacion,
                    ':fecha_paralizacion' => $input->fecha_paralizacion,
                    ':localizacion' => $input->localizacion,
                    ':tipo_financiamiento' => $input->tipo_financiamiento->id,
                    ':mujeres' => $input->mujeres,
                    ':hombres' => $input->hombres,
                    ':tipo_cooperacion' => $input->tipo_cooperacion->id,
                    ':institucion' => $input->institucion,
                    ':pais' => $input->pais,
                    ':created_by' => $this->userid,
                ); 
                $query = $this->consult('INSERT INTO proyectos 
                (unidad,titulo,objetivo,tipo_investigacion,tipo_proyecto,tipo_servic,tipo_producto,created_by,
                area,estado_avance,fecha_inicio,fecha_culminacion,fecha_paralizacion,localizacion,tipo_financiamiento,
                mujeres,hombres,tipo_cooperacion,institucion,pais) 
                VALUES (:unidad,:titulo,:objetivo,:tipo_investigacion,:tipo_proyecto,:tipo_servic,:tipo_producto,:created_by,
                :area,:estado_avance,:fecha_inicio,:fecha_culminacion,:fecha_paralizacion,:localizacion,:tipo_financiamiento,
                :mujeres,:hombres,:tipo_cooperacion,:institucion,:pais)');
                if($query->execute($dat)){
                    $this->httpHeaders = 200;
                }
                break;
            case 'publicaciones':
                if($input->tipo_publicacion->id==1){
                    $dat = array(
                        ':unidad' => $input->unidad,
                        ':tipo_publicacion' => $input->tipo_publicacion->id,
                        ':tipo_seriada' => $input->tipo_seriada->id,
                        ':status' => $this->Booleano($input->status->id),
                        ':tipo_frecuencia' => $input->tipo_frecuencia->id,
                        ':articulos' => $input->articulos,
                        ':email' => $input->email,
                        ':indexaciones' => $input->indexaciones,
                        ':link' => $input->link,
                        ':area' => $input->area->id,
                        ':mujeres' => $input->mujeres,
                        ':hombres' => $input->hombres,
                        ':tipo_cooperacion' => $input->tipo_cooperacion->id,
                        ':issn' => $input->issn,
                        ':titulo' => $input->titulo,
                        ':created_by' => $this->userid,
                    ); 
                    $query = $this->consult('INSERT INTO publicaciones 
                    (unidad,tipo_publicacion,tipo_seriada,status,tipo_frecuencia,articulos,email,created_by,
                    indexaciones,link,area,mujeres,hombres,tipo_cooperacion,issn,titulo) 
                    VALUES (:unidad,:tipo_publicacion,:tipo_seriada,:status,:tipo_frecuencia,:articulos,:email,:created_by,
                    :indexaciones,:link,:area,:mujeres,:hombres,:tipo_cooperacion,:issn,:titulo)');    
                } else {
                    $dat = array(
                        ':unidad' => $input->unidad,
                        ':tipo_publicacion' => $input->tipo_publicacion->id,
                        ':tipo_noseriada' => $input->tipo_noseriada->id,
                        ':isbn' => $input->isbn,
                        ':created_by' => $this->userid,
                        ':nombre_editor' => $input->nombre_editor,
                        ':email' => $input->email,
                        ':area' => $input->area->id,
                        ':titulo' => $input->titulo,
                    ); 
                    $query = $this->consult('INSERT INTO publicaciones 
                    (unidad,tipo_publicacion,created_by,tipo_noseriada,isbn,nombre_editor,email,area,titulo) 
                    VALUES (:unidad,:tipo_publicacion,:created_by,:tipo_noseriada,:isbn,:nombre_editor,:email,:area,:titulo)');    
                }
                if($query->execute($dat)){
                    $this->httpHeaders = 200;
                }
                break;
            case 'divulgativos_difusion':
                $dat = array(
                    ':unidad' => $input->unidad,
                    ':tipo_producto_divulgativo' => $input->tipo_producto_divulgativo->id,
                    ':fecha' => $input->fecha,
                    ':link' => $input->link,
                    ':area' => $input->area->id,
                    ':titulo' => $input->titulo,
                    ':localizacion' => $input->localizacion,
                    ':mujeres' => $input->mujeres,
                    ':hombres' => $input->hombres,
                    ':tipo_cooperacion' => $input->tipo_cooperacion->id,
                    ':created_by' => $this->userid,
                ); 
                $query = $this->consult('INSERT INTO divulgativos_difusion 
                (unidad,tipo_producto_divulgativo,fecha,link,area,titulo,localizacion,mujeres,hombres,tipo_cooperacion,created_by) 
                VALUES (:unidad,:tipo_producto_divulgativo,:fecha,:link,:area,:titulo,:localizacion,:mujeres,:hombres,
                :tipo_cooperacion,:created_by) ');
                if($query->execute($dat)){
                    $this->httpHeaders = 200;
                }
                break;
            case 'publicaciones_grado':
                $dat = array(
                    ':unidad' => $input->unidad,
                    ':area' => $input->area->id,
                    ':tipo_texto' => $input->tipo_texto->id,
                    ':fecha' => $input->fecha,
                    ':titulo' => $input->titulo,
                    ':mujeres' => $input->mujeres,
                    ':hombres' => $input->hombres,
                    ':pais' => $input->pais->id,
                    ':created_by' => $this->userid,
                ); 
                $query = $this->consult('INSERT INTO publicaciones_grado 
                (unidad,area,tipo_texto,fecha,titulo,mujeres,hombres,pais,created_by) 
                VALUES (:unidad,:area,:tipo_texto,:fecha,:titulo,:mujeres,:hombres,:pais,:created_by) ');
                if($query->execute($dat)){
                    $this->httpHeaders = 200;
                }
                break;
            case 'propiedad_intelectual':
                if($input->patente){$input->patente=$input->patente->id;}
                if($input->modalidad_registro){$input->modalidad_registro=$input->modalidad_registro->id;}
                $dat = array(
                    ':unidad' => $input->unidad,
                    ':tipo_propiedad_intelectual' => $input->tipo_propiedad_intelectual->id,
                    ':modalidad_registro' => $input->modalidad_registro,
                    ':cantidad' => $input->cantidad,
                    ':estado_solicitud' => $input->estado_solicitud->id,
                    ':area' => $input->area->id,
                    ':patente' => $input->patente,
                    ':ubicacion' => $input->ubicacion->id,
                    ':created_by' => $this->userid,
                ); 
                $query = $this->consult('INSERT INTO propiedad_intelectual 
                (unidad,tipo_propiedad_intelectual,modalidad_registro,cantidad,estado_solicitud,area,created_by,patente,ubicacion) 
                VALUES (:unidad,:tipo_propiedad_intelectual,:modalidad_registro,:cantidad,:estado_solicitud,:area,:created_by,:patente,:ubicacion) ');
                if($query->execute($dat)){
                    $this->httpHeaders = 200;
                }
                break;
        }
            
    }

    public function PUT() {
        $this->Permission();
        $input = $this->input;
        switch ($input->caso) {
            case 'proyectos':
                if($input->pais->id) {$input->pais = $input->pais->id;}
                $dat = array(
                    ':titulo' => $input->titulo,
                    ':objetivo' => $input->objetivo,
                    ':tipo_investigacion' => $input->tipo_investigacion->id,
                    ':tipo_proyecto' => $input->tipo_proyecto->id,
                    ':tipo_servic' => $input->tipo_servic->id,
                    ':tipo_producto' => $input->tipo_producto->id,
                    ':area' => $input->area->id,
                    ':estado_avance' => $input->estado_avance->id,
                    ':fecha_inicio' => $input->fecha_inicio,
                    ':fecha_culminacion' => $input->fecha_culminacion,
                    ':fecha_paralizacion' => $input->fecha_paralizacion,
                    ':localizacion' => $input->localizacion,
                    ':tipo_financiamiento' => $input->tipo_financiamiento->id,
                    ':mujeres' => $input->mujeres,
                    ':hombres' => $input->hombres,
                    ':tipo_cooperacion' => $input->tipo_cooperacion->id,
                    ':institucion' => $input->institucion,
                    ':pais' => $input->pais,
                    ':edited_by' => $this->userid,
                    ':id' => $input->id,
                ); 
                $query = $this->consult('UPDATE proyectos SET
                    titulo=:titulo, objetivo=:objetivo, tipo_investigacion=:tipo_investigacion,
                    tipo_proyecto=:tipo_proyecto, tipo_servic=:tipo_servic, tipo_producto=:tipo_producto, edited_by=:edited_by,
                    area=:area, estado_avance=:estado_avance, fecha_inicio=:fecha_inicio, fecha_culminacion=:fecha_culminacion,
                    fecha_paralizacion=:fecha_paralizacion, localizacion=:localizacion, tipo_financiamiento=:tipo_financiamiento,
                    mujeres=:mujeres, hombres=:hombres, tipo_cooperacion=:tipo_cooperacion, institucion=:institucion,
                    pais=:pais, updated_at=now() WHERE id=:id');
                if($query->execute($dat)){
                    $this->httpHeaders = 200;
                }
                break;
            case 'publicaciones':
                if($input->tipo_publicacion->id==1){
                    $dat = array(
                        ':tipo_publicacion' => $input->tipo_publicacion->id,
                        ':tipo_seriada' => $input->tipo_seriada->id,
                        ':status' => $this->Booleano($input->status->id),
                        ':tipo_frecuencia' => $input->tipo_frecuencia->id,
                        ':articulos' => $input->articulos,
                        ':email' => $input->email,
                        ':indexaciones' => $input->indexaciones,
                        ':link' => $input->link,
                        ':area' => $input->area->id,
                        ':mujeres' => $input->mujeres,
                        ':hombres' => $input->hombres,
                        ':tipo_cooperacion' => $input->tipo_cooperacion->id,
                        ':issn' => $input->issn,
                        ':titulo' => $input->titulo,
                        ':edited_by' => $this->userid,
                        ':id' => $input->id,
                    ); 
                    $query = $this->consult('UPDATE publicaciones SET
                        tipo_publicacion=:tipo_publicacion, tipo_seriada=:tipo_seriada, status=:status,
                        tipo_frecuencia=:tipo_frecuencia, articulos=:articulos, email=:email, edited_by=:edited_by,
                        indexaciones=:indexaciones, link=:link, area=:area, mujeres=:mujeres, hombres=:hombres,
                        tipo_cooperacion=:tipo_cooperacion, issn=:issn, titulo=:titulo, updated_at=now() WHERE id=:id');    
                } else {
                    $dat = array(
                        ':tipo_publicacion' => $input->tipo_publicacion->id,
                        ':tipo_noseriada' => $input->tipo_noseriada->id,
                        ':isbn' => $input->isbn,
                        ':edited_by' => $this->userid,
                        ':nombre_editor' => $input->nombre_editor,
                        ':email' => $input->email,
                        ':area' => $input->area->id,
                        ':titulo' => $input->titulo,
                        ':id' => $input->id,
                    ); 
                    $query = $this->consult('UPDATE publicaciones SET
                        tipo_publicacion=:tipo_publicacion, edited_by=:edited_by, 
                        tipo_noseriada=:tipo_noseriada, isbn=:isbn, nombre_editor=:nombre_editor,
                        email=:email, area=:area, titulo=:titulo, updated_at=now() WHERE id=:id');    
                }
                if($query->execute($dat)){
                    $this->httpHeaders = 200;
                }
                break;
            case 'divulgativos_difusion':
                $dat = array(
                    ':tipo_producto_divulgativo' => $input->tipo_producto_divulgativo->id,
                    ':fecha' => $input->fecha,
                    ':link' => $input->link,
                    ':area' => $input->area->id,
                    ':titulo' => $input->titulo,
                    ':localizacion' => $input->localizacion,
                    ':mujeres' => $input->mujeres,
                    ':hombres' => $input->hombres,
                    ':tipo_cooperacion' => $input->tipo_cooperacion->id,
                    ':edited_by' => $this->userid,
                    ':id' => $input->id,
                ); 
                $query = $this->consult('UPDATE divulgativos_difusion SET
                    tipo_producto_divulgativo=:tipo_producto_divulgativo, fecha=:fecha,
                    link=:link, area=:area, titulo=:titulo, localizacion=:localizacion, mujeres=:mujeres, hombres=:hombres,
                    tipo_cooperacion=:tipo_cooperacion, edited_by=:edited_by, updated_at=now() WHERE id=:id');
                if($query->execute($dat)){
                    $this->httpHeaders = 200;
                }
                break;
            case 'publicaciones_grado':
                $dat = array(
                    ':area' => $input->area->id,
                    ':tipo_texto' => $input->tipo_texto->id,
                    ':fecha' => $input->fecha,
                    ':titulo' => $input->titulo,
                    ':mujeres' => $input->mujeres,
                    ':hombres' => $input->hombres,
                    ':pais' => $input->pais->id,
                    ':edited_by' => $this->userid,
                    ':id' => $input->id,
                ); 
                $query = $this->consult('UPDATE publicaciones_grado SET
                    area=:area, tipo_texto=:tipo_texto, fecha=:fecha, titulo=:titulo, mujeres=:mujeres,
                    hombres=:hombres, pais=:pais, edited_by=:edited_by, updated_at=now() WHERE id=:id');
                if($query->execute($dat)){
                    $this->httpHeaders = 200;
                }
                break;
            case 'propiedad_intelectual':
                if($input->patente){$input->patente=$input->patente->id;}
                if($input->modalidad_registro){$input->modalidad_registro=$input->modalidad_registro->id;}
                $dat = array(
                    ':tipo_propiedad_intelectual' => $input->tipo_propiedad_intelectual->id,
                    ':modalidad_registro' => $input->modalidad_registro,
                    ':cantidad' => $input->cantidad,
                    ':estado_solicitud' => $input->estado_solicitud->id,
                    ':area' => $input->area->id,
                    ':edited_by' => $this->userid,
                    ':patente' => $input->patente,
                    ':ubicacion' => $input->ubicacion->id,
                    ':id' => $input->id,
                ); 
                $query = $this->consult('UPDATE propiedad_intelectual SET
                    tipo_propiedad_intelectual=:tipo_propiedad_intelectual, modalidad_registro=:modalidad_registro,
                    cantidad=:cantidad, estado_solicitud=:estado_solicitud, area=:area, patente=:patente, ubicacion=:ubicacion,
                    edited_by=:edited_by, updated_at=now() WHERE id=:id');
                if($query->execute($dat)){
                    $this->httpHeaders = 200;
                }
                break;
        }
            
    }

    public function Del() {
        $this->Permission();
        $input = $this->input;
        switch ($input->caso) {
            case 'proyectos':
                $query = $this->consult('UPDATE proyectos SET edited_by=?, deleted_at=now() WHERE id=?');
                if($query->execute([$this->userid,$this->input->id])){ $this->httpHeaders = 200; }
                break;
            case 'publicaciones':
                $query = $this->consult('UPDATE publicaciones SET edited_by=?, deleted_at=now() WHERE id=?');
                if($query->execute([$this->userid,$this->input->id])){ $this->httpHeaders = 200; }
                break;
            case 'divulgativos_difusion':
                $query = $this->consult('UPDATE divulgativos_difusion SET edited_by=?, deleted_at=now() WHERE id=?');
                if($query->execute([$this->userid,$this->input->id])){ $this->httpHeaders = 200; }
                break;
            case 'publicaciones_grado':
                $query = $this->consult('UPDATE publicaciones_grado SET edited_by=?, deleted_at=now() WHERE id=?');
                if($query->execute([$this->userid,$this->input->id])){ $this->httpHeaders = 200; }
                break;
            case 'propiedad_intelectual':
                $query = $this->consult('UPDATE propiedad_intelectual SET edited_by=?, deleted_at=now() WHERE id=?');
                if($query->execute([$this->userid,$this->input->id])){ $this->httpHeaders = 200; }
                break;
        }

    }

}