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

class Tic 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 vorganizaciones");
                $query->execute();    
            } else {
                $query = $this->consult("SELECT * FROM vorganizaciones WHERE userid=?");
                $query->execute([$this->userid]);    
            }
            $this->data = $query->fetchAll(PDO::FETCH_ASSOC);;
            $this->httpHeaders = 200;
        } else {
            $query = $this->consult("SELECT * FROM tic_internet WHERE organizacion=?");
            $query->execute([$this->id]);
            $internet = $query->fetchAll(PDO::FETCH_ASSOC);
            $query = $this->consult("SELECT * FROM tic_remoto WHERE organizacion=?");
            $query->execute([$this->id]);
            $remoto = $query->fetchAll(PDO::FETCH_ASSOC);
            $query = $this->consult("SELECT * FROM tic_seguridad WHERE organizacion=?");
            $query->execute([$this->id]);
            $seguridad = $query->fetchAll(PDO::FETCH_ASSOC);
            $query = $this->consult("SELECT * FROM vtic_infraestructura WHERE organizacion=?");
            $query->execute([$this->id]);
            $infraestructura = $query->fetchAll(PDO::FETCH_ASSOC);
            $query = $this->consult("SELECT * FROM tic_mantenimiento WHERE organizacion=?");
            $query->execute([$this->id]);
            $mantenimiento = $query->fetchAll(PDO::FETCH_ASSOC);
            $this->data = array(
                'internet' => $internet,
                'remoto' => $remoto,
                'seguridad' => $seguridad,
                'infraestructura' => $infraestructura,
                'mantenimiento' => $mantenimiento,
                'tipo_centro_datos' => $this->PARM->tipo_centro_datos(),
                'tipo_antiguedad' => $this->PARM->tipo_antiguedad(),
                'tipo_sistema_operativo' => $this->PARM->tipo_sistema_operativo(),
                'tipo_estacion_trabjo' => $this->PARM->tipo_estacion_trabjo(),
                'tipo_conexion' => $this->PARM->tipo_conexion(),
                'tipo_velocidad' => $this->PARM->tipo_velocidad(),
                'condicion_unidad' => $this->PARM->condicion_unidad(),               
            );
            $this->httpHeaders = 200;
        }
    }

    public function POST() {
        $this->Permission();
        $input = $this->input;
        switch ($input->caso) {
                case 'internet':
                    $values = $input->items;
                    $dat = array(
                        ':organizacion' => $input->organizacion,
                        ':acceso' => $this->Booleano($values[0]->respuesta),
                        ':estaciones' => $values[1]->respuesta,
                        ':estaciones_internet' => $values[2]->respuesta,
                        ':velocidad' => $values[3]->respuesta->id,
                        ':edited_by' => $this->userid,
                    ); 
                    $query = $this->consult('UPDATE tic_internet SET 
                        acceso=:acceso, estaciones=:estaciones, estaciones_internet=:estaciones_internet, velocidad=:velocidad,
                        edited_by=:edited_by,updated_at=now() WHERE organizacion=:organizacion');
                    $query->execute($dat);  
                    $this->httpHeaders = 200;
                    break;
                case 'remoto':
                    $values = $input->items;
                    $dat = array(
                        ':organizacion' => $input->organizacion,
                        ':correo' => $this->Booleano($values[0]->respuesta),
                        ':documentos' => $this->Booleano($values[1]->respuesta),
                        ':aplicaciones' => $this->Booleano($values[2]->respuesta),
                        ':base_datos' => $this->Booleano($values[3]->respuesta),
                        ':otro' => $values[4]->respuesta,
                        ':edited_by' => $this->userid,
                    ); 
                    $query = $this->consult('UPDATE tic_remoto SET 
                        correo=:correo, documentos=:documentos, aplicaciones=:aplicaciones, base_datos=:base_datos,
                        otro=:otro, edited_by=:edited_by,updated_at=now() WHERE organizacion=:organizacion');
                    $query->execute($dat);  
                    $this->httpHeaders = 200;
                    break;
                case 'seguridad':
                    $values = $input->items;
                    $dat = array(
                        ':organizacion' => $input->organizacion,
                        ':clave' => $this->Booleano($values[0]->respuesta),
                        ':biometricos' => $this->Booleano($values[1]->respuesta),
                        ':combinacion' => $this->Booleano($values[2]->respuesta),
                        ':encriptado' => $this->Booleano($values[3]->respuesta),
                        ':copia' => $this->Booleano($values[4]->respuesta),
                        ':control' => $this->Booleano($values[5]->respuesta),
                        ':vpn' => $this->Booleano($values[6]->respuesta),
                        ':sistema' => $this->Booleano($values[7]->respuesta),
                        ':log' => $this->Booleano($values[8]->respuesta),
                        ':edited_by' => $this->userid,
                    ); 
                    $query = $this->consult('UPDATE tic_seguridad SET 
                        clave=:clave, biometricos=:biometricos, combinacion=:combinacion, encriptado=:encriptado,
                        copia=:copia, control=:control, vpn=:vpn, sistema=:sistema, log=:log,
                        edited_by=:edited_by,updated_at=now() WHERE organizacion=:organizacion');
                    $query->execute($dat);  
                    $this->httpHeaders = 200;
                    break;
                case 'infraestructura':
                    $dat = array(
                        ':centro_datos' => $input->centro_datos->id,
                        ':sistema_operativo' => $input->sistema_operativo->id,
                        ':antiguedad' => $input->antiguedad->id,
                        ':servidores' => $input->servidores,
                        ':organizacion' => $input->organizacion,
                        ':created_by' => $this->userid,
                    ); 
                    $query = $this->consult('INSERT INTO tic_infraestructura 
                    (organizacion,centro_datos,sistema_operativo,antiguedad,servidores,created_by,created_at) 
                    VALUES (:organizacion,:centro_datos,:sistema_operativo,:antiguedad,:servidores,:created_by,now())');
                    if($query->execute($dat)){
                        $this->httpHeaders = 200;
                    }
                    break;
                case 'mantenimiento':
                    $values = $input->items;
                    for ($i=0; $i < 6; $i++) { 
                        $query = $this->consult('UPDATE tic_mantenimiento SET 
                                interno'.$i.'=?, edited_by=?,updated_at=now() WHERE organizacion=?');                   
                        $query->execute([$values[$i]->interno,$this->userid,$input->organizacion]);    
                    }
                    $this->httpHeaders = 200;
                    break;
                }
    
    }
    
    public function Del() {
        $this->Permission();
        $input = $this->input;
        switch ($input->caso) {
            case 'infraestructura':
                $query = $this->consult('UPDATE tic_infraestructura SET edited_by=?, deleted_at=now() WHERE id=?');
                if($query->execute([$this->userid,$this->input->id])){ $this->httpHeaders = 200; }
                break;
        }
    }

}