<?php
/*
*
* @author Tonismar
* @date 04/06/2018
*
*/
class Regulacao_Model_Lf032ItensSegurados extends Agro_Db_Table_Abstract {
    protected $_rowClass = 'Regulacao_Model_Row_Lf032ItemSegurado';
    protected $_schema 	= 'regulacao';
    protected $_name 	= 'lf032_itens_segurados';
    protected $_primary = 'id_laudo_final_item_segurado';
    public 	  $_order 	= 'id_laudo_final_item_segurado';

    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(
                'lfis032'=>$this->_schema.'.'.$this->_name
            ),
            'lfis.id = lfis032.id_laudo_final_item_segurado',
            array(
                'nr_amostras',
                'nr_cachos_percent_perda_0',
                'vl_percent_perda_0' => new Zend_Db_Expr('case when fl_floracao = \'pos\' then (nr_cachos_percent_perda_0 * 0) else 0 end'),
                'nr_cachos_percent_perda_5',
                'vl_percent_perda_5' => new Zend_Db_Expr('case when fl_floracao = \'pos\' then (nr_cachos_percent_perda_5 * 10) else (nr_cachos_percent_perda_5 * 5) end'),
                'nr_cachos_percent_perda_10',
                'vl_percent_perda_10' => new Zend_Db_Expr('case when fl_floracao = \'pos\' then (nr_cachos_percent_perda_10 * 20) else (nr_cachos_percent_perda_10 * 10) end'),
                'nr_cachos_percent_perda_20',
                'vl_percent_perda_20' => new Zend_Db_Expr('case when fl_floracao = \'pos\' then (nr_cachos_percent_perda_20 * 40) else (nr_cachos_percent_perda_20 * 20) end'),
                'nr_cachos_percent_perda_30',
                'vl_percent_perda_30' => new Zend_Db_Expr('case when fl_floracao = \'pos\' then (nr_cachos_percent_perda_30 * 60) else (nr_cachos_percent_perda_30 * 30) end'),
                'nr_cachos_percent_perda_40',
                'vl_percent_perda_40' => new Zend_Db_Expr('case when fl_floracao = \'pos\' then (nr_cachos_percent_perda_40 * 80) else (nr_cachos_percent_perda_40 * 40) end'),
                'nr_cachos_percent_perda_50',
                'vl_percent_perda_50' => new Zend_Db_Expr('case when fl_floracao = \'pos\' then (nr_cachos_percent_perda_50 * 100) else (nr_cachos_percent_perda_50 * 50) end'),
                'nr_cachos_percent_perda_60',
                'vl_percent_perda_60' => new Zend_Db_Expr('case when fl_floracao = \'pos\' then (nr_cachos_percent_perda_60 * 100) else (nr_cachos_percent_perda_60 * 60) end'),
                'nr_cachos_percent_perda_70',
                'vl_percent_perda_70' => new Zend_Db_Expr('case when fl_floracao = \'pos\' then (nr_cachos_percent_perda_70 * 100) else (nr_cachos_percent_perda_70 * 70) end'),
                'nr_cachos_percent_perda_80',
                'vl_percent_perda_80' => new Zend_Db_Expr('case when fl_floracao = \'pos\' then (nr_cachos_percent_perda_80 * 100) else (nr_cachos_percent_perda_80 * 80) end'),
                'nr_cachos_percent_perda_90',
                'vl_percent_perda_90' => new Zend_Db_Expr('case when fl_floracao = \'pos\' then (nr_cachos_percent_perda_90 * 100) else (nr_cachos_percent_perda_90 * 90) end'),
                'nr_cachos_percent_perda_100',
                'vl_percent_perda_100' => '(nr_cachos_percent_perda_100 * 100)',
                'nr_total_cachos' => new Zend_Db_Expr('(
                    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)
                )'),
                'vl_percent_perda_soma' => new Zend_Db_Expr('case when fl_floracao = \'pos\' then (
                    (coalesce(nr_cachos_percent_perda_5, 0) * 10) +
                    (coalesce(nr_cachos_percent_perda_10, 0) * 20) +
                    (coalesce(nr_cachos_percent_perda_20, 0) * 40) +
                    (coalesce(nr_cachos_percent_perda_30, 0) * 60) +
                    (coalesce(nr_cachos_percent_perda_40, 0) * 80) +
                    (coalesce(nr_cachos_percent_perda_50, 0) * 100) +
                    (coalesce(nr_cachos_percent_perda_60, 0) * 100) +
                    (coalesce(nr_cachos_percent_perda_70, 0) * 100) +
                    (coalesce(nr_cachos_percent_perda_80, 0) * 100) +
                    (coalesce(nr_cachos_percent_perda_90, 0) * 100) +
                    (coalesce(nr_cachos_percent_perda_100, 0) * 100)
                ) else (
                    (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)
                ) end'),
                '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);
    }    
}