<?php
/**
 * Model
 *
 * Laudo final Tipo LF005 / Safra17 - Item Segurado
 *
 * @author Fernando Nunes
 * @date 21/07/2011
 *
 */
class Regulacao_Model_Lf005ItensSegurados extends Agro_Db_Table_Abstract {
	protected $_rowClass = 'Regulacao_Model_Row_Lf005ItemSegurado';
	protected $_schema 	= 'regulacao';
	protected $_name 	= 'lf005_itens_segurados';
	protected $_primary = 'id_laudo_final_item_segurado';
	public 	  $_order 	= 'id_laudo_final_item_segurado';
	
	/*
	 * Método save adaptado para trabalhar com sincronia da TAGH
	 */
	public function saveTagh($dados) {
		$Model_LaudosFinaisItensSegurados = new Sinistro2_Model_LaudosFinaisItensSegurados();
		
		$idLaudoFinalItemSegurado = $Model_LaudosFinaisItensSegurados->save($dados);
		if ($idLaudoFinalItemSegurado) {
			if($dados['fl_nao_vistoriada'] == '1'){
				return $idLaudoFinalItemSegurado;
			}
			
			try {
				
		    	$Row = $this->getRow($idLaudoFinalItemSegurado);

    		    $Row->id_laudo_final_item_segurado  = $idLaudoFinalItemSegurado;
                $Row->nr_amostras                   = count($dados['fotos']);
				$Row->fl_floracao                   = $dados['fl_floracao'];
				$Row->id_estadio_fenologico         = $dados['id_estadio_fenologico'];
                $Row->fl_indenizacao_fitossanitaria = $dados['fl_indenizacao_fitossanitaria'];
                $Row->nr_cachos_percent_perda_0     = $dados['nr_cachos_percent_perda_0']  ? $dados['nr_cachos_percent_perda_0'] : 0;
                $Row->nr_cachos_percent_perda_5     = $dados['nr_cachos_percent_perda_5']  ? $dados['nr_cachos_percent_perda_5'] : 0;
                $Row->nr_cachos_percent_perda_10    = $dados['nr_cachos_percent_perda_10'] ? $dados['nr_cachos_percent_perda_10'] : 0;
                $Row->nr_cachos_percent_perda_20    = $dados['nr_cachos_percent_perda_20'] ? $dados['nr_cachos_percent_perda_20'] : 0;
                $Row->nr_cachos_percent_perda_30    = $dados['nr_cachos_percent_perda_30'] ? $dados['nr_cachos_percent_perda_30'] : 0;
                $Row->nr_cachos_percent_perda_40    = $dados['nr_cachos_percent_perda_40'] ? $dados['nr_cachos_percent_perda_40'] : 0;
                $Row->nr_cachos_percent_perda_50    = $dados['nr_cachos_percent_perda_50'] ? $dados['nr_cachos_percent_perda_50'] : 0;
                $Row->nr_cachos_percent_perda_60    = $dados['nr_cachos_percent_perda_60'] ? $dados['nr_cachos_percent_perda_60'] : 0;
                $Row->nr_cachos_percent_perda_70    = $dados['nr_cachos_percent_perda_70'] ? $dados['nr_cachos_percent_perda_70'] : 0;
                $Row->nr_cachos_percent_perda_80    = $dados['nr_cachos_percent_perda_80'] ? $dados['nr_cachos_percent_perda_80'] : 0;
                $Row->nr_cachos_percent_perda_90    = $dados['nr_cachos_percent_perda_90'] ? $dados['nr_cachos_percent_perda_90'] : 0;
                $Row->nr_cachos_percent_perda_100   = $dados['nr_cachos_percent_perda_100']? $dados['nr_cachos_percent_perda_100'] : 0;

    			$Row->save();

    			return $idLaudoFinalItemSegurado;

    		} catch (Exception $e) {
    			$this->setMessage($e->getMessage());
    		    return false;
    		}
		}
	}

