<?php

class PlanejamentoSolicitacoesController extends GxController {

    var $help = 'Esta é a ajuda';

    public function actionSave() {
    	if(!isset($_FILES['ARQ_ARQUIVO']) || !is_array($_FILES['ARQ_ARQUIVO'])) {
        	$this->error('Nenhum arquivo selecionado!');
    	}
        if(!isset($_POST['ARQ_FOREIGNKEY'])) {
        	$this->error('Não foi possível identificar a pendência a qual o planejamento pertence!');
        }
    	$solicitacao = $this->loadModel($_POST['ARQ_FOREIGNKEY'], 'Solicitacoes');

        $save = true;
        $arquivo = new Arquivos;
        $arquivo->scenario = 'upload';
        $arquivo->setAttributes($_FILES);
        $arquivo->limitExtension = array('xml');
        $arquivo->ARQ_FOREIGNKEY = $solicitacao->SOL_IDPENDENCIA;
        $arquivo->ARQ_MODEL = 'PlanejamentoSolicitacoes';
        $arquivo->ARQ_TITULO = 'Planejamento ' . date('d/m/Y H:i:s');
        $arquivo->ARQ_DESCRICAO = 'Planejamento ' . date('d/m/Y H:i:s');
        
        if (is_array($arquivo->ARQ_ARQUIVO) && $arquivo->upload(true)) {
            if($arquivo->save()) {
            	$previsoes = $solicitacao->loadPlanejamento();
            	$xmlLink = $solicitacao->getPlanejamento()->getUrl(); 
                $this->success(array('message' => 'Upload realizado com sucesso!', 'data' => $previsoes, 'xmlLink' => $xmlLink));
            } else {
                $this->error('Houve um erro ao tentar salvar os dados na base, por favor tente novamente!'.$this->_getErrors($arquivo));
            }
        } else {
            $this->error('Houve um erro ao tentar fazer o upload do arquivo, por favor tente novamente!'.$this->_getErrors($arquivo));
        }
    }

    private function _getErrors($model) {
    	$message = '';
    	$errors = $model->getErrors();
    	if($errors) {
    		foreach($errors as $attribute => $error) {
    			if(is_array($error)) {
    				foreach($error as $msg) {
    					$message .= "\n\r" . $model->getAttributeLabel($attribute) . ': ' . $msg;
    				}
    			} else {
    				$message .= "\n\r" . $model->getAttributeLabel($attribute) . ': ' . $error;
    			}
    		}
    	}
    	return $message;
    }

    private function error($message) {
    	header("HTTP/1.0 400 Relation Restriction");
    	echo $message;
    	Yii::app()->end();
    }

    private function success($data) {
    	header("HTTP/1.0 200 OK");
        echo CJSON::encode($data);
    	Yii::app()->end();
    }

}