<?php namespace App\Models;

use App\Entities\PessoaJuridica\PessoaJuridica;

class PessoaJuridicaModel extends ModelEntity
{
    protected $table = 'pessoa_juridica';
    protected $primaryKey = 'id';
    protected $returnType = 'array';
    protected $allowedFields = [
        'id_pessoa',
        'nome_fantasia',
        'razao_social',
        'cnpj'
    ];
    protected $useSoftDeletes = false;
    protected $skipValidation = true;
    protected $useTimestamps = false;

    public function registerPessoaJuridica (PessoaJuridica &$pessoaFisica) : void {
        $pessoa_fisica_data = $pessoaFisica->toArray();
        unset($pessoa_fisica_data['id']);
        $id_new_pessoa_fisica = $this->insert($pessoa_fisica_data);
        $pessoaFisica->setId($id_new_pessoa_fisica);
    }

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