	public function save($dados, $item, $dadosItem, &$fileUpload=TRUE) {
		$Model_LaudosFinaisItensSegurados = new Sinistro2_Model_LaudosFinaisItensSegurados();

	    $dados['id_item_segurado']                = $item;
	    $dados['vl_area_sinistrada']              = ($dadosItem['vl_area_sinistrada_' . $item] ? $dadosItem['vl_area_sinistrada_' . $item] : 0);
	    $dados['ds_coordenadas_geograficas']      = $dadosItem['ds_coordenadas_geograficas_' . $item];
	    $dados['vl_percent_colhido']              = $dadosItem['vl_percent_colhido_' . $item];
	    $dados['vl_percent_perdas']               = $dadosItem['vl_percent_perdas_' . $item];
	    $dados['fl_nao_vistoriada']               = $dadosItem['fl_nao_vistoriada_' . $item];
	    $dados['id_motivo_quadra_nao_vistoriada'] = $dadosItem['id_motivo_quadra_nao_vistoriada_' . $item];

	    $idLaudoFinalItemSegurado = $Model_LaudosFinaisItensSegurados->save($dados, $fileUpload, $msg);
	    if($idLaudoFinalItemSegurado) {

	    	if($dados['fl_nao_vistoriada'] == '1'){
	    		return $idLaudoFinalItemSegurado;
	    	}

    		try {

    		    $Row = $this->getRow($idLaudoFinalItemSegurado);

    		    $Row->id_laudo_final_item_segurado  = $idLaudoFinalItemSegurado;
                $Row->nr_amostras                   = $dados['nr_amostras_' . $item];
                $Row->fl_floracao                   = $dadosItem['fl_floracao_' . $item];
                $Row->id_estadio_fenologico         = $dadosItem['id_estadio_fenologico_' . $item];
                $Row->fl_indenizacao_fitossanitaria = $dadosItem['fl_indenizacao_fitossanitaria_' . $item];
                $Row->nr_cachos_percent_perda_0     = $dadosItem['nr_cachos_percent_perda_0_' . $item]  ? $dadosItem['nr_cachos_percent_perda_0_' . $item] : 0;
                $Row->nr_cachos_percent_perda_5     = $dadosItem['nr_cachos_percent_perda_5_' . $item]  ? $dadosItem['nr_cachos_percent_perda_5_' . $item] : 0;
                $Row->nr_cachos_percent_perda_10    = $dadosItem['nr_cachos_percent_perda_10_' . $item] ? $dadosItem['nr_cachos_percent_perda_10_' . $item] : 0;
                $Row->nr_cachos_percent_perda_20    = $dadosItem['nr_cachos_percent_perda_20_' . $item] ? $dadosItem['nr_cachos_percent_perda_20_' . $item] : 0;
                $Row->nr_cachos_percent_perda_30    = $dadosItem['nr_cachos_percent_perda_30_' . $item] ? $dadosItem['nr_cachos_percent_perda_30_' . $item] : 0;
                $Row->nr_cachos_percent_perda_40    = $dadosItem['nr_cachos_percent_perda_40_' . $item] ? $dadosItem['nr_cachos_percent_perda_40_' . $item] : 0;
                $Row->nr_cachos_percent_perda_50    = $dadosItem['nr_cachos_percent_perda_50_' . $item] ? $dadosItem['nr_cachos_percent_perda_50_' . $item] : 0;
                $Row->nr_cachos_percent_perda_60    = $dadosItem['nr_cachos_percent_perda_60_' . $item] ? $dadosItem['nr_cachos_percent_perda_60_' . $item] : 0;
                $Row->nr_cachos_percent_perda_70    = $dadosItem['nr_cachos_percent_perda_70_' . $item] ? $dadosItem['nr_cachos_percent_perda_70_' . $item] : 0;
                $Row->nr_cachos_percent_perda_80    = $dadosItem['nr_cachos_percent_perda_80_' . $item] ? $dadosItem['nr_cachos_percent_perda_80_' . $item] : 0;
                $Row->nr_cachos_percent_perda_90    = $dadosItem['nr_cachos_percent_perda_90_' . $item] ? $dadosItem['nr_cachos_percent_perda_90_' . $item] : 0;
                $Row->nr_cachos_percent_perda_100   = $dadosItem['nr_cachos_percent_perda_100_' . $item]? $dadosItem['nr_cachos_percent_perda_100_' . $item] : 0;

    			$Row->save();

    			return $idLaudoFinalItemSegurado;

    		} catch (Exception $e) {
    			$this->setMessage($e->getMessage());
    		    return false;
    		}
	    } else {
	    	$this->setMessage($Model_LaudosFinaisItensSegurados->getMessages());
	        return false;
	    }
	}

