<?php namespace App\Models;

use App\Entities\Unidade\Unidade;

class UnidadeModel extends ModelEntity
{
    protected $table = 'unidade';
    protected $primaryKey = 'id';
    protected $returnType = 'array';
    protected $allowedFields = [
        'descricao',
        'id_pessoa_juridica',
        'telemedicina',
        'id_chamefacil_server',
    ];
    protected $useSoftDeletes = false;
    protected $useTimestamps = false;
    protected $skipValidation = true;
    protected $createdField  = 'criado_em';
    protected $updatedField  = 'alterado_em';

    public function registerUnidade(Unidade &$unidade) : void {
        $unidade_data = $unidade->toArray();
        unset($unidade_data['id']);
        $id_new_unidade = $this->insert($unidade_data);
        $unidade->setId($id_new_unidade);
    }

    public function updateUnidadeByPessoaJuridicaID (int $id_pessoa_juridica, Unidade $unidade) : bool {
        $data = $unidade->toArray(true);
        if (count($data) > 0) {
            $binds = ['id_pessoa_juridica' => $id_pessoa_juridica];
            $sql = "
                UPDATE unidade
            ";
            $sql .= $this->generateUpdateSets($data, $binds);
            $sql .= 'WHERE unidade.id_pessoa_juridica = :id_pessoa_juridica:';
            $query = $this->db->query($sql, $binds);
            $errors = $this->errors();
            return !$errors;
        } else {
            return true;
        }
    }

    public function updateIdChameFacilByUnidadeID (int $id_unidade, int $id_chamefacil) {
            $sql = "
                UPDATE unidade
                SET id_chamefacil=$id_chamefacil
                WHERE id=$id_unidade;
            ";
            $query = $this->db->query($sql);
            return $query->affected_rows;
    }

}
