<?php

$Permissoes = User::getUser(true);

if ($Permissoes->FUN_TBL_PROSPECTOS == 1 ||
    $Permissoes->FUN_TBL_CONTROLE_DOCUMENTOS == 1 ||
    $Permissoes->FUN_TBL_RELATORIO_DOCUMENTOS == 1) {

    class ContratosController extends GxController {

        var $help = 'Esta é a ajuda';

        public function actionView($id)
        {
            $model = $this->loadModel($id, 'Contratos');

            $desc_produto = array();
            foreach ($model->Itens as $relatedModel) {
                $id_complemento = (string) $relatedModel;
                $Produtos = Modulos::model()->findByPk($id_complemento);
                $desc_produto[] = (string) $Produtos->MOD_DESCRICAO;
            }

            $complementares = "";
            if (isset($desc_produto) && is_array($desc_produto)) {
                $complementares = implode(', ', $desc_produto);
            }

            $dadosSolicitacaoTermo = $model->loadDadosTermoCancelamentos();
            $this->render('view', array(
                'model' => $model,
                'complementares' => $complementares,
                'dadosSolicitacaoTermo' => $dadosSolicitacaoTermo
            ));
        }

        public function actionGerarpdf($id)
        {
            $model = $this->loadModel($id, 'Contratos');

            if(!$model->mostrarPdf()) {
                Yii::app()->user->setFlash('error', 'Não é possível visualizar PDF deste documento!');
                $this->redirect(array('clientes/view', 'id' => $model->COT_IDCLIENTE));
            }

            $prod = array();
            $conversao = null;

            if(count($model->ConversaoDados) > 0){
                $conversao = $model->ConversaoDados[0];
                foreach ($model->ConversaoDados[0]->Produto as $produto) {
                    $prod[] = $produto->Produto->CCP_DESCRICAO;
                }
            }

            $dadosSolicitacaoTermo = $model->loadDadosTermoCancelamentos();
            $this->render('pdf', array(
                'model' => $model,
                'conversaoDados' => $conversao,
                'produtos' => implode(', ', $prod),
                'dadosSolicitacaoTermo' => $dadosSolicitacaoTermo,
            ));
        }

        public function actionGerarCopiaDigital($id)
        {
            $model = $this->loadModel($id, 'Contratos');

            if(!$model->mostrarCopiaDigital()) {
                Yii::app()->user->setFlash('error', 'Não é possível visualizar cópia digital deste documento!');
                $this->redirect(array('clientes/view', 'id' => $model->COT_IDCLIENTE));
            }
            $this->render('gerar_copia_digital', array('model' => $model));
        }

        public function actionGerarCopiaAssinadaDigitalmente($id)
        {
            $model = $this->loadModel($id, 'Contratos');

            if(!$model->mostrarCopiaDigitalAssinada()) {
                Yii::app()->user->setFlash('error', 'Não é possível visualizar cópia digital assinada digitalmente deste documento!');
                $this->redirect(array('clientes/view', 'id' => $model->COT_IDCLIENTE));
            }
            $this->render('gerar_copia_assinada_digitalmente', array('model' => $model));
        }

        public function actionListarCopiasAssinadasDigitalmente($id)
        {
            $model = $this->loadModel($id, 'Contratos');

            if(!$model->listarCopiasAssinadasDigitalmente()) {
                Yii::app()->user->setFlash('error', 'Não é possível trocar o formato de assinatura deste documento!');
                $this->redirect(array('clientes/view', 'id' => $model->COT_IDCLIENTE));
            }
            $this->render('listar_copias_assinadas_digitalmente', array('model' => $model));
        }

        public function actionTrocarTipoAssinatura($id)
        {
            $model = $this->loadModel($id, 'Contratos');
            $atendimento = new Atendimentos;

            if(!$model->trocarTipoAssinatura()) {
                Yii::app()->user->setFlash('error', 'Não é possível trocar o formato de assinatura deste documento!');
                $this->redirect(array('contratos/view&id='.$id));
            }

            if (isset($_POST['Contratos']) && isset($_POST['Atendimentos'])) {
                $tipoalterado = $model->COT_TIPOASSINATURA != $_POST['Contratos']['COT_TIPOASSINATURA'];
                $model->setAttributes($_POST['Contratos']);
                if($model->COT_TIPOASSINATURA != Contratos::ASSINADO_DIGITAL) {
                    $model->COT_BLOQUEARASSINATURA = false;
                }
                if(!$tipoalterado) {
                    Yii::app()->user->setFlash('error', 'Houve um erro ao tentar atualizar os dados do '.$model->getTipoDocumento().', tipo de assinatura informado é o mesmo que consta no documento!');
                    if(isset($_POST['Atendimentos']['ATD_OBS'])) {
                        $atendimento->ATD_OBS = $_POST['Atendimentos']['ATD_OBS'];
                    }
                    $model = $this->loadModel($id, 'Contratos');
                } else if(empty($model->COT_TIPOASSINATURA)) {
                    Yii::app()->user->setFlash('error', 'Houve um erro ao tentar atualizar os dados do '.$model->getTipoDocumento().', tipo de assinatura não informado!');
                    if(isset($_POST['Atendimentos']['ATD_OBS'])) {
                        $atendimento->ATD_OBS = $_POST['Atendimentos']['ATD_OBS'];
                    }
                    $model = $this->loadModel($id, 'Contratos');
                } else if(!isset($_POST['Atendimentos']['ATD_OBS']) || strlen(trim($_POST['Atendimentos']['ATD_OBS'])) < 20) {
                    Yii::app()->user->setFlash('error', 'Houve um erro ao tentar atualizar os dados do '.$model->getTipoDocumento().', justificativa em branco ou com tamanho menor que 20 caracteres!');
                    if(isset($_POST['Atendimentos']['ATD_OBS'])) {
                        $atendimento->ATD_OBS = $_POST['Atendimentos']['ATD_OBS'];
                    }
                    $model = $this->loadModel($id, 'Contratos');
                } else {
                    if ($model->save(true, array('COT_TIPOASSINATURA', 'COT_BLOQUEARASSINATURA'))) {
                        $atendimento->ATD_IDCLIENTE = $model->COT_IDCLIENTE;
                        $atendimento->ATD_IDCONTRATO = $model->COT_IDCONTRATO;
                        $atendimento->ATD_IDFUNCIONARIO = User::getId();
                        $atendimento->ATD_TIPO = 'D';
                        $atendimento->ATD_AUTOMATICO = 1;
                        $atendimento->ATD_DTLANCAMENTO = date('Y-m-d H:i:s');
                        $atendimento->ATD_HORAINICIO = date('H:i:s');
                        $atendimento->ATD_HORAFINAL = date('H:i:s', strtotime('+1 minute'));
                        $atendimento->ATD_TOTALHORAS = '00:01:00';
                        $atendimento->ATD_IDMOTIVO = 20;
                        $atendimento->ATD_OBS = "ATIVIDADE LANÇADA AUTOMATICAMENTE PELO CRM \r\n \r\n Alterado tipo de assinatura do ".Util::getTipoDocumento($model->COT_SITUACAO).' '.$model->COT_IDCONTRATO." nesta data. \n\r Justificativa:". trim($_POST['Atendimentos']['ATD_OBS']);
                        $atendimento->ATD_DTCADASTRO = date('d/m/Y');
                        $atendimento->ATD_SITUACAO = 'R';
                        $atendimento->ATD_IDUSUARIO = User::getId();
                        $atendimento->ATD_DTALTERACAO = date('d/m/Y');
                        $atendimento->save(false, array('ATD_DTLANCAMENTO','ATD_TIPO', 'ATD_IDMOTIVO', 'ATD_DTCADASTRO', 'ATD_HORAINICIO', 'ATD_HORAFINAL', 'ATD_TOTALHORAS', 'ATD_IDFUNCIONARIO', 'ATD_SITUACAO', 'ATD_IDCLIENTE', 'ATD_IDCONTRATO', 'ATD_OBS', 'ATD_IDUSUARIO', 'ATD_DTALTERACAO', 'ATD_AUTOMATICO'));

                        $nomeModel = ($model->COT_TIPOASSINATURA == Contratos::ASSINADO_DIGITAL) ? 'ContratosAssinadosDigitalmente' : 'Contratos';
                        Yii::app()->db->createCommand("UPDATE arquivos set ARQ_MODEL = '{$nomeModel}' where ARQ_FOREIGNKEY = {$model->COT_IDCONTRATO} and ARQ_MODEL in('Contratos', 'ContratosAssinadosDigitalmente')")->query();

                        Yii::app()->user->setFlash('success', 'Salvo com sucesso!');
                        $this->redirect(array('view', 'id' => $model->COT_IDCONTRATO));
                    } else {
                        Yii::app()->user->setFlash('error', 'Houve um erro ao tentar atualizar os dados do '.$model->getTipoDocumento().'!');
                    }
                }
            }

            $this->render('trocar_tipo_assinatura', array('model' => $model, 'atendimento' => $atendimento));
        }

        public function actionAnexar($id)
        {
            $model = $this->loadModel($id, 'Contratos');
            if(!empty($model->Arquivo)) {
                Yii::app()->user->setFlash('error', 'Este documento já possui cópia digital anexada.');
                $this->redirect(array('contratos/view&id='.$id));
            }
            if(!$model->podeAnexarCopiaDigital() && !$model->podeAnexarCopiaDigitalAssinada()) {
                Yii::app()->user->setFlash('error', 'Você não está autorizado a anexar cópia digital neste documento.');
                $this->redirect(array('contratos/view&id='.$id));
            }

            if($model->COT_TIPOASSINATURA == Contratos::ASSINADO_DIGITAL && $model->COT_BLOQUEARASSINATURA == true) {
                Yii::app()->user->setFlash('error', 'Este documento já teve todas assinaturas coletadas.');
                $this->redirect(array('contratos/view&id='.$id));
            }
            $arquivo = new Arquivos;
            $arquivo->limitExtension = 'pdf';

            if(isset($_POST['Arquivos']) && is_array($_POST['Arquivos']) && isset($_POST['Contratos']) && is_array($_POST['Contratos'])) {
                $model->COT_TIPOASSINATURA = $_POST['Contratos']['COT_TIPOASSINATURA'];

                if(isset($_POST['Contratos']['COT_BLOQUEARASSINATURA'])) {
                    $model->COT_BLOQUEARASSINATURA = $_POST['Contratos']['COT_BLOQUEARASSINATURA'];
                }

                $arquivo->scenario = 'cliente';
                $arquivo->setAttributes($_POST['Arquivos']);
                $upload = array(
                    'name' => $_FILES['Arquivos']['name']['ARQ_ARQUIVO'],
                    'type' => $_FILES['Arquivos']['type']['ARQ_ARQUIVO'],
                    'tmp_name' => $_FILES['Arquivos']['tmp_name']['ARQ_ARQUIVO'],
                    'error' => $_FILES['Arquivos']['error']['ARQ_ARQUIVO'],
                    'size' => $_FILES['Arquivos']['size']['ARQ_ARQUIVO']
                    );
                $arquivo->ARQ_ARQUIVO = $upload;
                if ($model->COT_TIPOASSINATURA == Contratos::ASSINADO_DIGITAL) {
                    $arquivo->ARQ_MODEL = 'ContratosAssinadosDigitalmente';
                } elseif ($model->COT_TIPOASSINATURA == Contratos::ASSINADO_MANUAL) {
                    $arquivo->ARQ_MODEL = 'Contratos';
                }
                $arquivo->ARQ_DESCRICAO = $model->getTipoAssinatura() . ' anexado em '. date('d/m/Y H:i:s');
                if(!in_array($model->COT_TIPOASSINATURA, $model->getTiposAssinatura(true))) {
                    $model->addError('COT_TIPOASSINATURA', $model->getAttributeLabel('COT_TIPOASSINATURA') . ' é obrigatório!');
                } else {
                    $arquivo->ARQ_FOREIGNKEY = $model->COT_IDCONTRATO;
                    if($arquivo->upload() && $arquivo->save()) {
                        $old_file = $arquivo->getPath() . $model->getSlugTipoDocumento($model->COT_SITUACAO) . '_' . $model->COT_IDCONTRATO . '.pdf';
                        if(file_exists($old_file)) {
                            unlink($old_file);
                        }

                        $model->save(false, array('COT_TIPOASSINATURA'));
                        if($model->COT_TIPOASSINATURA == Contratos::ASSINADO_DIGITAL) {
                            if(isset($_POST['Contratos']['COT_BLOQUEARASSINATURA'])) {
                                $model->save(false, array('COT_BLOQUEARASSINATURA'));
                            }
                        }

                        $atdAnexado = new Atendimentos;
                        $atdAnexado->ATD_IDCLIENTE = $model->COT_IDCLIENTE;
                        $atdAnexado->ATD_IDCONTRATO = $model->COT_IDCONTRATO;
                        $atdAnexado->ATD_IDFUNCIONARIO = User::getId();
                        $atdAnexado->ATD_TIPO = 'D';
                        $atdAnexado->ATD_AUTOMATICO = 1;
                        $atdAnexado->ATD_DTLANCAMENTO = date('Y-m-d H:i:s');
                        $atdAnexado->ATD_HORAINICIO = date('H:i:s');
                        $atdAnexado->ATD_HORAFINAL = date('H:i:s', strtotime('+1 minute'));
                        $atdAnexado->ATD_TOTALHORAS = '00:01:00';
                        $atdAnexado->ATD_IDMOTIVO = 20;
                        $atdAnexado->ATD_OBS = "ATIVIDADE LANÇADA AUTOMATICAMENTE PELO CRM \r\n \r\n Cópia digital anexada ao ".Util::getTipoDocumento($model->COT_SITUACAO).' '.$model->COT_IDCONTRATO." nesta data.";
                        $atdAnexado->ATD_DTCADASTRO = date('d/m/Y');
                        $atdAnexado->ATD_SITUACAO = 'R';
                        $atdAnexado->ATD_IDUSUARIO = User::getId();
                        $atdAnexado->ATD_DTALTERACAO = date('d/m/Y');
                        $atdAnexado->save(false, array('ATD_DTLANCAMENTO','ATD_TIPO', 'ATD_IDMOTIVO', 'ATD_DTCADASTRO', 'ATD_HORAINICIO', 'ATD_HORAFINAL', 'ATD_TOTALHORAS', 'ATD_IDFUNCIONARIO', 'ATD_SITUACAO', 'ATD_IDCLIENTE', 'ATD_IDCONTRATO', 'ATD_OBS', 'ATD_IDUSUARIO', 'ATD_DTALTERACAO', 'ATD_AUTOMATICO'));

                        $arq = new Arquivos;
                        $arq->ARQ_TITULO = $arquivo->ARQ_TITULO;
                        $arq->ARQ_ARQUIVO = $arquivo->ARQ_ARQUIVO;
                        $arq->ARQ_DESCRICAO = $arquivo->ARQ_DESCRICAO;
                        $arq->ARQ_TIPO = $arquivo->ARQ_TIPO;
                        $arq->ARQ_MODEL = 'Atendimentos';
                        $arq->ARQ_FOREIGNKEY = $atdAnexado->ATD_IDATENDIMENTO;
                        $arq->save(false, array('ARQ_TITULO','ARQ_ARQUIVO','ARQ_DESCRICAO', 'ARQ_TIPO', 'ARQ_MODEL', 'ARQ_FOREIGNKEY'));

                        Yii::app()->user->setFlash('success', 'Arquivo salvo com sucesso.');
                        $this->redirect(array('contratos/view&id='.$id));
                    } else {
                        Yii::app()->user->setFlash('error', 'Houve um erro ao tentar salvar o arquivo, por favor tente novamente.');
                    }
                }
            }
            $this->render('anexar', array('model' => $model, 'arquivo' => $arquivo));
        }

        public function actionRemoverpdf($id)
        {

            $model = $this->loadModel($id, 'Contratos');

            if(!empty($model->Arquivo)) {
                Yii::app()->user->setFlash('error', 'Este documento possui cópia digital anexada, pra poder remover o PDF, exclua a cópia digital antes.');
                $this->redirect(array('contratos/view&id='.$id));
            }
            if($model->documentoAtivo()) {
                Yii::app()->user->setFlash('error', 'Este documento é um documento ativo, não é possível remover o PDF do mesmo.');
                $this->redirect(array('contratos/view&id='.$id));
            }
            $arquivo = new Arquivos;
            $old_file = $arquivo->getPath() . $model->getSlugTipoDocumento($model->COT_SITUACAO) . '_' . $model->COT_IDCONTRATO . '.pdf';

            if(file_exists($old_file)) {
                if(unlink($old_file)) {
                    $atdAnexado = new Atendimentos;
                    $atdAnexado->ATD_IDCLIENTE = $model->COT_IDCLIENTE;
                    $atdAnexado->ATD_IDCONTRATO = $model->COT_IDCONTRATO;
                    $atdAnexado->ATD_IDFUNCIONARIO = User::getId();
                    $atdAnexado->ATD_TIPO = 'D';
                    $atdAnexado->ATD_AUTOMATICO = 1;
                    $atdAnexado->ATD_DTLANCAMENTO = date('Y-m-d H:i:s');
                    $atdAnexado->ATD_HORAINICIO = date('H:i:s');
                    $atdAnexado->ATD_HORAFINAL = date('H:i:s', strtotime('+1 minute'));
                    $atdAnexado->ATD_TOTALHORAS = '00:01:00';
                    $atdAnexado->ATD_IDMOTIVO = 20;
                    $atdAnexado->ATD_OBS = "ATIVIDADE LANÇADA AUTOMATICAMENTE PELO CRM \r\n \r\n PDF do ".Util::getTipoDocumento($model->COT_SITUACAO).' '.$model->COT_IDCONTRATO." excluído nesta data.";
                    $atdAnexado->ATD_DTCADASTRO = date('d/m/Y');
                    $atdAnexado->ATD_SITUACAO = 'R';
                    $atdAnexado->ATD_IDUSUARIO = User::getId();
                    $atdAnexado->ATD_DTALTERACAO = date('d/m/Y');
                    $atdAnexado->save(false, array('ATD_DTLANCAMENTO','ATD_TIPO', 'ATD_IDMOTIVO', 'ATD_DTCADASTRO', 'ATD_HORAINICIO', 'ATD_HORAFINAL', 'ATD_TOTALHORAS', 'ATD_IDFUNCIONARIO', 'ATD_SITUACAO', 'ATD_IDCLIENTE', 'ATD_IDCONTRATO', 'ATD_OBS', 'ATD_IDUSUARIO', 'ATD_DTALTERACAO', 'ATD_AUTOMATICO'));

                    Yii::app()->user->setFlash('success', 'Arquivo PDF removido com sucesso.');
                } else {
                    Yii::app()->user->setFlash('error', 'Houve um erro ao tentar remover o arquivo PDF da nossa base, por favor tente novamente.');
                }
            } else {
                Yii::app()->user->setFlash('error', 'Arquivo PDF não encontrado.');
            }
            $this->redirect(array('contratos/view&id='.$id));
        }

        public function actionDesanexar($id)
        {
            $model = $this->loadModel($id, 'Contratos');
            if(empty($model->Arquivo)) {
                Yii::app()->user->setFlash('error', 'Este documento não possui cópia digital anexada.');
                $this->redirect(array('contratos/view&id='.$id));
            }
            $model->Arquivo->ARQ_MODEL = 'Atendimentos';
            $model->Arquivo->ARQ_FOREIGNKEY = -1;
            if($model->Arquivo->save(false, array('ARQ_MODEL', 'ARQ_FOREIGNKEY'))) {
                $atdAnexado = new Atendimentos;
                $atdAnexado->ATD_IDCLIENTE = $model->COT_IDCLIENTE;
                $atdAnexado->ATD_IDCONTRATO = $model->COT_IDCONTRATO;
                $atdAnexado->ATD_IDFUNCIONARIO = User::getId();
                $atdAnexado->ATD_TIPO = 'D';
                $atdAnexado->ATD_AUTOMATICO = 1;
                $atdAnexado->ATD_DTLANCAMENTO = date('Y-m-d H:i:s');
                $atdAnexado->ATD_HORAINICIO = date('H:i:s');
                $atdAnexado->ATD_HORAFINAL = date('H:i:s', strtotime('+1 minute'));
                $atdAnexado->ATD_TOTALHORAS = '00:01:00';
                $atdAnexado->ATD_IDMOTIVO = 20;
                $atdAnexado->ATD_OBS = "ATIVIDADE LANÇADA AUTOMATICAMENTE PELO CRM \r\n \r\n Cópia digital excluída do ".Util::getTipoDocumento($model->COT_SITUACAO).' '.$model->COT_IDCONTRATO." nesta data.";
                $atdAnexado->ATD_DTCADASTRO = date('d/m/Y');
                $atdAnexado->ATD_SITUACAO = 'R';
                $atdAnexado->ATD_IDUSUARIO = User::getId();
                $atdAnexado->ATD_DTALTERACAO = date('d/m/Y');
                $atdAnexado->save(false, array('ATD_DTLANCAMENTO','ATD_TIPO', 'ATD_IDMOTIVO', 'ATD_DTCADASTRO', 'ATD_HORAINICIO', 'ATD_HORAFINAL', 'ATD_TOTALHORAS', 'ATD_IDFUNCIONARIO', 'ATD_SITUACAO', 'ATD_IDCLIENTE', 'ATD_IDCONTRATO', 'ATD_OBS', 'ATD_IDUSUARIO', 'ATD_DTALTERACAO', 'ATD_AUTOMATICO'));

                $model->Arquivo->ARQ_FOREIGNKEY = $atdAnexado->ATD_IDATENDIMENTO;
                $model->Arquivo->save(false, array('ARQ_FOREIGNKEY'));
                Yii::app()->user->setFlash('success', 'Cópia digital removida com sucesso.');
                $this->redirect(array('contratos/view&id='.$id));
            } else {
                Yii::app()->user->setFlash('error', 'Houve um erro ao tentar salvar o arquivo, por favor tente novamente.');
            }
            $this->render('anexar', array('model' => $model, 'arquivo' => $arquivo));
        }

        public function actionVincularDocumentos()
        {
            if (!in_array(User::getUser()->FUN_PRM_PRIVILEGIO , array(1, 7, 11, 17, 19))) {
                Yii::app()->user->setFlash('error', 'Você não tem permissão para executar esta ação.');
                $this->redirect(array('contratos/view', 'id' => $_POST['Contratos']['COT_IDCONTRATO']));
            }
            if (isset($_POST['Contratos']['COT_DOCUMENTOVINCULADO']) && isset($_POST['Contratos']['COT_IDCONTRATO'])) {
                $contrato = $this->loadModel($_POST['Contratos']['COT_IDCONTRATO'], 'Contratos');
                if($contrato->vincular($_POST['Contratos']['COT_DOCUMENTOVINCULADO'])) {
                    Yii::app()->user->setFlash('success', 'Contratos vinculados com sucesso.');
                } else {
                    if(!empty($contrato->getErrors('COT_DOCUMENTOVINCULADO'))){
                        Yii::app()->user->setFlash('error', implode(' ', $contrato->getErrors('COT_DOCUMENTOVINCULADO')));
                    } else {
                        Yii::app()->user->setFlash('error', 'Houve um erro ao tentar vincular estes documentos, por favor tente novamente.');
                    }
                }
            } else {
                Yii::app()->user->setFlash('error', 'Solicitação inválida.');
                if(!isset($_POST['Contratos']['COT_IDCONTRATO']))
                    $this->redirect(array('/'));
            }
            $this->redirect(array('contratos/view', 'id' => $_POST['Contratos']['COT_IDCONTRATO']));
        }

        private function atribuiSimples(&$model, &$tipo_pessoa) {
            $model->COT_SIMPLES_CAMPO = true;
            if ($tipo_pessoa == 'F') {
                $model->COT_SIMPLES_CAMPO = false;
                $model->COT_SIMPLES = 0;
            }
        }

        public function actionCreate($CLI_IDCLIENTE)
        {
            $Cliente = Clientes::model()->findByPk($CLI_IDCLIENTE);
            $tipo_pessoa = $Cliente->CLI_TIPOPESSOA;

            if(!$Cliente) {
                User::blockAction('error', 'Cliente não encontrato!');
            }

            $situacao = (isset($_GET['COT_SITUACAO'])) ? $_GET['COT_SITUACAO'] : '';
            if(!$Cliente->podeCadastrarDocumento($situacao)) {
                Yii::app()->user->setFlash('error', 'Você não pode cadastrar este tipo de documento');
                $this->redirect(array('clientes/view', 'id' => $Cliente->CLI_IDCLIENTE));
            }

            $model = new Contratos;
            $FuncionariosRevendas = FuncionariosRevendas::model()->findAll("FRV_IDFUNCIONARIO = " . User::getId());
            $RevendasFuncionario = array();
            foreach ($FuncionariosRevendas as $row) {
                $RevendasFuncionario[] = (int) $row->FRV_IDREVENDA;
            }
            $Revendas = Contratos::model()->getUnidadesImplantacaoObrigatoria();
            $Diffs = array_diff($Revendas, $RevendasFuncionario);

            $cliente_transferencia = ClientesTransferencias::model()->findAll("CLT_IDCLIENTE_AUTORIZADO = "  . $CLI_IDCLIENTE);
            if(!empty($cliente_transferencia)) {
                foreach ($cliente_transferencia as $chave) {
                    $contrato_pendente = Contratos::model()->exists("COT_IDCLIENTE = " .$chave->Cliente->CLI_IDCLIENTE. " AND COT_STATUS = 575");
                    if($contrato_pendente == true) {
                        $model->COT_IDMOTIVO_FP = 79;
                        break;
                    }
                }
            }

            $append = (count($Diffs) != count($Revendas)) ? 'ComImplantacao' : 'SemImplantacao';
            switch ($situacao) {
                case Contratos::CONTRATO:
                    $this->atribuiSimples($model, $tipo_pessoa);
                    $model->scenario = 'contrato'. $append;
                    break;

                case Contratos::PEDIDO_IMPLANTACAO:
                    $model->scenario = 'pedidoImplantacao';
                    break;

                case Contratos::PEDIDO_REATIVACAO:
                    $this->atribuiSimples($model, $tipo_pessoa);
                    $model->scenario = ((isset($_POST['Contratos']['COT_CRIARNOVOCONTRATO']) && $_POST['Contratos']['COT_CRIARNOVOCONTRATO'] == 1) || !isset($_POST['Contratos']['COT_CRIARNOVOCONTRATO'])) ? 'pedidoReativacaoContratoNovo' : 'pedidoReativacaoSemContratoNovo';
                    break;

                case Contratos::PEDIDO_CUSTOMIZACAO:
                    $model->scenario = 'pedidoCustomizacao';
                    break;

                case Contratos::ORCAMENTO:
                    $model->scenario = 'orcamento'.$append;
                    break;

                case Contratos::ADENDO:
                    $this->atribuiSimples($model, $tipo_pessoa);
                    $model->scenario = 'adendo' . $append;
                    $dia_vencimento = $Cliente->CLI_DIAVENCIMENTO;
                    if($dia_vencimento == '20') {
                        $model->COT_ALTERAR_VENCIMENTO = true;
                    }
                    break;
                default:
                    Yii::app()->user->setFlash('error', 'Tipo de documento inválido');
                    $this->redirect(array('clientes/view', 'id' => $Cliente->CLI_IDCLIENTE));
                    break;
            }
            if (isset($_POST['Contratos'])) {

                if($model->scenario == 'pedidoReativacaoSemContratoNovo') {
                    unset($_POST['Contratos']['COT_SIMPLES']);
                    unset($_POST['Contratos']['COT_IDPRODUTO']);
                    unset($_POST['Contratos']['COT_NROUSUARIOS']);
                    unset($_POST['Contratos']['COT_VLRMENSAL']);
                    unset($_POST['Contratos']['COT_FUNCAO']);
                    unset($_POST['Contratos']['COT_CPFS']);
                    unset($_POST['Contratos']['COT_TESTEMUNHA1']);
                    unset($_POST['Contratos']['COT_CPF1']);
                    unset($_POST['Contratos']['COT_TESTEMUNHA2']);
                    unset($_POST['Contratos']['COT_CPF2']);
                    unset($_POST['Contratos']['IdsDocumentosFiscais']);
                }

                if ($model->scenario !== 'pedidoImplantacao') {
                    unset($_POST['Contratos']['CCD_IMPORTAR']);
                    unset($_POST['Contratos']['CCD_PRODUTOS']);
                    unset($_POST['Contratos']['CCD_CLIENTES']);
                    unset($_POST['Contratos']['CCD_FORNECEDORES']);
                    unset($_POST['Contratos']['CCD_OBSERVACAO']);
                }

                $model->setAttributes($_POST['Contratos']);
                if(isset($_POST['produtos'])) {
                    $model->produtos = $_POST['produtos'];
                }
                if(isset($_POST['vencimentos'])) {
                    $model->vencimentos = $_POST['vencimentos'];
                }

                $model->vencimentos = (isset($_POST['vencimentos'])) ? $_POST['vencimentos'] : '';
                $documentoVincular = false;

                $model->COT_CLI_NOME = $Cliente->CLI_NOME;
                $model->COT_CLI_CONTATO = $Cliente->CLI_CONTATO;
                $model->COT_CLI_ENDERECO = $Cliente->CLI_ENDERECO;
                $model->COT_CLI_NUMERO = $Cliente->CLI_NUMERO;
                $model->COT_CLI_COMPLEMENTO = $Cliente->CLI_COMPLEMENTO;
                $model->COT_CLI_BAIRRO = $Cliente->CLI_BAIRRO;
                $model->COT_CLI_CIDADE = $Cliente->CLI_CIDADE;
                $model->COT_CLI_CNPJCPF = $Cliente->CLI_CNPJCPF;
                $model->COT_CLI_FONE1 = $Cliente->CLI_FONE1;
                $model->COT_CLI_INSCR_EST = $Cliente->CLI_INSCR_EST;
                $model->COT_CLI_CEP = $Cliente->CLI_CEP;
                $model->COT_CLI_EMAIL = $Cliente->CLI_EMAIL_AREA_CLIENTES;
                $model->COT_CLI_IDMOTIVO = $Cliente->CLI_IDMOTIVO;

                if ($model->COT_SITUACAO == Contratos::ADENDO) {
                    $model->COT_CLI_PRODUTO = $Cliente->CLI_PRODUTO;
                    $model->COT_CLI_MODULO1 = $Cliente->CLI_MODULO1;
                    $model->COT_CLI_MODULO2 = $Cliente->CLI_MODULO2;
                    $model->COT_CLI_MODULO3 = $Cliente->CLI_MODULO3;
                    $model->COT_CLI_MODULO4 = $Cliente->CLI_MODULO4;
                    $model->COT_CLI_MODULO5 = $Cliente->CLI_MODULO5;
                    $model->COT_CLI_QTDUSUARIOS = $Cliente->CLI_QTDUSUARIOS;
                    $model->COT_CLI_QTDLICENCAS_MOBILE = $Cliente->CLI_QTDLICENCAS_MOBILE;
                    $model->COT_CLI_MODULO_MOBILE = $Cliente->CLI_MODULO_MOBILE;
                    $model->COT_CLI_VLRMENSAL = $Cliente->CLI_VLRMENSAL;
                } elseif (in_array($model->COT_SITUACAO, array(Contratos::PEDIDO_IMPLANTACAO, Contratos::PEDIDO_CUSTOMIZACAO, Contratos::PEDIDO_REATIVACAO))) {
                    // soma parcelas para definir valor de implantação
                    $COT_VLRIMPLANTACAO = 0;
                    if (isset($_POST['vencimentos']) && is_array($_POST['vencimentos'])) {
                        foreach ($_POST['vencimentos'] as $vencimento) {
                            if (isset($vencimento['valor']) && $vencimento['valor'] && isset($vencimento['data']) && $vencimento['data'] != null) {
                                $COT_VLRIMPLANTACAO += Util::convertdecimal($vencimento['valor']);
                            }
                        }
                    }
                    $model->COT_VLRIMPLANTACAO=Util::formatMoeda($COT_VLRIMPLANTACAO);

                    // se não for windel caxias ou windel poa, pedido de implantação já entra como ativo
                    // pedidos de reativação e de customização seguem o processo normal de análise
                    if (!$Cliente->isMatrizFilial() && $model->COT_SITUACAO == Contratos::PEDIDO_IMPLANTACAO) {
                        #$model->COT_STATUS = 23;
                    }
                    $maxReativar = date('Y-m-d', strtotime('4 month ago'));
                    $dataRescisao = Util::formatDataMysql($Cliente->CLI_DTRESCISAO);
                    if($model->COT_SITUACAO == Contratos::PEDIDO_REATIVACAO && !$model->COT_CRIARNOVOCONTRATO && $dataRescisao > $maxReativar) {
                        $documentoVincular = $model->getContratoAnterior();
                        if($documentoVincular) {
                            $model->COT_VLRMENSAL=Util::formatMoeda($documentoVincular->COT_VLRMENSAL);
                        }
                    }
                }

                if ($model->COT_SITUACAO == Contratos::CONTRATO or $model->COT_SITUACAO == Contratos::ADENDO) {
                    $Notification = 'Seu documento foi cadastrado e está aguardando análise!';

                    if (date('d') == '01') {
                        $model->COT_DTINICOBRANCA = date('Y-m-d');
                    } else {
                        $model->COT_DTINICARENCIA = date('Y-m-d');
                        $model->COT_DTFIMCARENCIA = date('Y') . '-' . date('m') . '-' . cal_days_in_month(CAL_GREGORIAN, date('m'), date('Y'));
                        $DTFIMCARENCIA = explode('-', $model->COT_DTFIMCARENCIA);
                        $model->COT_DTINICOBRANCA = date("Y-m-d", mktime(0, 0, 0, $DTFIMCARENCIA[1], $DTFIMCARENCIA[2] + 1, $DTFIMCARENCIA[0]));
                    }

                    $COT_DTINICOBRANCA = explode('-', $model->COT_DTINICOBRANCA);
                    $model->COT_DTPRICOBRANCA = date("Y-m-d", mktime(0, 0, 0, $COT_DTINICOBRANCA[1] + 1, 10, $COT_DTINICOBRANCA[0]));
                } else {
                    $Notification = 'Seu documento foi cadastrado!';
                }

                $model->COT_DTCADASTRO = date('Y-m-d');

                if($model->COT_SITUACAO == Contratos::ORCAMENTO) {
                    $model->COT_STATUS = 14;
                }

                if ($model->save()) {

                    if($documentoVincular)
                        $model->vincular($documentoVincular->COT_IDCONTRATO);

                    if (isset($_POST['produtos']) && is_array($_POST['produtos'])) {
                        foreach ($_POST['produtos'] as $id_produto => $produtos) {
                            $model2 = new ContratosItens;
                            $model2->CTI_IDCONTRATO = $model->COT_IDCONTRATO;
                            $model2->CTI_IDPRODUTO = $produtos;
                            $model2->save();
                        }
                    }

                    if (in_array($model->COT_SITUACAO, array(Contratos::PEDIDO_IMPLANTACAO, Contratos::PEDIDO_CUSTOMIZACAO, Contratos::PEDIDO_REATIVACAO))) {

                        if(isset($_POST['vencimentos']) && is_array($_POST['vencimentos'])) {
                            foreach ($_POST['vencimentos'] as $vencimento) {
                                if (isset($vencimento['valor']) && $vencimento['valor'] && isset($vencimento['data']) && $vencimento['data'] != null) {
                                    $modelVencimentos = new ContratosVencimentos;
                                    $modelVencimentos->COV_IDCONTRATO = $model->COT_IDCONTRATO;
                                    $modelVencimentos->COV_DATA = $vencimento['data'];
                                    $modelVencimentos->COV_VALOR = Util::convertdecimal($vencimento['valor']);
                                    $modelVencimentos->save();
                                }
                            }
                        }

                        if (isset($_POST['Contratos']['CCD_IMPORTAR'])) {

                            $ccd = new ContratosConversaoDados();

                            if ($_POST['Contratos']['CCD_IMPORTAR'] == 0) {

                                $ccd->CCD_IDCONTRATO   = $model->COT_IDCONTRATO;
                                $ccd->CCD_IMPORTAR     = $_POST['Contratos']['CCD_IMPORTAR'];

                                $ccd->validate();
                                $ccd->save(false);

                            } else {

                                $ccd->CCD_IDCONTRATO   = $model->COT_IDCONTRATO;
                                $ccd->CCD_IMPORTAR     = $_POST['Contratos']['CCD_IMPORTAR'];
                                $ccd->CCD_CLIENTES     = $_POST['Contratos']['CCD_CLIENTES'];
                                $ccd->CCD_FORNECEDORES = $_POST['Contratos']['CCD_FORNECEDORES'];
                                $ccd->CCD_OBSERVACAO   = $_POST['Contratos']['CCD_OBSERVACAO'];

                                $ccd->validate();
                                $ccd->save(false);

                                if(isset($_POST['Contratos']['CDP_IDPRODUTO'])){

                                    $produtos = $_POST['Contratos']['CDP_IDPRODUTO'];

                                    foreach ($produtos as $produto) {

                                        $cdp = new ContratosConversaoDadosProdutos();
                                        $cdp->CDP_IDCONVERSAO = $ccd->CCD_ID;
                                        $cdp->CDP_IDPRODUTO = (int)$produto;
                                        $cdp->validate();
                                        $cdp->save(false);
                                    }
                                }
                            }
                        }

                    }

                    if (!$Cliente->isMatrizFilial() && $model->COT_SITUACAO == Contratos::PEDIDO_IMPLANTACAO && $model->COT_STATUS == 23) {
                        $horas = new HorasContratadas();
                        $horas->HOC_IDCONTRATO = $model->COT_IDCONTRATO;
                        $horas->HOC_IDCLIENTE = $model->COT_IDCLIENTE;
                        $horas->HOC_HORAS = $model->COT_HORASIMPLANTACAO * 60;
                        $horas->HOC_SALDO = $model->COT_HORASIMPLANTACAO * 60;
                        $horas->HOC_EXPIRACAO = null;
                        $horas->save(false);
                    }

                    $model3 = new Atendimentos;
                    $model3->ATD_IDCLIENTE = $model->COT_IDCLIENTE;
                    $model3->ATD_IDCONTRATO = $model->COT_IDCONTRATO;
                    $model3->ATD_IDFUNCIONARIO = $model->COT_IDVENDEDOR;
                    $model3->ATD_TIPO = 'D';
                    $model3->ATD_DTLANCAMENTO = date('Y-m-d H:i:s');
                    $model3->ATD_HORAINICIO = date('H:i:s');
                    $model3->ATD_HORAFINAL = date('H:i:s', strtotime('+1 minute'));
                    $model3->ATD_TOTALHORAS = '00:01:00';
                    $model3->ATD_IDMOTIVO = 1;
                    if ($model->COT_SITUACAO == Contratos::ADENDO) {
                        $model3->ATD_OBS = 'Adendo elaborado está aguardando análise';
                    } elseif ($model->COT_SITUACAO == Contratos::CONTRATO) {
                        $model3->ATD_OBS = 'Contrato elaborado está aguardando análise';
                    } elseif (in_array($model->COT_SITUACAO, array(Contratos::PEDIDO_CUSTOMIZACAO, Contratos::PEDIDO_REATIVACAO))) {
                        $model3->ATD_OBS = 'Pedido elaborado está aguardando análise';
                    } elseif($model->COT_SITUACAO == Contratos::PEDIDO_IMPLANTACAO and $model->isMatrizFilial()) {
                        $model3->ATD_OBS = 'Pedido elaborado está aguardando análise';
                    } elseif($model->COT_SITUACAO == Contratos::PEDIDO_IMPLANTACAO and !$model->isMatrizFilial()) {
                        $model3->ATD_IDMOTIVO = 23;
                        $model3->ATD_OBS = 'Pedido ativado';
                    } elseif($model->COT_SITUACAO == Contratos::ORCAMENTO) {
                        $model3->ATD_IDMOTIVO = 14;
                        $model3->ATD_OBS = 'Orçamento código '.$model->COT_IDCONTRATO.' criado nesta data.';
                    }
                    $model3->ATD_DTCADASTRO = date('d/m/Y');
                    $model3->ATD_SITUACAO = 'R';
                    $model3->ATD_IDUSUARIO = User::getId();
                    $model3->ATD_DTALTERACAO = date('d/m/Y');
                    $model3->save(false, array('ATD_DTLANCAMENTO','ATD_TIPO', 'ATD_IDMOTIVO', 'ATD_DTCADASTRO', 'ATD_HORAINICIO', 'ATD_HORAFINAL', 'ATD_TOTALHORAS', 'ATD_IDFUNCIONARIO', 'ATD_SITUACAO', 'ATD_IDCLIENTE', 'ATD_IDCONTRATO', 'ATD_OBS', 'ATD_IDUSUARIO', 'ATD_DTALTERACAO'));

                    $model->saveAtendimentoJustificativa();
                    $model->saveDocumentosFiscais();

                    $maxReativar = date('Y-m-d', strtotime('4 month ago'));
                    $dataRescisao = Util::formatDataMysql($Cliente->CLI_DTRESCISAO);
                    if($model->COT_SITUACAO == Contratos::PEDIDO_REATIVACAO && ($model->COT_CRIARNOVOCONTRATO || $dataRescisao < $maxReativar)) {
                        $this->contratoReativacao($Cliente, $model);
                    }

                    if($model3->ATD_IDMOTIVO == 1) {
                        MailTemplates::documentoAguardandoAnalise($model);
                    }
                    if (Yii::app()->getRequest()->getIsAjaxRequest()) {
                        Yii::app()->end();
                    } else {
                        Yii::app()->user->setFlash('success', $Notification);
                        $this->redirect(array('atendimentos/dcreate', 'ATD_IDCLIENTE' => $model->COT_IDCLIENTE, 'ATD_IDCONTRATO' => $model->COT_IDCONTRATO, 'retorno' => 'documentos'));
                    }
                }
            }

            $this->render('create', array('model' => $model, 'CLI_IDCLIENTE' => $CLI_IDCLIENTE));
        }

        private function contratoReativacao($Cliente, $Pedido)
        {
            $documentosFiscais = $Pedido->IdsDocumentosFiscais;
            $Pedido = Contratos::model()->findByPk($Pedido->COT_IDCONTRATO);
            $model = new Contratos;

            $model->COT_CLI_NOME = $Cliente->CLI_NOME;
            $model->COT_CLI_CONTATO = $Cliente->CLI_CONTATO;
            $model->COT_CLI_ENDERECO = $Cliente->CLI_ENDERECO;
            $model->COT_CLI_NUMERO = $Cliente->CLI_NUMERO;
            $model->COT_CLI_COMPLEMENTO = $Cliente->CLI_COMPLEMENTO;
            $model->COT_CLI_BAIRRO = $Cliente->CLI_BAIRRO;
            $model->COT_CLI_CIDADE = $Cliente->CLI_CIDADE;
            $model->COT_CLI_CNPJCPF = $Cliente->CLI_CNPJCPF;
            $model->COT_CLI_FONE1 = $Cliente->CLI_FONE1;
            $model->COT_CLI_INSCR_EST = $Cliente->CLI_INSCR_EST;
            $model->COT_CLI_CEP = $Cliente->CLI_CEP;
            $model->COT_CLI_EMAIL = $Cliente->CLI_EMAIL_AREA_CLIENTES;
            $model->COT_CLI_IDMOTIVO = $Cliente->CLI_IDMOTIVO;

            $model->COT_VLRIMPLANTACAO = Util::formatMoeda($Pedido->COT_VLRIMPLANTACAO);
            $model->COT_SIMPLES = $Pedido->COT_SIMPLES;
            $model->COT_IDCLIENTE = $Pedido->COT_IDCLIENTE;
            $model->COT_IDVENDEDOR = $Pedido->COT_IDVENDEDOR;
            $model->COT_IDPRODUTO = $Pedido->COT_IDPRODUTO;
            $model->COT_NROUSUARIOS = $Pedido->COT_NROUSUARIOS;
            $model->COT_USUARIOS_MOBILE = $Pedido->COT_USUARIOS_MOBILE;
            $model->COT_CLI_QTDLICENCAS_MOBILE = $Pedido->COT_CLI_QTDLICENCAS_MOBILE;
            $model->COT_CLI_MODULO_MOBILE = $Pedido->COT_CLI_MODULO_MOBILE;
            $model->COT_VLRMENSAL = Util::formatMoeda($Pedido->COT_VLRMENSAL);
            $model->COT_FUNCAO = $Pedido->COT_FUNCAO;
            $model->COT_REPRESENTANTES = $Pedido->COT_REPRESENTANTES;
            $model->COT_CPFS = $Pedido->COT_CPFS;
            $model->COT_TESTEMUNHA1 = $Pedido->COT_TESTEMUNHA1;
            $model->COT_CPF1 = $Pedido->COT_CPF1;
            $model->COT_TESTEMUNHA2 = $Pedido->COT_TESTEMUNHA2;
            $model->COT_CPF2 = $Pedido->COT_CPF2;
            $model->COT_SITUACAO = Contratos::CONTRATO;
            $model->COT_STATUS = 1;
            $model->COT_JUSTIFICATIVA = $Pedido->COT_JUSTIFICATIVA;
            $model->IdsDocumentosFiscais = $documentosFiscais;

            if (date('d') == '01') {
                $model->COT_DTINICOBRANCA = date('Y-m-d');
            } else {
                $model->COT_DTINICARENCIA = date('Y-m-d');
                $model->COT_DTFIMCARENCIA = date('Y') . '-' . date('m') . '-' . cal_days_in_month(CAL_GREGORIAN, date('m'), date('Y'));
                $DTFIMCARENCIA = explode('-', $model->COT_DTFIMCARENCIA);
                $model->COT_DTINICOBRANCA = date("Y-m-d", mktime(0, 0, 0, $DTFIMCARENCIA[1], $DTFIMCARENCIA[2] + 1, $DTFIMCARENCIA[0]));
            }

            $COT_DTINICOBRANCA = explode('-', $model->COT_DTINICOBRANCA);
            $model->COT_DTPRICOBRANCA = date("Y-m-d", mktime(0, 0, 0, $COT_DTINICOBRANCA[1] + 1, 10, $COT_DTINICOBRANCA[0]));
            $model->COT_DTCADASTRO = date('Y-m-d');
            if ($model->save()) {

                foreach ($Pedido->Itens as $modulos) {
                    $modelItem = new ContratosItens;
                    $modelItem->CTI_IDCONTRATO = $model->COT_IDCONTRATO;
                    $modelItem->CTI_IDPRODUTO = $modulos->CTI_IDPRODUTO;
                    $modelItem->save();
                }

                foreach ($Pedido->Vencimentos as $vencimento) {
                    $modelVencimentos = new ContratosVencimentos;
                    $modelVencimentos->COV_IDCONTRATO = $model->COT_IDCONTRATO;
                    $modelVencimentos->COV_DATA = $vencimento->COV_DATA;
                    $modelVencimentos->COV_VALOR = $vencimento->COV_VALOR;
                    $modelVencimentos->save();
                }

                $Atendimento = new Atendimentos;
                $Atendimento->ATD_IDCLIENTE = $model->COT_IDCLIENTE;
                $Atendimento->ATD_IDCONTRATO = $model->COT_IDCONTRATO;
                $Atendimento->ATD_IDFUNCIONARIO = $model->COT_IDVENDEDOR;
                $Atendimento->ATD_TIPO = 'D';
                $Atendimento->ATD_DTLANCAMENTO = date('Y-m-d H:i:s');
                $Atendimento->ATD_HORAINICIO = date('H:i:s');
                $Atendimento->ATD_HORAFINAL = date('H:i:s', strtotime('+1 minute'));
                $Atendimento->ATD_TOTALHORAS = '00:01:00';
                $Atendimento->ATD_IDMOTIVO = 1;
                $Atendimento->ATD_OBS = 'Contrato elaborado está aguardando análise';
                $Atendimento->ATD_DTCADASTRO = date('d/m/Y');
                $Atendimento->ATD_SITUACAO = 'R';
                $Atendimento->ATD_IDUSUARIO = User::getId();
                $Atendimento->ATD_DTALTERACAO = date('d/m/Y');
                $Atendimento->save(false, array('ATD_DTLANCAMENTO','ATD_TIPO', 'ATD_IDMOTIVO', 'ATD_DTCADASTRO', 'ATD_HORAINICIO', 'ATD_HORAFINAL', 'ATD_TOTALHORAS', 'ATD_IDFUNCIONARIO', 'ATD_SITUACAO', 'ATD_IDCLIENTE', 'ATD_IDCONTRATO', 'ATD_OBS', 'ATD_IDUSUARIO', 'ATD_DTALTERACAO'));

                MailTemplates::documentoAguardandoAnalise($model);

                $model->saveAtendimentoJustificativa();
                $model->vincular($Pedido->COT_IDCONTRATO);
                $model->saveDocumentosFiscais();
            } else {
                //pr($model->getErrors());
            }
        }

        public function actionUpdate($id)
        {
            $model = $this->loadModel($id, 'Contratos');
            if(!$model->canUpdate(true)) {
                $this->redirect(array('contratos/view&id='.$id));
            }

            $model->COT_CLI_CNPJCPF = Util::unmask($model->COT_CLI_CNPJCPF);
            $model->COT_CLI_CNPJCPF = Util::mask($model->COT_CLI_CNPJCPF, Mask::DOCUMENTO);

            if (isset($_POST['Contratos'])) {
                $model->setAttributes($_POST['Contratos']);

                $model->COT_DTCADASTRO = Util::formatDataMysql($model->COT_DTCADASTRO);
                $model->COT_DTINICARENCIA = Util::formatDataMysql($model->COT_DTINICARENCIA);
                $model->COT_DTFIMCARENCIA = Util::formatDataMysql($model->COT_DTFIMCARENCIA);
                $model->COT_DTINICOBRANCA = Util::formatDataMysql($model->COT_DTINICOBRANCA);
                $model->COT_DTPRICOBRANCA = Util::formatDataMysql($model->COT_DTPRICOBRANCA);
                $model->COT_DTATIVACAO = Util::formatDataMysql($model->COT_DTATIVACAO);

                if ($model->COT_SITUACAO != Contratos::ORCAMENTO) {

                    $fields = ['COT_CLI_NOME','COT_CLI_CNPJCPF','COT_CLI_INSCR_EST',
                        'COT_CLI_FONE1','COT_CLI_EMAIL','COT_CLI_IDMOTIVO','COT_CLI_ENDERECO',
                        'COT_CLI_NUMERO','COT_CLI_COMPLEMENTO','COT_CLI_BAIRRO','COT_CLI_CIDADE','COT_CLI_CEP'];

                    if($model->COT_SITUACAO == Contratos::ADENDO) {
                        $fields[] = 'COT_DTPRICOBRANCA';
                    }

                    if ($model->save(true, $fields)) {
                        Yii::app()->user->setFlash('success', 'Salvo com sucesso');
                        $this->redirect(array('view', 'id' => $model->COT_IDCONTRATO));
                    }
                } else {
                    if ($model->save()) {
                        ContratosItens::model()->deleteAll('CTI_IDCONTRATO=:CotId', array(':CotId' => $model->COT_IDCONTRATO));
                        if (is_array($_POST['produtos'])) {
                            foreach ($_POST['produtos'] as $id_produto => $produtos) {
                                $model2 = new ContratosItens;
                                $model2->CTI_IDCONTRATO = $model->COT_IDCONTRATO;
                                $model2->CTI_IDPRODUTO = $produtos;
                                $model2->save();
                            }
                        }
                        Yii::app()->user->setFlash('success', 'Salvo com sucesso');
                        $this->redirect(array('view', 'id' => $model->COT_IDCONTRATO));
                    }
                }
            }

            $this->render('update', array('model' => $model));
        }

        public function actionDelete($id)
        {
            if (Yii::app()->getRequest()->getIsPostRequest()) {
                $this->loadModel($id, 'Contratos')->delete();

                if (!Yii::app()->getRequest()->getIsAjaxRequest()) {
                    $this->redirect(array('admin'));
                }
            } else {
                throw new CHttpException(400, 'Sua solicitação é inválida.');
            }
        }

        public function actionAdmin()
        {
            $model = new Contratos('search');
            $model->unsetAttributes();
            if (empty($model->TOKEN)) {
                $model->TOKEN = Util::uid();
            }

            if (isset($_GET['Contratos']))
                $model->setAttributes($_GET['Contratos']);

            $this->render('admin', array('model' => $model));
        }

        public function actionRelatorio()
        {

            $model = new Contratos('search');
            $model->unsetAttributes();
            if (isset($_GET['Contratos'])){
                $model->setAttributes($_GET['Contratos']);
            }

            if(isset($_GET['exportar']) && $_GET['exportar'] == 1 ) {
                if(isset($_GET['format']) && $_GET['format'] == 'pdf'){
                    $this->actionGeneratePdf($model, $_GET['Contratos']);
                } else {
                    $this->actionGenerateExcel($model);
                }
            }

            $this->render('relatorio', array('model' => $model));
        }

        public function actionGenerateExcel($model = false)
        {
            if($model == false ){
                $model = new Contratos('search');
                if (isset($_GET['Contratos'])) {
                    $model->setAttributes($_GET['Contratos']);
                }
            }

            $search = $model->search();
            $dataProvider = $model->search($search->totalItemCount);
            if ($dataProvider === false) {
                throw new CHttpException(400, 'Sua solicitação é inválida. Você não definiu nenhum critério de busca ou seus critérios expiraram por terem sido gerados há mais de 60 minutos');
            }

            $data = $dataProvider->getData();
            Yii::app()->request->sendFile(
                'relatorio-documentos-'.date('Ymd-His').'.xlsx',
                $this->renderPartial('excelReport', array(
                    'model' => $model,
                    'data' => $data,
                ), true),
                'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet', true
            );
        }

        public function actionGeneratePdf($model = false, $pesquisa=false)
        {

            if ($model == false) {
                $model = new Contratos('search');
            }

            $search = $model->search();
            $dataProvider = $model->search($search->totalItemCount);
            if ($dataProvider === false) {
                throw new CHttpException(400, 'Sua solicitação é inválida. Você não definiu nenhum critério de busca ou seus critérios expiraram por terem sido gerados há mais de 60 minutos');
            }

            $data = $dataProvider->getData();

            $generatePath = 'arquivos/tmp/relatorio-documentos-'.date('Ymd-His');

            if($pesquisa) {
                $dados = array('generatePath' => $generatePath,
                               'pesquisa' => $pesquisa,
                               'data' => $data);
            } else {
                $dados = array('generatePath' => $generatePath,
                               'data' => $data);
            }

            Yii::app()->request->sendFile('relatorio-documentos-'.date('Ymd-His').'.pdf',
                                          $this->renderPartial('pdfRelatorio', $dados, true),
                                          'application/pdf',
                                          true
            );
        }

        public function actionRelatorioAdendos()
        {
            $model = new Contratos('search');
            $model->unsetAttributes();
            if (empty($model->TOKEN)) {
                $model->TOKEN = Util::uid();
            }

            if (isset($_GET['Contratos'])) {
                $model->setAttributes($_GET['Contratos']);
            }

            $this->render('relatorio_adendos', array('model' => $model));
        }

        public function actionRelatorioAdendosExcel($token = false)
        {
            $dataProvider = Yii::app()->cache->get($token);
            if ($dataProvider === false) {
                throw new CHttpException(400, 'Sua solicitação é inválida. Você não definiu nenhum critério de busca ou seus critérios expiraram por terem sido gerados há mais de 60 minutos');
            }
            $data = $dataProvider->getData();
            Yii::app()->request->sendFile('relatorio-adendos-'.date('d-m-Y-H-i-s').'.xls', $this->renderPartial('relatorio_adendos_excel', array('dataProvider' => $dataProvider, 'data' => $data), true), 'application/vnd.ms-excel', true);
        }

        public function actionViewcomposicao($id)
        {
            $this->render('view_composicao', array('model' => $this->loadModel($id, 'Contratos')));
        }

        public function actionDynamicMinimoTabela()
        {
            $model = new Contratos;
            $model->scenario = 'ValidacaoValoresTabela';
            $model->setAttributes($_POST['Contratos'] ?? null);
            echo Util::formatMoeda($model->getValorMinimo());
        }

        public function actionDynamicHorasImplantacao()
        {
            $model = new Contratos;
            $model->scenario = 'ValidacaoValoresTabela';
            $model->setAttributes($_POST['Contratos'] ?? null);
            if(in_array($model->COT_SITUACAO, array(Contratos::PEDIDO_IMPLANTACAO, Contratos::PEDIDO_REATIVACAO))) {
                echo $model->getMaximoHorasImplantacao();
            }
        }

        public function actionDynamicJustificativaObrigatoria()
        {
            $model = new Contratos;
            $model->scenario = 'ValidacaoValoresTabela';
            $model->setAttributes($_POST['Contratos'] ?? null);
            if(in_array($model->COT_SITUACAO, array(Contratos::PEDIDO_IMPLANTACAO, Contratos::PEDIDO_REATIVACAO))) {
                echo !$model->CampoJustificativaPedido('COT_JUSTIFICATIVA', array());
            } else {
                echo !$model->CampoJustificativa('COT_JUSTIFICATIVA', array());
            }
        }

        public function actionDocumentosFiscais()
        {
            $modulos = array();
            if(isset($_POST['produtos'])) {
                $modulos = $_POST['produtos'];
            }
            if(isset($_POST['Contratos']['COT_IDPRODUTO']) && !empty($_POST['Contratos']['COT_IDPRODUTO'])) {
                $modulos[] = $_POST['Contratos']['COT_IDPRODUTO'];
            }
            $documentos = ModulosDocumentosFiscais::model()->findByModulos($modulos);
            foreach($documentos as $id => $documento) {
                echo CHtml::tag('option', array('value' => $id),$documento, true);
            }
            Yii::app()->end();
        }

        public function actionModuloMobile()
        {
            $modulos = array();
            if(isset($_POST['produtos'])) {
                $modulos = $_POST['produtos'];
            }
            if(isset($_POST['Contratos']['COT_IDPRODUTO']) && !empty($_POST['Contratos']['COT_IDPRODUTO'])) {
                $modulos[] = $_POST['Contratos']['COT_IDPRODUTO'];
            }
            $modulos = !empty($modulos) ? implode(', ', $modulos) : "";
            $mobile = (!empty($modulos) && Modulos::model()->count("MOD_MOBILE = 1 and MOD_IDMODULO in ({$modulos})") > 0);


            echo json_encode(['mobile' => $mobile ? 1 : 0]);
            Yii::app()->end();
        }
    }
}