<?php


namespace App\DAO;



use App\DAO\DAOResponse\DAOResponse;
use App\DAO\DAOResponse\DAOResponseInterface;


class AdendoDAO extends DAO
{

    public function getAdendoListByConsultaId(int $consulta_id) : DAOResponse
    {
        $dao_response = new DAOResponse();

//        $sql = "SELECT * FROM adendo WHERE consulta_id=:consulta_id:";
        $sql = <<<SQL
            SELECT
                ad.id, ad.descricao, ad.data, ad.hora, ad.consulta_id, pf.nome as executor
            FROM
                adendo ad
            LEFT JOIN usuario us on ad.usuario_id = us.id
            LEFT JOIN pessoa_fisica pf on us.id_pessoa = pf.id_pessoa
            WHERE
                ad.consulta_id = :consulta_id:
        SQL;

        $binds = ["consulta_id" => $consulta_id];

        $adendoQuery = $this->db->query($sql, $binds);

        $error = $this->db->error();
        if ($error && $error['code']) {
            $status_persistence = $error['code'];
            $dao_response_errors = [];
            $dao_response->setErrors($dao_response_errors);
            log_message('error', json_encode($error));
        } else {
            $status_persistence = true
                ? DAOResponseInterface::SUCESS
                : DAOResponseInterface::DATABASE_CONNECTION_ERROR;
        }

        $this->db->close();
        $dao_response->setStatus($status_persistence);
        if ($status_persistence === DAOResponseInterface::SUCESS) {
            $dao_response->setData([
                "adendos" => $adendoQuery->getResultArray()
            ]);
        }
        return $dao_response;
    }

    public function registerAdendo (array $data_post) : DAOResponse {
        $dao_response = new DAOResponse();

        $sql = <<<SQL
            INSERT INTO adendo 
                (descricao, data, hora, consulta_id, usuario_id) 
            VALUES 
                (:descricao:, :data:, :hora:, :consulta_id:, :usuario_id:) 
        SQL;
        $binds = [
            "descricao" => $data_post["descricao"],
            "data" => $data_post["data"],
            "hora" => $data_post["hora"],
            "consulta_id" => $data_post["consulta_id"],
            "usuario_id" => $data_post["usuario_id"]
        ];

        $adendoQuery = $this->db->query($sql, $binds);

        $error = $this->db->error();
        if ($error && $error['code']) {
            $status_persistence = $error['code'];
            $dao_response_errors = [];
            $dao_response->setErrors($dao_response_errors);
            log_message('error', json_encode($error));
        } else {
            $status_persistence = true
                ? DAOResponseInterface::SUCESS
                : DAOResponseInterface::DATABASE_CONNECTION_ERROR;
        }
        $this->db->close();
        $dao_response->setStatus($status_persistence);
        if ($status_persistence === DAOResponseInterface::SUCESS) {
            $dao_response->setData($adendoQuery);
        }
        return $dao_response;
    }

}
