<?php
class Sinistro2_LaudofinalitemseguradoController extends Agro_Controller_Action {

    public function getModel() {
        return new Sinistro2_Model_LaudosFinaisItensSegurados();
    }
    
    public function salvaritemnaovistoriadoAction() {
    	$this->isAjax();
    	
    	$result = array("status" => true, "message" => "Item salvo com sucesso.");

    	$motivos = array(1,2,3,4,7);
    	
    	try {
    		$params = $this->getRequest()->getParams();

    		$ModelProposta = new Seguro_Model_Propostas();
    		$Proposta = $ModelProposta->getProposta($params['id_proposta']);

    		$ModelProdutosCoberturas = new Produto_Model_ProdutosCoberturas();
    		$LaudoFinal = $ModelProdutosCoberturas->find($Proposta->id_produto, $params['id_cobertura'])->current()->laudoFinal();

            if (!is_array($params["id_item_segurado_replicar"])) {
                $params["id_item_segurado_replicar"] = [];
            }

            array_unshift($params["id_item_segurado_replicar"], $params["id_item_segurado"]);

            $params["id_item_segurado_replicar_arquivo"] = $params["id_item_segurado"];

            $Model = $this->getModel();
            $itemSeguradoLaudoFinal = $Model->getRow($params['id_laudo_final'], $params['id_item_segurado']);
            
            if (
                $itemSeguradoLaudoFinal['id_motivo_quadra_nao_vistoriada'] == Sinistro2_Model_MotivosQuadraNaoVistoriadaTipos::VISTORIA_NAO_CONCLUIDA
                && $params['id_motivo_quadra_nao_vistoriada'] != $itemSeguradoLaudoFinal['id_motivo_quadra_nao_vistoriada']
            ) {
                throw new Exception('Não é permitido alterar o motivo deste item.');
            }
            
            $ModelItemSegurado = new Seguro_Model_ItensSegurados();
            foreach ($params["id_item_segurado_replicar"] as $id_item_segurado) {
                $params["id_item_segurado"] = $id_item_segurado;
                $ItemSegurado = $ModelItemSegurado->find($params['id_item_segurado'])->current();

                $Model->delete($params['id_laudo_final'], $params['id_item_segurado']);

                if ($params['fl_nao_vistoriada']) {
                    $params['dt_vistoria'] = Agro_Util::formatDate($params['dt_vistoria_data'].' '.$params['dt_vistoria_hora'].' '.$params['dt_vistoria_minutos'], Zend_Date::W3C);

                    if ((in_array($params['id_motivo_quadra_nao_vistoriada'], $motivos) && $LaudoFinal == 'lf034') || ($LaudoFinal == 'lf003' && $params['id_motivo_quadra_nao_vistoriada'] == 1)) {
                        $params['vl_rendimento_final_lavoura'] = $ItemSegurado['vl_rendimento_tonelada'];
                        $params['vl_percent_colhido'] = 100;
                    }

                    if (!$Model->save($params)){
                        $result["message"] = $Model->getMessages();
                        $result["status"] = false;
                    }
                }
            }
    	} catch (Exception $e) {
    		$result["message"] = $e->getMessage();
    		$result["status"] = false;
    	}
    	
    	$this->getResponse()->setBody(Zend_Json::encode($result));
    }

    public function formAction()
    {
        return parent::formAction(); // TODO: Change the autogenerated stub
    }

    public function saveitemnaovistoriadoAction() {
		$this->isAjax();
    	
    	$result = array("status" => true, "message" => "Item salvo com sucesso.");
    	
        try {
	        $Model = $this->getModel();
	        
	        $params = $this->getRequest()->getParams();
	        
	        $Model->delete($params['id_laudo_final'], $params['id_item_segurado']);
	        
	        if ($params['fl_nao_vistoriada']) {
	            $params['dt_vistoria'] = Agro_Util::formatDate($params['dt_vistoria_data'].' '.$params['dt_vistoria_hora'].' '.$params['dt_vistoria_minutos'], 'yyyy-MM-dd HH:mm:ss');
	            
	            if (!$Model->save($params)){
	            	$result["status"] = false;
	            	$result["message"] = $Model->getMessages();
	            }
	        }
	        
        } catch (Exception $e) {
        	$result["status"] = false;
	        $result["message"] = $e->getMessage();
        }
        
        $this->getResponse()->setBody(Zend_Json::encode($result));
    }

    public function historicoalteracoesAction(): void
	{
		$this->isAjax();                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               

		$retorno = [];
        $params = $this->getRequest()->getParams();

		try {
            if (!filter_var($params['id_laudo_final'], FILTER_VALIDATE_INT)) {
                throw new Exception('ID do laudo final deve ser um inteiro.');
            }

            if (!filter_var($params['id_item_segurado'], FILTER_VALIDATE_INT)) {
                throw new Exception('ID do laudo final deve ser um inteiro.');
            }

			$historico = (new Regulacao_Service_Buscahistoricoalteracaoitemvsd())
				->busca((int) $params['id_laudo_final'], (int) $params['id_item_segurado']);

			$retorno = [
				'historico' => $historico,
				'error' => false
			];
		} catch (Exception $e) {
			$retorno = [
				'message' => $e->getMessage(),
				'error' => true
			];
		}

		$this->getResponse()->setBody(Zend_Json::encode($retorno));
	}

    public function salvaritensimportadosxmlAction(): void
    {
        $params = $this->getRequest()->getParams();

        try {

        } catch (Exception $e) {
            
        }
    }
}
