<?php 
class Regulacao_Lf037itemseguradoController extends Agro_Controller_Action {
    private $__ItensSegurados;
    private $__params;
    private $__item;

    public function init() {
        $LaudosFinaisItensSegurados = new Sinistro2_Model_LaudosFinaisItensSegurados();
        $this->__params = $this->getRequest()->getParams();
        $this->__ItensSegurados = new Seguro_Model_ItensSegurados();
        $this->__item = $this->__ItensSegurados->find($this->__params['id_item_segurado'])->current();
        $this->view->title = "Sinistro » Processos » Laudo Final » Item Segurado: {$this->__item->ds_item_segurado}";
        $lfitessegurados = $LaudosFinaisItensSegurados->find($this->__params['id_laudo_final'], $this->__params['id_item_segurado']);
        $this->__params['id_laudo_final_item_segurado'] = count($lfitessegurados) ? $lfitessegurados['id'] : false;
    }

    public function getModel() {
        return new Regulacao_Model_Lf037ItensSeguradosAmostras();
    }

    public function getItemSegurado() {
        return new Regulacao_Model_Lf037ItensSegurados();
    }

    public function getForm(array $dados = array()) {
        return new Regulacao_Form_Lf037ItemSegurado(array('dados' => $dados));
    }

    public function formAction() { 
        if ($this->__params['fl_item_digitado']) {
            $this->view->back = '/sinistro2/processo/view/id'.$this->__params['id_processo'].'#regulacao_laudos';
        } else {
            $this->view->back = '/'.$this->_request->module.'/lf037/form/id_proposta/'.$this->__params['id_proposta'].
                '/id_processo/'.$this->__params['id_processo'].'/id_cobertura/'.$this->__params['id_cobertura'].
                '/id_vistoria/'.$this->__params['id_vistoria'].'/id_laudo_final/'.$this->__params['id_laudo_final'];
        }

        $this->view->jQuery()->addStylesheet('/resources/css/sinistro2/laudo.css');
        $this->view->jQuery()->addJavascriptFile('/resources/javascript/sinistro2/laudofinalitemsegurado.js?nocache=' . rand(1,1000));

        $ProcessosEmpresas = new Sinistro2_Model_ProcessosEmpresas();
        $Culturas = new Produto_Model_Culturas();
        $this->view->id_cultura = $this->__params['id_cultura'] = $dadosForm['id_cultura'] = $Culturas->getCulturaByProposta($this->__params['id_proposta']);

        if ($this->getRequest()->isPost()) { 
            $dadosForm = array(
                'id_laudo_final' => $this->__params['id_laudo_final'],
                'id_item_segurado' => $this->__params['id_item_segurado'],
                'id_empresa_vistoriadora' => $ProcessosEmpresas->getEmpresaByProcesso($this->__params['id_processo'])
            );

            if (is_array($this->__params['avisos_relacionados'])) {
                $dados['avisos_relacionados'] = $this->__params['avisos_relacionados'];
            }

            $Form = $this->getForm($dadosForm);
            $Form->populate($this->__params);

            if ($Form->isValid($Form->getValues())) {
                $Model = $this->getModel();
                $this->__params['id_laudo_final_item_segurado'] = $Model->save($this->__params);
                $this->view->showMessage($Model->getMessages(), ($this->__params['id_laudo_final_item_segurado'] ? 'success' : 'error'));
            } else {
                $this->view->showMessage($this->getAllFormErros(array($Form),$_POST), 'error');
            }
        }

        $this->populate();
    }

    public function populate() {
        $ProcessosEmpresas = new Sinistro2_Model_ProcessosEmpresas();
        $Model = $this->getModel();

        if ($this->__params['id_laudo_final_item_segurado']) {
            $this->__params = array_merge($this->__params, $Model->get($this->__params['id_laudo_final_item_segurado']));
        }

        $dadosForm = array(
            'id_laudo_final' => $this->__params['id_laudo_final'],
            'id_item_segurdo' => $this->__params['id_item_segurado'],
            'id_empresa_vistoriadora' => $ProcessosEmpresas->getEmpresaByProcesso($this->__params['id_processo'])
        );

        if (is_array($this->__params['avisos_relacionados'])) {
            $dados['avisos_relacionados'] = $this->__params['avisos_relacionados'];
        }

        if (empty($this->__params['id_laudo_final_item_segurado']) && !empty($this->__params['id_laudo_final'])) {
            $rowLaudoFinal = (new Sinistro2_Model_LaudosFinais())->find($this->__params['id_laudo_final'])->current();
            $dataVistoria = new Zend_Date($rowLaudoFinal['dt_vistoria']);
            $this->__params['dt_vistoria_data'] = $dataVistoria->toString('dd/MM/YYYY');
            $this->__params['dt_vistoria_hora'] = $dataVistoria->toString('HH');
            $this->__params['dt_vistoria_minutos'] = $dataVistoria->toString('mm');
        }

        $Form = $this->getForm($dadosForm);
        $Form->populate($this->__params);
        $this->view->form = $Form;

        if (!array_key_exists('amostras', $this->__params)) {
            $this->__params = $Model->prepararDados($this->__params);
        }

        $this->view->dados = $this->__params;
    }
}