<?php

class Sistema_Model_VistoriasLaudosFinais extends Agro_Db_Table_Abstract {
	protected $_schema = 'sistema';
	protected $_name = 'vistorias_laudos_finais';
	protected $_primary = array('id_vistoria','id_laudo_final');
	protected $_sequence = false;

	public function save(array $data) {
		$Row = $this->find($data['id_vistoria'], $data['id_laudo_final'])->current();
		if (!$Row) $Row = $this->createRow();

		$Row->id_laudo_final = $data['id_laudo_final'];
		$Row->id_vistoria = $data['id_vistoria'];

		return $Row->save();
	}

	public function getVistFinaisByPropostaCobertura($idProposta, $idCobertura){
		$data = array();

		if($idProposta && $idCobertura) {
			$select = $this->select();
			$select->setIntegrityCheck(false);

			$select->from(array('av'=>'sinistro.avisos'), false);
			$select->join(array('va'=>'sinistro.vistorias_avisos'), 'av.id = va.id_aviso', 'va.id_vistoria');
			$select->join(array('ae'=>'sinistro.avisos_eventos'), 'av.id = ae.id_aviso', false);
			$select->join(array('ce'=>'produto.coberturas_eventos'), 'ae.id_evento = ce.id_evento',false);
			$select->join(array('vc'=>'sistema.vistorias_coberturas'), 'vc.id_cobertura = ce.id_cobertura and vc.id_vistoria = va.id_vistoria',false);
			$select->join(array('vlf'=>'sistema.vistorias_laudos_finais'), 'vlf.id_vistoria = va.id_vistoria',false);
			$select->join(array('lfis'=>'sinistro.laudos_finais_itens_segurados'), 'lfis.id_laudo_final = vlf.id_laudo_final', 'to_char(min(dt_vistoria), \'dd/MM/yyyy\') as dt_vistoria_min, to_char(max(dt_vistoria), \'dd/MM/yyyy\') as dt_vistoria_max');
			$select->where('av.id_proposta = ?', $idProposta);
			$select->where('vc.id_cobertura = ?', $idCobertura);
			$select->where('av.fl_ativo = true');
			$select->group('va.id_vistoria');

			$rs = $this->fetchAll($select);
			if ($rs) {
				$data = $rs->toArray();
			}
		}

		return $data;
	}

	public function existeVinculo($id_vistoria, $id_laudo_final){
		$count = $this->fetchAll(" id_vistoria = $id_vistoria and id_laudo_final = $id_laudo_final")->count();
		return ($count > 0 ? true : false);
	}

	public function delete($idVistoria) {
		$this->_db->query("delete from sistema.vistorias_laudos_finais where id_vistoria = $idVistoria");
	}

	public function getLaudosByVistoria($idVistoria) {
		$return = null;

		if ($idVistoria) {
			$Select = $this->select()->setIntegrityCheck(false);
			$Select->from(array('vlp' => 'sistema.vistorias_laudos_finais'), false);
			$Select->join(array('lf' => 'sinistro.laudos_finais'), 'vlp.id_laudo_final = lf.id', 'id as id_laudo');
			$Select->join(array('s' => 'sistema.status'), 'lf.id_status = s.id', 'ds_chave');
			$Select->where('vlp.id_vistoria = ?', $idVistoria);
			$status = $this->fetchRow($Select);

			if ($status) {
				return $status;
			}
		}
		return $return;
	}

	public function getVistoriaByLaudo($idLaudo) {
		$select = $this->select()->setIntegrityCheck(false);
		$select->from(array('vlf' => 'sistema.vistorias_laudos_finais'), 'id_vistoria');
		$select->where('vlf.id_laudo_final = ?', $idLaudo);
		$select->where('vlf.fl_ativo = ?', true);

		$Row = $this->fetchRow($select);

		return $Row->id_vistoria;
	}
}