	public function getDataLaudoFinalItemSeguradox($idLaudoFinal) {
		$ModelAvisosRelacionados = new Sinistro2_Model_LaudosFinaisItensSeguradosAvisosRelacionados();

		$Model_LaudosFinaisItensSeguradosFuncionarios = new Sinistro2_Model_LaudosFinaisItensSeguradosFuncionarios();
		$vistoriadores = $Model_LaudosFinaisItensSeguradosFuncionarios->getArrayVistoriadoresByIdLaudoFinalItemSegurado($dataLaudoFinalItemSegurado['id']);

		if(count($vistoriadores) > 0) {
			$dataLaudoFinalItemSegurado['vistoriadores'] = $vistoriadores;
		}

		$avisos_relacionados = $ModelAvisosRelacionados->fetchAll("id_laudo_final_item_segurado=".$dataLaudoFinalItemSegurado['id']);

		$dataLaudoFinalItemSegurado['avisos_relacionados'] = array();

		if ($avisos_relacionados){
			foreach ($avisos_relacionados  as $aviso){
				$dataLaudoFinalItemSegurado['avisos_relacionados'][] = $aviso["id_aviso"];
			}
		}

		return $dataLaudoFinalItemSegurado;
	}

    public function getDataLaudoFinalItemSegurado($idLaudoFinal) {

    	$ModelAvisosRelacionados                      = new Sinistro2_Model_LaudosFinaisItensSeguradosAvisosRelacionados();
    	$Model_LaudosFinaisItensSeguradosFuncionarios = new Sinistro2_Model_LaudosFinaisItensSeguradosFuncionarios();
        $Model_LaudosFinaisItensSegurados             = new Sinistro2_Model_LaudosFinaisItensSegurados();
		$Model_ItensSegurados                         = new Seguro_Model_ItensSegurados();
        //$DataGeneralizacao = $Model_LaudosFinaisItensSegurados->getDataLaudoFinalItemSegurado($idLaudoFinal);

        $select = $this->select()->setIntegrityCheck(false);
        $select->from(
        		array(
        				'lfis'=> 'sinistro.laudos_finais_itens_segurados'
        		),
        		array(
        				'id',
        				'id_item_segurado',
        				'vl_percent_perdas',
        				'fl_nao_vistoriada',
        				'id_motivo_quadra_nao_vistoriada',
        				'dt_vistoria',
        				'fl_assinatura_regulador',
        				'fl_assinatura_segurado',
        				'ds_observacao',
        				'ds_aspectos_gerais_cultura',
        				'vl_percent_colhido',
        				'vl_area_sinistrada',
        				'vl_percent_area_afetada',
        				'ds_coordenadas_geograficas',
        				"to_char(dt_vistoria, 'dd/mm/yyyy') as dt_vistoria_data",
        				"to_char(dt_vistoria, 'HH24') as dt_vistoria_hora",
        				"to_char(dt_vistoria, 'MI') as dt_vistoria_minutos",
        				"vl_rendimento_final_lavoura",
        				"fl_avalia_danos_anteriores",
        				'ds_observacao_assinatura_regulador',
        				'ds_observacao_assinatura_segurado',
        				'vl_ha_area_afetada',
        				'ds_nome_laudo_fisico',
        				'vl_percent_perdas_chocho',
        				'vl_percent_colhido_chocho'
        		)
        );

        $select->joinLeft(
        		array(
        				'lfis005'=>$this->_schema.'.'.$this->_name
        		),
        		'lfis.id = lfis005.id_laudo_final_item_segurado',
        		array(
        				'nr_amostras',
        				'nr_cachos_percent_perda_0',
        				'(nr_cachos_percent_perda_0 * 0) as vl_percent_perda_0',
        				'nr_cachos_percent_perda_5',
        				'(nr_cachos_percent_perda_5 * 5) as vl_percent_perda_5',
        				'nr_cachos_percent_perda_10',
        				'(nr_cachos_percent_perda_10 * 10) as vl_percent_perda_10',
        				'nr_cachos_percent_perda_20',
        				'(nr_cachos_percent_perda_20 * 20) as vl_percent_perda_20',
        				'nr_cachos_percent_perda_30',
        				'(nr_cachos_percent_perda_30 * 30) as vl_percent_perda_30',
        				'nr_cachos_percent_perda_40',
        				'(nr_cachos_percent_perda_40 * 40) as vl_percent_perda_40',
        				'nr_cachos_percent_perda_50',
        				'(nr_cachos_percent_perda_50 * 50) as vl_percent_perda_50',
        				'nr_cachos_percent_perda_60',
        				'(nr_cachos_percent_perda_60 * 60) as vl_percent_perda_60',
        				'nr_cachos_percent_perda_70',
        				'(nr_cachos_percent_perda_70 * 70) as vl_percent_perda_70',
        				'nr_cachos_percent_perda_80',
        				'(nr_cachos_percent_perda_80 * 80) as vl_percent_perda_80',
        				'nr_cachos_percent_perda_90',
        				'(nr_cachos_percent_perda_90 * 90) as vl_percent_perda_90',
        				'nr_cachos_percent_perda_100',
        				'(nr_cachos_percent_perda_100 * 100) as vl_percent_perda_100',
        				'(
                    coalesce(nr_cachos_percent_perda_0, 0) +
                    coalesce(nr_cachos_percent_perda_5, 0) +
                    coalesce(nr_cachos_percent_perda_10, 0) +
                    coalesce(nr_cachos_percent_perda_20, 0) +
                    coalesce(nr_cachos_percent_perda_30, 0) +
                    coalesce(nr_cachos_percent_perda_40, 0) +
                    coalesce(nr_cachos_percent_perda_50, 0) +
                    coalesce(nr_cachos_percent_perda_60, 0) +
                    coalesce(nr_cachos_percent_perda_70, 0) +
                    coalesce(nr_cachos_percent_perda_80, 0) +
                    coalesce(nr_cachos_percent_perda_90, 0) +
                    coalesce(nr_cachos_percent_perda_100, 0)
                ) as nr_total_cachos',
        				'(
                    (coalesce(nr_cachos_percent_perda_5, 0) * 5) +
                    (coalesce(nr_cachos_percent_perda_10, 0) * 10) +
                    (coalesce(nr_cachos_percent_perda_20, 0) * 20) +
                    (coalesce(nr_cachos_percent_perda_30, 0) * 30) +
                    (coalesce(nr_cachos_percent_perda_40, 0) * 40) +
                    (coalesce(nr_cachos_percent_perda_50, 0) * 50) +
                    (coalesce(nr_cachos_percent_perda_60, 0) * 60) +
                    (coalesce(nr_cachos_percent_perda_70, 0) * 70) +
                    (coalesce(nr_cachos_percent_perda_80, 0) * 80) +
                    (coalesce(nr_cachos_percent_perda_90, 0) * 90) +
                    (coalesce(nr_cachos_percent_perda_100, 0) * 100)
                ) as vl_percent_perda_soma',
        				'fl_indenizacao_fitossanitaria',
        				'fl_floracao',
        				'id_estadio_fenologico'
        		)
        );

        $select->where('id_laudo_final = ?', $idLaudoFinal);

        $dataLaudoFinalItemSegurado = Agro_Db_Table_Abstract::getDefaultAdapter()->fetchAll($select);

        $vistoriadores       = $Model_LaudosFinaisItensSeguradosFuncionarios->getArrayVistoriadoresByIdLaudoFinalItemSegurado($dataLaudoFinalItemSegurado[0]['id']);
        $auxiliares          = $Model_LaudosFinaisItensSeguradosFuncionarios->getArrayVistoriadoresByIdLaudoFinalItemSegurado($dataLaudoFinalItemSegurado[0]['id'], true);
        $avisos_relacionados = $ModelAvisosRelacionados->fetchAll("id_laudo_final_item_segurado=".$dataLaudoFinalItemSegurado[0]['id']);

        /*
        foreach($Rs as $chave => $dados){
        	$arr[] = array_merge($dados, $dataLaudoFinalItemSegurado[$chave]);
        }
        */

        if(count($vistoriadores) > 0) {
        	$dataLaudoFinalItemSegurado['0']['vistoriadores'] = $vistoriadores;
        }

        if(count($auxiliares) > 0) {
        	$dataLaudoFinalItemSegurado['0']['auxiliares'] = $auxiliares;
        }

		if ($avisos_relacionados){
        	$dataLaudoFinalItemSegurado['avisos_relacionados'] = array();
        	foreach ($avisos_relacionados  as $aviso){
        		$dataLaudoFinalItemSegurado['0']['avisos_relacionados'][] = $aviso["id_aviso"];
        	}
        }

        return $dataLaudoFinalItemSegurado;
    }

	public function delete($id_laudo_final){
		parent::delete($id_laudo_final, "id_laudo_final");
	}

	public function get($idLaudoFinalItemSegurado){
		$data = null;
		if($idLaudoFinalItemSegurado){
			$data = $this->fetchRow($this->getAdapter()->quoteInto('id = ?',$idLaudoFinalItemSegurado));
		}
		return $data;
	}

	public function getNomeLaudoFisico($idLaudoFinalItemSegurado) {
		$sql = "select ds_nome_laudo_fisico from sinistro.laudos_finais_itens_segurados  where id={$idLaudoFinalItemSegurado}";
		return $this->_db->fetchOne($sql);
	}
}
