<?php

class Endosso_Model_Coberturas extends Agro_Db_Table_Abstract {
	protected $_name = 'coberturas';
	protected $_schema = 'produto';
	protected $_primary = 'id';
	
	public function fetchCoberturas($Proposta) {
		$dateTime = (new Seguro_Model_Propostas())->getDataTransmissaoPropostaMae($Proposta->id);
		
		$configuracoes = (new Produto_Model_ProdutoCoberturaConfig())->getConfiguracoesPorProdutoData(
			$Proposta->id_produto,
			$dateTime
		);

		if (empty($configuracoes)) {
			return [];
		}

		$idsConfiguracoes = array_column($configuracoes, 'id');

		$Select = $this->select()->setIntegrityCheck(false);
		$Select->from(array('c' => 'produto.coberturas'));
		$Select->join(array('pc' => 'produto.produtos_coberturas'), 'c.id = pc.id_cobertura');
		$Select->join(
			array('pcconfig' => 'produto.produto_cobertura_config'),
			'pcconfig.id_produto = pc.id_produto AND pcconfig.id_cobertura = pc.id_cobertura',
			array('ds_frase_outros_riscos_excluidos', 'ds_frase_condicoes_particulares')
		);
		$Select->where('pcconfig.id IN (?)', $idsConfiguracoes);
		$Select->where('pc.id_produto = ?', $Proposta->id_produto);
		$Select->order('c.ds_nome_cobertura');
		
		return $this->fetchAll($Select);
	}
}