<?php

namespace App\DAO;

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

class ConvenioProcedimentoDAO extends DAO {

	public function getListByUnidadeIdByProcedimentoId(int $idUnidade, $idProcedimento): DAOResponse {

		$dao_response = new DAOResponse();

		$sql = <<<SQL
			select id, id_convenio, id_procedimento, id_unidade
			from convenio_procedimento
			where
				id_unidade = :unidade_id:
				and id_procedimento = :procedimento_id:
				and desativado_por is null
		SQL;

		$binds = [ 
			'unidade_id' => $idUnidade,
			'procedimento_id' => $idProcedimento
		];

		$conn = db_connect();
		$result = $conn->query( $sql, $binds )
			->getResultArray();
		$errors = $conn->error();

		if ($errors ['code'] != 0) {
			$dao_response->setErrors( $errors );
			$dao_response->setData( [ ] );
			$dao_response->setStatus( DAOResponseInterface::DATABASE_CONNECTION_ERROR );
		} else {
			$dao_response->setData( $result );
			$dao_response->setStatus( DAOResponseInterface::SUCESS );
		}

		return $dao_response;

	}

	public function getDadosConvenioProcedimentoID(int $idConvenioProcedimento): DAOResponse {

		$dao_response = new DAOResponse();

		$sql = <<<SQL
			select
				cp.id,cp.id_convenio, c.codigo as cod_convenio, c.descricao as convenio, 
				tc.descricao as tipo_convenio, cp.id_procedimento, p.descricao as procedimento,
				p.id_tipo_procedimento , tp.descricao as tipo_procedimento,
				cp.id_unidade, un.descricao as unidade
			from 
				convenio_procedimento cp, convenio c, procedimento p, tipo_procedimento tp ,
				tipo_convenio tc , unidade un
			where
				cp.id = :convenio_procedimento_id:
				and cp.id_convenio = c.id
				and c.id_tipo_convenio = tc.id
				and cp.id_procedimento = p.id
				and p.id_tipo_procedimento = tp.id
				and cp.id_unidade = un.id
		SQL;

		$binds = [ 
			'convenio_procedimento_id' => $idConvenioProcedimento
		];

		$conn = db_connect();
		$result = $conn->query( $sql, $binds )
			->getResultArray();
		$errors = $conn->error();

		if ($errors ['code'] != 0) {
			$dao_response->setErrors( $errors );
			$dao_response->setData( [ ] );
			$dao_response->setStatus( DAOResponseInterface::DATABASE_CONNECTION_ERROR );
		} else {
			if (count( $result ) == 0) {
				$dao_response->setStatus( DAOResponseInterface::RECORD_NOT_FOUND );
			} else {
				$dao_response->setData( $result );
				$dao_response->setStatus( DAOResponseInterface::SUCESS );
			}
		}

		return $dao_response;

	}

}

