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

class Personal extends BD {

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

    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,
                'clasificacion' => $this->PARM->clasificacion(),
                'modalidad_contrato' => $this->PARM->modalidad_contrato(),
                'tipo_personal' => $this->PARM->tipo_personal(),               
            );
            $this->httpHeaders = 200;
        } else {
            $query = $this->consult("SELECT * FROM vpersonal WHERE unidad=?");
            $query->execute([$this->id]);
            $this->data = $query->fetchAll(PDO::FETCH_ASSOC);
            $this->httpHeaders = 200;
        }
    }

    public function Personal() {
        $this->Permission();
        $input = $this->input;
        $this->RECITVEN->Personal($input->recitven);
        $query = $this->consult("SELECT * FROM vpersonal WHERE id_institucion=? AND unidad IS NULL");
        $query->execute([$input->recitven]);
        $this->data = $query->fetchAll(PDO::FETCH_ASSOC);
        $this->httpHeaders = 200;
    }

    public function Agregar() {
        $this->Permission();
        $input = $this->input;
        foreach ($input->selected as $sel) {
            $query = $this->consult('UPDATE personal SET edited_by=?, unidad=?, updated_at=now() WHERE cedula=?');
            $query->execute([$this->userid,$input->id,$sel->cedula]);
        }
        $this->httpHeaders = 200;
    }

    public function Del() {
        $this->Permission();
        $input = $this->input;
        $query = $this->consult('UPDATE personal SET edited_by=?, unidad=NULL WHERE cedula=?');
        if($query->execute([$this->userid,$this->input->cedula])){
            $this->httpHeaders = 200; 
        }
    }

    public function POST() {
        $this->Permission();
        $input = $this->input;
        foreach ($input as $persona) {
            $dat = array(
                ':cedula' => $persona->cedula,
                ':cargo' => $persona->cargo,
                ':tipo' => $persona->tipo->id,
                ':clasificacion' => $persona->clasificacion->id,
                ':modalidad_contrato' => $persona->modalidad_contrato->id,               
                ':edited_by' => $this->userid,
            ); 
            $query = $this->consult('UPDATE personal SET 
                cargo=:cargo, clasificacion=:clasificacion, modalidad_contrato=:modalidad_contrato, tipo=:tipo,
                edited_by=:edited_by, updated_at=now() WHERE cedula=:cedula');            
            $query->execute($dat);
        }
        $this->data = $dat;
        $this->httpHeaders = 200;
    }

}