<?php

class Regulacao_Model_Lf042ItensSegurados extends Agro_Db_Table_Abstract
{
    protected $_rowClass = 'Regulacao_Model_Row_Lf042ItemSegurado';
    protected $_schema = 'regulacao';
    protected $_name = 'lf042_itens_segurados';
    protected $_primary = 'id_laudo_final_item_segurado';
    public $_order = 'id_laudo_final_item_segurado';

    public function save($dados)
    {
        $Model_LaudosFinaisItensSegurados = new Sinistro2_Model_LaudosFinaisItensSegurados();
        $idLaudoFinalItemSegurado = $Model_LaudosFinaisItensSegurados->save($dados);

        if ($idLaudoFinalItemSegurado) {
            try {
                $Row = $this->getRow($idLaudoFinalItemSegurado);

                $Row->id_laudo_final_item_segurado = $idLaudoFinalItemSegurado;
                $Row->fl_amostragem_maquina = $dados["fl_amostragem_maquina"] ?? $Row->fl_amostragem_maquina;
                $Row->id_estadio_fenologico = $dados['id_estadio_fenologico'] ?? $Row->id_estadio_fenologico;
                $Row->vl_pragas_doencas_outros = !empty($dados['vl_pragas_doencas_outros']) ? $dados['vl_pragas_doencas_outros'] : $Row->vl_pragas_doencas_outros;
                $Row->save();

                return $idLaudoFinalItemSegurado;
            } catch (Exception $e) {
                $this->setMessage($e->getMessage());

                return false;
            }
        } else {
            $this->setMessage($Model_LaudosFinaisItensSegurados->getMessages());

            return false;
        }
    }

    public function delete($id_laudo_final)
    {
        parent::delete($id_laudo_final, "id_laudo_final");
    }

    public function tipoAmostragem($idVistoria)
    {
        $select = $this->select()->setIntegrityCheck(false);
        $select->from(array('lf042is' => 'regulacoes.' . $this->_name), 'fl_amostragem_maquina');
        $select->join(array('lfis' => 'sinistro.laudos_finais_itens_segurados'),
          'lfis.id = lf042is.id_laudo_final_item_segurado', false);
        $select->join(array('vlf' => 'sistema.vistorias_laudos_finais'), 'vlf.id_laudo_final = lfis.id_laudo_final',
          false);
        $select->where('vlf.id_vistoria = ?', $idVistoria);

        $tipoAmostragem = $this->fetchAll($select);
        //não tem ítens (pode não ter detectado sinistro ou não ter sido vistoriado)
        $grupoVistoria = 6;

        if (count($tipoAmostragem)) {
            $mecanizada = false;
            $manual = false;

            foreach ($tipoAmostragem as $amostragem) {
                $manual = true;
                $grupoVistoria = 6;

                if ($amostragem['fl_amostragem_maquina'] == true) {
                    $mecanizada = true;
                    $grupoVistoria = 7;
                }
            }

            if ($mecanizada && $manual) {
                $grupoVistoria = 0;
            }
        }

        return $grupoVistoria;
    }
}
