<?php

$Permissoes = User::getUser(true);

if ($Permissoes->FUN_TBL_ATENDIMENTOS == 1 ||
    $Permissoes->FUN_TBL_AGENDA_VENDEDOR == 1 ||
    $Permissoes->FUN_TBL_CONTROLE_DOCUMENTOS == 1 ||
    in_array($Permissoes->FUN_IDSETOR, array(5, 4, 3)) || User::getPrivilegio() == 11)
{

    class AtendimentosController extends GxController {

        public function actionPdf($id)
        {
            $this->render('pdf', array('model' => $this->loadModel($id, 'Atendimentos')));
        }

        public function actionView($id)
        {
            $this->render('view', array('model' => $this->loadModel($id, 'Atendimentos')));
        }

        public function actionSview($id)
        {
            $this->render('sview', array('model' => $this->loadModel($id, 'Atendimentos')));
        }

        public function actionVview($id)
        {
            $this->render('vview', array('model' => $this->loadModel($id, 'Atendimentos')));
        }

        public function actionDview($id)
        {
            $this->render('dview', array('model' => $this->loadModel($id, 'Atendimentos')));
        }

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

            if(!in_array($model->ATD_IDMOTIVO, array(467, 455)))
                User::blockAction("Atendimento inválido");

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

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

            if($model->Motivo->MOT_TIPO != 1)
                User::blockAction("Atendimento inválido");

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

        public function actionCreate($CLI_IDCLIENTE)
        {
            $model = new Atendimentos;
            $model->scenario = 'atividades';

            $arquivos = array();
            if (isset($_POST['Atendimentos'])) {
                $model->setAttributes($_POST['Atendimentos']);

                try {
                    $transaction = Yii::app()->db->beginTransaction();
                    $save = true;

                    if(isset($_POST['Arquivos']) && is_array($_POST['Arquivos'])) {
                        $arquivos = $_POST['Arquivos'];
                        if(isset($_FILES['Arquivos']) && is_array($_FILES['Arquivos'])) {
                            foreach($_FILES['Arquivos'] as $name => $files) {
                                foreach($files as $key => $value) {
                                    $arquivos[$key]['ARQ_ARQUIVO'][$name] = $value;
                                }
                            }
                        }
                        foreach($arquivos as $key => $file) {
                            $arquivo = new Arquivos;
                            $arquivo->scenario = 'upload';
                            $arquivo->setAttributes($file);
                            if (is_array($arquivo->ARQ_ARQUIVO) && !$arquivo->upload(true)) {
                                $save = false;
                            }
                            $arquivos[$key] = $arquivo;
                        }

                        if (!$save) {
                            throw new Exception("Erro ao salvar um ou mais arquivos anexados!", 2);
                        }
                    }
                    if ($save && $model->save()) {
                        foreach ($arquivos as $arquivo) {
                            $arquivo->ARQ_FOREIGNKEY = $model->ATD_IDATENDIMENTO;
                            $arquivo->ARQ_MODEL = 'Atendimentos';
                            if (!$arquivo->save()) {
                                $save = false;
                            }
                        }
                    } else {
                        $save = false;
                    }

                    if ($save) {
                        $transaction->commit();
                        if (Yii::app()->getRequest()->getIsAjaxRequest()) {
                            Yii::app()->end();
                        } else {
                            $this->redirect(array('clientes/view', 'id' => $model->ATD_IDCLIENTE, 'page' => 'atividades'));
                        }
                    }
                } catch (Exception $e) {
                    $transaction->rollback();

                    if ($e->getCode() == 1) {
                        Yii::app()->user->setFlash('warning', $e->getMessage());
                    } elseif ($e->getCode() == 2) {
                        Yii::app()->user->setFlash('error', $e->getMessage());
                    }
                }
            }

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

        public function actionAtividadesMultiplosClientesAdmin()
        {
            $model = new Atendimentos('SearchAtividadesMultiplosClientes');
            $model->unsetAttributes();

            if (empty($model->TOKEN)) {
                $model->TOKEN = Util::uid();
            }

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

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

        public function actionNovaAtividadesMultiplosClientes()
        {
            $model = new Atendimentos('AtividadesMultiplosClientes');

            $model->ATD_DTCADASTRO = date('d/m/Y');
            $model->ATD_HORAINICIO = date('H:i');

            if (isset($_POST['Atendimentos'])) {
                $model->setAttributes($_POST['Atendimentos']);
                $model->ATD_IDUSUARIO = User::getId();
                $model->ATD_HORAINICIO = substr($model->ATD_HORAINICIO, 0, 5);
                $model->ATD_HORAFINAL = substr($model->ATD_HORAFINAL, 0, 5);
                $model->ATD_TOTALHORAS = substr($model->ATD_TOTALHORAS, 0, 5);
                $model->ATD_DTLANCAMENTO = date('Y-m-d H:i:s');

                if(!User::canListUsers()) {
                    $model->ATD_IDFUNCIONARIO = User::getId();
                }
                
                if ($model->validate()) {
                    $clientes = $model->ATD_IDCLIENTE;
                    if(count($clientes) > 1) {
                        $transaction = Yii::app()->db->beginTransaction();
                        $continue = true;
                        foreach($clientes as $cliente) {
                            $model->ATD_IDATENDIMENTO = null;
                            $model->isNewRecord = true;
                            $model->ATD_IDCLIENTE = $cliente;
                            $model->ATD_MULTIPLOS_CLIENTES = 1;
                            if(!$model->save()) {
                                $continue = true;
                                return;
                            }
                        }

                        if($continue) {
                            try {
                                $transaction->commit();
                            } catch (Exception $e) {
                                $transaction->rollback();
                                $continue = true;
                            }
                        } else {
                            $transaction->rollback();
                        }
                        if ($continue) {
                            $model = new Atendimentos;
                            $model->scenario = 'atividades';
                            Yii::app()->user->setFlash('success', 'Atividade salva em todos os clientes!');
                            $this->redirect(array('atendimentos/AtividadesMultiplosClientesAdmin'));
                        } else {
                            Yii::app()->user->setFlash('error', 'Não foi possível salvar a atividade em todos os clientes, por favor tente novamente!');
                        }
                    } else if(count($clientes) == 1) {
                        $model->ATD_IDATENDIMENTO = null;
                        $model->isNewRecord = true;
                        $model->ATD_IDCLIENTE = $clientes[0];
                        $model->ATD_MULTIPLOS_CLIENTES = 0;
                        if($model->save()) {
                            Yii::app()->user->setFlash('success', 'Atividade salva com sucesso!');
                            $this->redirect(Yii::app()->createUrl('clientes/view', array('id' => $clientes[0], 'page' => 'atividades')));
                        } else {
                            $model->ATD_IDCLIENTE = $clientes;
                            Yii::app()->user->setFlash('error', 'Não foi possível salvar a atividade, por favor tente novamente!');
                        }
                    }
                }
            }

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

        public function actionSavcreate($CLI_IDCLIENTE)
        {

            $model = new Atendimentos;
            $model->scenario = 'sav_atividades';
            $arquivos = array();
            $error = false;
            $cliente = $this->loadModel($CLI_IDCLIENTE, 'Clientes');

            if (!empty($cliente->CLI_IDVERSAO)) {
                $projeto = $cliente->Versao->Projetos[0]->PRO_IDPROJETO;
            } else {
                $projeto = 1; // windel
            }

            if (isset($_POST['Atendimentos'])) {

                try {

                    $transaction = Yii::app()->db->beginTransaction();

                    if(isset($_POST['Atendimentos']['ATD_COBRAR_ATENDIMENTO']) && $_POST['Atendimentos']['ATD_COBRAR_ATENDIMENTO'] == '1') {
                        $_POST['Atendimentos']['ATD_STATUS_COBRANCA'] = 3 ; // aguardando
                    }

                    $model->setAttributes($_POST['Atendimentos']);

                    if ($_POST['Atendimentos']['ATD_SITUACAO'] == 'P') {
                        $model->ATD_SITUACAO = 'R';
                    }
                    if (isset($_POST['Atendimentos']['ATD_TIPO']) && is_array($_POST['Atendimentos']['ATD_TIPO'])) {
                        $model->ATD_TIPO = implode(',', $_POST['Atendimentos']['ATD_TIPO']);
                    }

                    $save = true;
                    $arquivos = array();

                    if(isset($_POST['Arquivos']) && is_array($_POST['Arquivos'])) {
                        $arquivos = $_POST['Arquivos'];
                        if(isset($_FILES['Arquivos']) && is_array($_FILES['Arquivos'])) {
                            foreach($_FILES['Arquivos'] as $name => $files) {
                                foreach($files as $key => $value) {
                                    $arquivos[$key]['ARQ_ARQUIVO'][$name] = $value;
                                }
                            }
                        }
                        foreach($arquivos as $key => $file) {
                            $arquivo = new Arquivos;
                            $arquivo->scenario = 'upload';
                            $arquivo->setAttributes($file);
                            if (is_array($arquivo->ARQ_ARQUIVO) && !$arquivo->upload(true)) {
                                $save = false;
                            }
                            $arquivos[$key] = $arquivo;
                        }

                        if (!$save) {
                            throw new Exception("Erro ao salvar um ou mais arquivos anexados!", 2);
                        }
                    }

                    if ($save && $model->save()) {
                        $criouPendencia = false;
                        if ($model->Cliente->CLI_SITUACAO == "A" && $model->ATD_IDMOTIVO == 151) { // Falha de Sistema
                            if ($model->ATD_VINCULAR_PENDENCIA == "N") {
                                $solicitacao = new Solicitacoes;
                                $solicitacao->scenario = "atividadePendencia";

                                $solicitacao->SOL_IDCLIENTE = $model->ATD_IDCLIENTE;
                                $solicitacao->SOL_LOGINCLIENTE = !empty($model->Cliente->CLI_CONTATO) ? $model->Cliente->CLI_CONTATO : "-";
                                $solicitacao->SOL_EMAILCLIENTE = !empty($model->Cliente->CLI_EMAIL) ? $model->Cliente->CLI_EMAIL : "-";
                                $solicitacao->SOL_IDFORMULARIO = $model->ATD_IDFORMULARIO;
                                if (!empty($model->Cliente->CLI_IDVERSAO)) {
                                    $solicitacao->SOL_IDVERSAO = $model->Cliente->CLI_IDVERSAO;
                                    $solicitacao->SOL_IDPROJETO = $model->Cliente->Versao->Projetos[0]->PRO_IDPROJETO;
                                } else {
                                    $solicitacao->SOL_IDVERSAO = 1; // sem versão
                                    $solicitacao->SOL_IDPROJETO = 1; // windel
                                }
                                $solicitacao->preencheComplexidadeHoras();
                                $solicitacao->SOL_IDLOCAL = 28; // Rascunho
                                $solicitacao->SOL_IDMOTIVO = 151;
                                $solicitacao->SOL_SITUACAO = 'A';
                                $solicitacao->SOL_IDFUNCIONARIO = User::getId();
                                if (User::getPrivilegio() == 4) {
                                    $solicitacao->SOL_IDSUPERVISOR = User::getGerenteRevenda();
                                } else {
                                    $solicitacao->SOL_IDSUPERVISOR = User::getId();
                                }
                                $solicitacao->SOL_IDREVENDA = $model->Cliente->getRevendaResponsavel2()->REV_IDREVENDA;
                                $solicitacao->SOL_LAYOUTNOVO = 1;
                                $solicitacao->SOL_LINK = "";
                                $solicitacao->SOL_TIPOFALHA = "mensagem";
                                $solicitacao->SOL_MENSAGEMFALHA = "Aguardando Informações";
                                $solicitacao->SOL_PROCEDIMENTO = "Aguardando";

                                if ($solicitacao->save()) {
                                    $modelAtividade = new SolicitacoesAtividades;

                                    $modelAtividade->SAT_IDSOLICITACAO = $solicitacao->SOL_IDPENDENCIA;
                                    $modelAtividade->SAT_DATACADASTRO = date('d/m/Y H:i:s');
                                    $modelAtividade->SAT_IDAUTOR = User::getId();
                                    $modelAtividade->SAT_IDLOCAL = 21;
                                    $modelAtividade->SAT_IDMOTIVO = $solicitacao->SOL_IDMOTIVO;
                                    $modelAtividade->SAT_SITUACAO = $solicitacao->SOL_SITUACAO;
                                    $modelAtividade->SAT_DESCRICAO = 'Pendência cadastrada por atividade, aguardando informações complementares.';

                                    $saved = $modelAtividade->save(false, array(
                                        'SAT_IDSOLICITACAO',
                                        'SAT_DATACADASTRO',
                                        'SAT_IDAUTOR',
                                        'SAT_IDLOCAL',
                                        'SAT_IDMOTIVO',
                                        'SAT_SITUACAO',
                                        'SAT_DESCRICAO'
                                    ));

                                    if ($saved) {
                                        $model->ATD_IDPENDENCIA = $solicitacao->SOL_IDPENDENCIA;
                                        if (!$model->save(false, ['ATD_IDPENDENCIA'])) {
                                            throw new Exception("Houve um erro ao vincular a pendência na atividade, tente novamente!", 2);
                                        }
                                    } else {
                                        throw new Exception("Houve um erro ao salvar a atividade na pendência, tente novamente!", 2);
                                    }
                                } else {
                                    throw new Exception("Houve um erro ao salvar a pendência, tente novamente", 2);
                                }

                                $criouPendencia = true;
                            } else {
                                $pendenciaVincular = Solicitacoes::model()->findByPk($model->ATD_VINCULAR_PENDENCIA);
                                if ($pendenciaVincular) {
                                    if ($pendenciaVincular->SOL_IDMOTIVO == 151) {
                                        $model->ATD_IDPENDENCIA = $pendenciaVincular->SOL_IDPENDENCIA;
                                        if (!$model->save(false, ['ATD_IDPENDENCIA'])) {
                                            throw new Exception("Houve um erro ao vincular a pendência na atividades, tente novamente!", 2);
                                        }
                                    } else {
                                        throw new Exception("Não é possível vincular à pendência vinculada!", 2);
                                    }
                                } else {
                                    throw new Exception("A pendência informada não existe!", 2);
                                }
                            }
                        }

                        foreach($arquivos as $arquivo) {
                            $arquivo->ARQ_FOREIGNKEY = $model->ATD_IDATENDIMENTO;
                            $arquivo->ARQ_MODEL = 'Atendimentos';
                            if (!$arquivo->save()) {
                                $save = false;
                            }
                        }

                        if ( isset($_POST['Atendimentos']['ATD_DTCADASTRORETORNO']) &&
                            !empty($_POST['Atendimentos']['ATD_DTCADASTRORETORNO'])) {

                            $dataAgendamento = $_POST['Atendimentos']['ATD_DTCADASTRORETORNO'];
                            $dataAtendimento = $_POST['Atendimentos']['ATD_DTCADASTRO'];
                            $horaAgendamento = $_POST['Atendimentos']['ATD_HORAINICIORETORNO'];
                            $horaAtendimento = $_POST['Atendimentos']['ATD_HORAINICIO'];

                            $this->checkDateCustomerService($dataAgendamento, $dataAtendimento, $horaAgendamento, $horaAtendimento);

                            $modelAtd = new Atendimentos;

                            $modelAtd->setAttributes($_POST['Atendimentos']);

                            $modelAtd->ATD_SITUACAO   = 'A';
                            $modelAtd->ATD_DTCADASTRO = $dataAgendamento;
                            $modelAtd->ATD_HORAINICIO = $horaAgendamento;
                            $modelAtd->ATD_TOTALHORAS = null;
                            $modelAtd->ATD_HORAFINAL  = null;
                            $modelAtd->ATD_OBS = "Agendamento pendente de retorno: ".$_POST['Atendimentos']['ATD_OBS'];
                            $modelAtd->ATD_TIPO = 'PR';
                            $modelAtd->ATD_AUTOMATICO = 1;

                            if (!$modelAtd->save()) {
                                throw new Exception("Houve um erro ao salvar, verifique os dados e tente novamente", 2);
                            }
                        }

                        $transaction->commit();

                        if (Yii::app()->getRequest()->getIsAjaxRequest()) {
                            Yii::app()->end();
                        } else {
                            if (!$criouPendencia) {
                                $this->redirect(
                                    array(
                                        'clientes/savview',
                                        'id' => $model->ATD_IDCLIENTE,
                                        'page' => 'atividades'
                                    )
                                );
                            } else {
                                Yii::app()->user->setFlash('success', 'Atividade cadastrada com sucesso! Por favor, complete os dados da pendência.');
                                $this->redirect(
                                    array(
                                        'solicitacoes/update',
                                        'id' => $model->ATD_IDPENDENCIA
                                    )
                                );
                            }
                        }

                    } else {
                        throw new Exception("Houve um erro ao tentar salvar, por favor tente novamente!", 2);
                    }

                } catch (CDbException $c) {
                    $transaction->rollback();
                    Yii::app()->user->setFlash('error', 'Ocorreu um erro ao executar a ação, tente novamente.');
                    $error = true;

                } catch (Exception $e) {
                    $transaction->rollback();
                    $error = true;

                    if($e->getCode() == 1){
                        Yii::app()->user->setFlash('warning', $e->getMessage());

                    } else if ($e->getCode() == 2) {
                        Yii::app()->user->setFlash('error', $e->getMessage());

                    }
                }
            }

            $this->render('sav_create', array('model' => $model,
                                              'cliente' => $cliente,
                                              'arquivos' => $arquivos,
                                              'error' => $error,
                                              'projeto' => $projeto));
        }

        public function checkDateCustomerService($dataAgendamento, $dataAtendimento, $horaAgendamento, $horaAtendimento)
        {
            $data       = new DateTime();
            $novoDia       = new DateTime();
            $data->modify("+2 days");
            $dataAgendamento = date_create_from_format('d/m/Y', $dataAgendamento);
            $dataAtendimento = date_create_from_format('d/m/Y', $dataAtendimento);

            $feriados = Util::getFeriados();

            if($data->format('N') == 6){
                $data->modify("+2 days");

            } else if ($data->format('N') == 7) {
                $data->modify("+1 days");

            }

            if( ($dataAtendimento == $dataAgendamento) && ($horaAgendamento <= $horaAtendimento) ){
                throw new Exception("O horário do agendamento deve ser posterior ao atendimento realizado.", 2);
            }

            if($dataAgendamento->format('N') == 6 || $dataAgendamento->format('N') == 7){
                throw new Exception("A data do retorno não pode ser em finais de semana.", 2);
            }

            if ($dataAgendamento > $data || $dataAgendamento < $novoDia) {
                throw new Exception("A data do retorno deve ser no máximo até 2 dias úteis.", 2);

            } else if (in_array($dataAgendamento, $feriados)) {
                throw new Exception("A data do retorno não deve ser em um dia que acontece um feriado.", 1);

            }
        }

        public function actionScreate($CLI_IDCLIENTE)
        {
            $model = new Atendimentos;
            $model->scenario = 'atendimentos';

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

                if (isset($_POST['Atendimentos']['ATD_TIPO']) && is_array($_POST['Atendimentos']['ATD_TIPO'])) {
                    $model->ATD_TIPO = implode(',', $_POST['Atendimentos']['ATD_TIPO']);
                }

                if(!in_array('V',explode(',', $model->ATD_TIPO))) {
                    $model->ATD_HORASIMPLANTACAO = '00:00';
                }

                if ($model->save()) {

                    if (Yii::app()->getRequest()->getIsAjaxRequest())
                        Yii::app()->end();
                    else
                        $this->redirect(array('clientes/savview', 'id' => $model->ATD_IDCLIENTE, 'page' => 'atividades'));
                }
            }
            $model->scenario = 'atendimentos';
            $this->render('screate', array('model' => $model, 'CLI_IDCLIENTE' => $CLI_IDCLIENTE));
        }

        public function actionVcreate()
        {
            $model = new Atendimentos;
            $model->scenario = 'atendimentos';

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

                if (isset($_POST['Atendimentos']['ATD_TIPO']) && is_array($_POST['Atendimentos']['ATD_TIPO'])) {
                    $model->ATD_TIPO = implode(',', $_POST['Atendimentos']['ATD_TIPO']);
                }

                if ($model->save()) {
                    if (Yii::app()->getRequest()->getIsAjaxRequest())
                        Yii::app()->end();
                    else
                        $this->redirect(array('clientes/view', 'id' => $model->ATD_IDCLIENTE, 'page' => 'atividades'));
                }
            }
            $model->scenario = 'atendimentos';
            $this->render('vcreate', array('model' => $model, 'CLI_IDCLIENTE' => $CLI_IDCLIENTE));
        }

        public function actionDcreate($ATD_IDCLIENTE, $ATD_IDCONTRATO)
        {
            $model = new Atendimentos;
            $model->scenario = 'documentos';

            if (isset($_POST['Atendimentos'])) {
                $model->setAttributes($_POST['Atendimentos']);
                $Documento = $this->loadModel($ATD_IDCONTRATO, 'Contratos');
                $Cliente = $this->loadModel($ATD_IDCLIENTE, 'Clientes');
                $Status = $Documento->COT_STATUS;
                $LocalAnterior = ($model->ATD_IDMOTIVO == -1) ? $Documento->getLocalAnterior() : false;
                $LocalAnteriorNome = Motivos::model()->findByPk($LocalAnterior);
                $obs = $model->ATD_OBS;

                if($model->ATD_IDMOTIVO == -1 && !$Documento->podeVoltarLocal()) {
                    Yii::app()->user->setFlash('error', 'Não é possível voltar local.');
                    $this->redirect(array('dcreate', 'ATD_IDCLIENTE' => $model->ATD_IDCLIENTE, 'ATD_IDCONTRATO' => $model->ATD_IDCONTRATO, 'retorno' => 'documentos'));
                }

                if ($model->save()) {

                    if($model->ATD_IDMOTIVO == -1) {
                        $model->ATD_OBS = 'Documento voltado para local anterior (' . $LocalAnteriorNome . '), motivo: ' . $obs;
                        $model->save(false, array('ATD_OBS'));

                        $Documento->COT_STATUS  = $LocalAnterior;
                        $Documento->save(false, array('COT_STATUS'));

                    } else if ($model->ATD_IDMOTIVO != 15 and $model->ATD_IDMOTIVO != 20) {
                        $Documento->COT_STATUS = $model->ATD_IDMOTIVO;
                        $Documento->save(false, array('COT_STATUS'));
                    }
                    $TipoDocumento = Util::getTipoDocumento($Documento->COT_SITUACAO);

                    $voltarAnalisandoDocumentacao = (
                        (
                            $model->ATD_IDMOTIVO == -1 && ($LocalAnterior == 11 || $LocalAnterior == 494)
                        )
                        && $Status == 14);
                    $voltarAnalisandoDocumentacao2 = (($model->ATD_IDMOTIVO == 11 || $model->ATD_IDMOTIVO == 494) && $Status == 14);

                    if($voltarAnalisandoDocumentacao || $voltarAnalisandoDocumentacao2) {
                        $Documento->desfazAtivacaoDocumento();
                        $Documento->desfazAtivacaoCliente();
                        $Documento->desfazReativacaoCliente($model, $LocalAnteriorNome, $obs);
                        $Documento->limpaRegistroHorasContratadas();
                        $Documento->desvinculaDocumentosFiscaisCliente();
                        $Documento->desfazTrocaSituacaoInteressado();
                        $Documento->reverteRegistroNegociacao();
                        $Documento->atualizaSolicitacaoTransferencia();
                        if($Documento->COT_TIPOASSINATURA == Contratos::ASSINADO_DIGITAL) {
                            MailTemplates::documentoAssinadoDigitalmenteCancelarAssinatura($Documento, $model);
                        }

                    } elseif (($Status == 11 or $Status == 494) and $model->ATD_IDMOTIVO == 14) { // documento ativado (processo concluído)
                        if ($Documento->COT_SITUACAO != Contratos::PEDIDO_REATIVACAO) {
                            $beforeUpdate = $Documento->getInfoClienteAtivacao();
                        } else {
                            $beforeUpdate = $Documento->getInfoClienteReativacao();
                        }

                        $Documento->ativaDocumento();
                        $Documento->ativaCliente();
                        $Documento->reativaCliente($model);
                        $Documento->registraHorasContratadas();
                        $Documento->vinculaDocumentosFiscaisCliente();
                        $Documento->trocaSituacaoInteressado();
                        $Documento->registraNegociacao();
                        $Documento->atualizaSolicitacaoTransferencia();
                        if ($Documento->COT_TIPOASSINATURA == Contratos::ASSINADO_DIGITAL) {
                            MailTemplates::documentoAssinadoDigitalmenteAguardandoAssinatura($Documento, $model);
                        }
                        
                        if ($Documento->COT_SITUACAO != Contratos::PEDIDO_REATIVACAO) {
                            $afterUpdate = $Documento->getInfoClienteAtivacao();
                        } else {
                            $afterUpdate = $Documento->getInfoClienteReativacao();
                        }

                        $Documento->lancaAtividadeAlteracaoCliente($beforeUpdate, $afterUpdate);
                    } elseif ($model->ATD_IDMOTIVO == 4) { // Aguardando aceite do cliente
                        MailTemplates::documentoAguardandoAceiteDoCliente($Documento);

                    } elseif ($model->ATD_IDMOTIVO == 6) {
                        MailTemplates::documentoAguardandoLiberacaoExcecao($Documento);
                    } elseif ($model->ATD_IDMOTIVO == 1) {
                        MailTemplates::documentoAguardandoAnalise($Documento);

                    } elseif ($model->ATD_IDMOTIVO == 21) {
                        MailTemplates::documentoComDocumentacaoPendente($Documento, $model);

                    } elseif ($model->ATD_IDMOTIVO == 22) {
                        MailTemplates::solicitadareprovacaoDocumento($Documento, $model);

                    } elseif ($model->ATD_IDMOTIVO == 8) {
                        $Documento->COT_STATUS = 4;
                        $Documento->save(false, array('COT_STATUS'));

                        $AtdExcecao = new Atendimentos;
                        $AtdExcecao->saveData(array(
                            'ATD_TIPO' => $model->ATD_TIPO,
                            'ATD_AUTOMATICO' => 1,
                            'ATD_IDMOTIVO' => 4,
                            'ATD_DTLANCAMENTO' => date('Y-m-d H:i:s'),
                            'ATD_DTCADASTRO' => date('d/m/Y'),
                            'ATD_HORAINICIO' => $model->ATD_HORAINICIO,
                            'ATD_HORAFINAL' => $model->ATD_HORAFINAL,
                            'ATD_TOTALHORAS' => $model->ATD_TOTALHORAS,
                            'ATD_IDFUNCIONARIO' => User::getId(),
                            'ATD_IDUSUARIO' => 16,
                            'ATD_SITUACAO' => $model->ATD_SITUACAO,
                            'ATD_IDCLIENTE' => $Cliente->CLI_IDCLIENTE,
                            'ATD_IDCONTRATO' => $Documento->COT_IDCONTRATO,
                            'ATD_NIVELINTERESSE' => $Cliente->CLI_NIVELINTERESSE,
                            'ATD_OBS' => 'Exceção aprovada, aguardando documentação.'
                        ));

                        MailTemplates::documentoAguardandoAceiteDoCliente($Documento);

                    } else if(in_array($model->ATD_IDMOTIVO, array(5, 12, 17))) {
                        if (isset($Documento->Vendedor) && !empty($Documento->Vendedor)) {
                            if($Documento->COT_TIPOASSINATURA == Contratos::ASSINADO_DIGITAL) {
                                MailTemplates::documentoDigitalReprovado($Documento, $model);
                            } else {
                                MailTemplates::documentoReprovado($Documento, $model);
                            }
                        } else {
                            MailTemplates::documentoSemVendedorReprovado($Documento, $model);
                        }
                    } else if($model->ATD_IDMOTIVO = 10) {
                        if($Documento->COT_TIPOASSINATURA == Contratos::ASSINADO_DIGITAL) {
                            MailTemplates::documentoAssinadoDigitalmenteAguardandoValidacao($Documento, $model);
                        }
                    }

                    if (Yii::app()->getRequest()->getIsAjaxRequest()) {
                        Yii::app()->end();
                    } else {
                        Yii::app()->user->setFlash('success', 'Salvo com sucesso.');
                        $this->redirect(array('dcreate', 'ATD_IDCLIENTE' => $model->ATD_IDCLIENTE, 'ATD_IDCONTRATO' => $model->ATD_IDCONTRATO, 'retorno' => 'documentos'));
                    }
                }
            }

            $this->render('dcreate', array('model' => $model, 'ATD_IDCLIENTE' => $ATD_IDCLIENTE, 'ATD_IDCONTRATO' => $ATD_IDCONTRATO));
        }

        public function actionPosvendas_Create($CLI_IDCLIENTE)
        {
            if (!User::getUser()->FUN_TBL_CONTROLE_POSVENDAS) {
                User::blockAction("Você não tem permissão para acessar esta tela");
            }
            $model = new Atendimentos;
            $model->setScenarioPosVendasForFormCreation();

            $cliente = $this->loadModel($CLI_IDCLIENTE, 'Clientes');
            if (!$cliente->isAllowed()) {
                User::blockAction("Você não tem permissão para acessar esta tela");
            }
            if (isset($_POST['Atendimentos'])) {
                $model->setAttributes($_POST['Atendimentos']);
                $model->setScenarioPosVendas();

                if (isset($_POST['Atendimentos']['ATD_TIPO']) && is_array($_POST['Atendimentos']['ATD_TIPO'])) {
                    $model->ATD_TIPO = implode(',', $_POST['Atendimentos']['ATD_TIPO']);
                }
                $model->ATD_TIPOAVALIACAO = 2;
                if ($model->save()) {

                    $model->updateClienteAvaliacoesPosVendas($cliente);

                    if (Yii::app()->getRequest()->getIsAjaxRequest()) {
                        Yii::app()->end();
                    } else {
                        $this->redirect(array('clientes/posvendas_view', 'id' => $model->ATD_IDCLIENTE, 'page' => 'atividades'));
                    }
                }
            }
            $this->render('posvendas_create', array('model' => $model, 'cliente' => $cliente));
        }

        public function actionImplantacao_Create($CLI_IDCLIENTE) {
            if (!User::getUser()->FUN_TBL_CONTROLE_IMPLANTACAO) {
                User::blockAction("Você não tem permissão para acessar esta tela");
            }
            $model = new Atendimentos;
            $model->setScenarioPosVendasForFormCreation();

            $cliente = Clientes::model()->findByPk($CLI_IDCLIENTE);
            if (!$cliente->isAllowed()) {
                User::blockAction("Você não tem permissão para acessar esta tela");
            }
            if ($cliente) {
                if (isset($_POST['Atendimentos'])) {
                    $model->setAttributes($_POST['Atendimentos']);
                    $model->setScenarioPosVendas();

                    if (isset($_POST['Atendimentos']['ATD_TIPO']) && is_array($_POST['Atendimentos']['ATD_TIPO'])) {
                        $model->ATD_TIPO = implode(',', $_POST['Atendimentos']['ATD_TIPO']);
                    }
                    $model->ATD_TIPOAVALIACAO = 1;
                    if ($model->save()) {
                        $model->updateClienteAvaliacoesPosVendas($cliente);

                        if (Yii::app()->getRequest()->getIsAjaxRequest()) {
                            Yii::app()->end();
                        } else {
                            Yii::app()->user->setFlash('success', 'Avaliação salva com sucesso!');
                            $this->redirect(array('clientes/implantacao_view', 'id' => $model->ATD_IDCLIENTE, 'page' => 'atividades'));
                        }
                    }
                }
                $this->render('implantacao_create', array('model' => $model, 'cliente' => $cliente));
            }
            else{
                User::blockAction("Cliente inválido!");
            }
        }

        public function actionUpdate($id)
        {
            $model = $this->loadModel($id, 'Atendimentos');
            $old = $this->loadModel($id, 'Atendimentos');
            if($model->LinkEditar != 'update') {
                Yii::app()->user->setFlash('error', 'Você não tem permissão de realizar esta ação.');
                $this->redirect(array('view', 'id' => $model->ATD_IDATENDIMENTO));
            }

            $arquivos = array();

            $model->scenario = 'atividades';

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

                try {
                    $transaction = Yii::app()->db->beginTransaction();
                    $save = true;

                    if(isset($_POST['Atendimentos']['ATD_OBS'])) {
                        $this->MailBurlar($model, $old);
                        throw new Exception("Você não pode alterar as observações dessa atividade!", 2);
                    }

                    if(isset($_POST['Arquivos']) && is_array($_POST['Arquivos'])) {
                        $arquivos = $_POST['Arquivos'];
                        if(isset($_FILES['Arquivos']) && is_array($_FILES['Arquivos'])) {
                            foreach($_FILES['Arquivos'] as $name => $files) {
                                foreach($files as $key => $value) {
                                    $arquivos[$key]['ARQ_ARQUIVO'][$name] = $value;
                                }
                            }
                        }
                        foreach($arquivos as $key => $file) {
                            $arquivo = new Arquivos;
                            $arquivo->scenario = 'upload';
                            $arquivo->setAttributes($file);
                            if (is_array($arquivo->ARQ_ARQUIVO) && !$arquivo->upload(true)) {
                                $save = false;
                            }
                            $arquivos[$key] = $arquivo;
                        }

                        if (!$save) {
                            throw new Exception("Erro ao salvar um ou mais arquivos anexados!", 2);
                        }
                    }

                    if ($save && $model->save()) {
                        foreach ($arquivos as $arquivo) {
                            $arquivo->ARQ_FOREIGNKEY = $model->ATD_IDATENDIMENTO;
                            $arquivo->ARQ_MODEL = 'Atendimentos';
                            if (!$arquivo->save()) {
                                $save = false;
                            }
                        }

                        if ($save) {
                            $dadosAtualizados = $this->dadosAtualizados($old, $model, array('ATD_OBS'));
                            if (!$dadosAtualizados) {
                                $save = false;
                            }
                        }
                    } else {
                        $save = false;
                    }

                    if ($save) {
                        $transaction->commit();
                        $this->redirect(array('clientes/view', 'id' => $model->ATD_IDCLIENTE, 'page' => 'atividades'));
                    } else {
                        throw new Exception("Ocorreu um erro ao salvar!", 2);
                    }
                 } catch (Exception $e) {
                    $transaction->rollback();

                    if ($e->getCode() == 1) {
                        Yii::app()->user->setFlash('warning', $e->getMessage());
                    } elseif ($e->getCode() == 2) {
                        Yii::app()->user->setFlash('error', $e->getMessage());
                    }
                }
            }

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

        public function actionPosvendas_update($id, $retorno) {
            $model = $this->loadModel($id, 'Atendimentos');
            $old = $this->loadModel($id, 'Atendimentos');
            if($model->LinkEditar != 'posvendas_update') {
                 Yii::app()->user->setFlash('error', 'Você não tem permissão para realizar essa ação.');
                 $this->redirect(array('view', 'id' => $model->ATD_IDATENDIMENTO));
            }
            $model->scenario = 'posvendas_update';

            $cliente = Clientes::model()->findByPk($model->ATD_IDCLIENTE);
            if (isset($_POST['Atendimentos'])) {
                $model->setAttributes($_POST['Atendimentos']);
                if ($model->save()) {
                    $this->dadosAtualizados($old, $model);
                    Yii::app()->user->setFlash('success', 'Avaliação atualizada com sucesso!');
                    $this->redirect(array("clientes/{$retorno}", 'id' => $model->ATD_IDCLIENTE, 'page' => 'atividades'));
                }
            }
            $this->render('posvendas_update', array('model' => $model, 'cliente' => $cliente));
        }

        public function actionImplantacao_update($id, $retorno) {
            $model = $this->loadModel($id, 'Atendimentos');
            $old = $this->loadModel($id, 'Atendimentos');
            if($model->LinkEditar != 'implantacao_update') {
                 Yii::app()->user->setFlash('error', 'Você não tem permissão para realizar essa ação.');
                 $this->redirect(array('view', 'id' => $model->ATD_IDATENDIMENTO));
            }
            $model->scenario = 'atividades';

            $cliente = Clientes::model()->findByPk($model->ATD_IDCLIENTE);
            if (isset($_POST['Atendimentos'])) {
                $model->setAttributes($_POST['Atendimentos']);
                if ($model->save()) {
                    $this->dadosAtualizados($old, $model);
                    Yii::app()->user->setFlash('success', 'Avaliação atualizada com sucesso!');
                    $this->redirect(array("clientes/{$retorno}", 'id' => $model->ATD_IDCLIENTE, 'page' => 'atividades'));
                }
            }
            $this->render('implantacao_update', array('model' => $model, 'cliente' => $cliente));
        }

        public function actionSavupdate($id)
        {
            $model = $this->loadModel($id, 'Atendimentos');
            $old = $this->loadModel($id, 'Atendimentos');
            if($model->LinkEditar != 'savupdate') {
                Yii::app()->user->setFlash('error', 'Você não tem permissão de realizar esta ação.');
                $this->redirect(array('view', 'id' => $model->ATD_IDATENDIMENTO));
            }
            $model->scenario = 'sav_atividades';

            if (isset($_POST['Atendimentos'])) {
                $model->setAttributes($_POST['Atendimentos']);
                if(isset($_POST['Atendimentos']['ATD_OBS'])) {
                    $this->MailBurlar($model, $old);
                    $this->redirect(array('view', 'id' => $model->ATD_IDATENDIMENTO));
                } else {
                    if (isset($_POST['Atendimentos']['ATD_TIPO']) && is_array($_POST['Atendimentos']['ATD_TIPO'])) {
                        $model->ATD_TIPO = implode(',', $_POST['Atendimentos']['ATD_TIPO']);
                    } else {
                        $model->ATD_TIPO = null;
                    }

                    if ($model->save()) {
                        $this->dadosAtualizados($old, $model, array('ATD_OBS'));

                        $this->redirect(array('clientes/savview', 'id' => $model->ATD_IDCLIENTE, 'page' => 'atividades'));
                    }
                }
            }

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

        private function MailBurlar($model, $old)
        {
            $corpo = "<p><h2>Houve um indício de tentativa de burlar o sistema.</h2>";
            $corpo .= "<b>Usuário responsável pela tentativa:</b> " . User::getName() . "<br />";
            $corpo .= "<b>Data:</b> " . date('d/m/Y H:m:i') . "<br />";
            $corpo .= "<b>Descrição da tentativa:</b> o usuário tentou alterar campos no formulário de atualização de atendimentos, os quais não podiam ser alterados pelo mesmo!<br />";
            $corpo .= "<b>Código do atendimento:</b> " . $model->ATD_IDATENDIMENTO . "<br />";
            $corpo .= "<b>Cliente:</b> " . $model->Cliente . "<br />";
            $corpo .= "<b>Campo:</b> Observação<small>(campo não presente no formulário)</small><br />";
            $corpo .= "<b>Observação anterior:</b> " . $old->ATD_OBS . "<br />";
            $corpo .= "<b>Observação informada:</b> " . $model->ATD_OBS . "</p>";

            $extra = array('CC' => array(User::getUser()->FUN_EMAIL));
            Util::sendEmail('marcio@delvale.com.br', 'Indício de tentativa de burlar o sistema identificada', $corpo, $extra);

            Yii::app()->user->setFlash('error', 'Indício de tentativa de burlar o sistema identificada. O administrador do sistema foi notificado. Caso você acredite que isto se trate de um erro, favor contate o mesmo.');
        }

        public function actionSupdate($id)
        {

            $model = $this->loadModel($id, 'Atendimentos');
            $old = $this->loadModel($id, 'Atendimentos');
            $model->scenario = 'sav_atividades';

            if($model->LinkEditar != 'supdate') {
                throw new Exception("Você não tem permissão de realizar esta ação.", 2);
            }

            if (isset($_POST['Atendimentos'])) {

                try {

                    $transaction = Yii::app()->db->beginTransaction();

                    $model->setAttributes($_POST['Atendimentos']);
                    $save = true;
                    $arquivos = array();

                    if ($_POST['Atendimentos']['ATD_SITUACAO'] == 'P') {
                        $model->ATD_SITUACAO = 'R';
                    }

                    if (isset($_POST['Atendimentos']['ATD_TIPO']) && is_array($_POST['Atendimentos']['ATD_TIPO'])) {
                        $model->ATD_TIPO = implode(',', $_POST['Atendimentos']['ATD_TIPO']);
                    } else {
                        $model->ATD_TIPO = null;
                    }

                    if(isset($_POST['Arquivos']) && is_array($_POST['Arquivos'])) {

                        $arquivos = $_POST['Arquivos'];
                        if(isset($_FILES['Arquivos']) && is_array($_FILES['Arquivos'])) {
                            foreach($_FILES['Arquivos'] as $name => $files) {
                                foreach($files as $key => $value) {
                                    $arquivos[$key]['ARQ_ARQUIVO'][$name] = $value;
                                }
                            }
                        }

                        foreach($arquivos as $key => $file) {
                            $arquivo = new Arquivos;
                            $arquivo->scenario = 'upload';
                            $arquivo->setAttributes($file);
                            if (is_array($arquivo->ARQ_ARQUIVO) && !$arquivo->upload(true)) {
                                $save = false;
                            }
                            $arquivos[$key] = $arquivo;
                        }

                    }

                    if (!$save) {
                        throw new Exception("Erro ao salvar um ou mais arquivos anexados!", 1);
                    }

                    if ($save && $model->save()) {

                        foreach($arquivos as $arquivo) {
                            $arquivo->ARQ_FOREIGNKEY = $model->ATD_IDATENDIMENTO;
                            $arquivo->ARQ_MODEL = 'Atendimentos';
                            $arquivo->save();
                        }

                        if ( isset($_POST['Atendimentos']['ATD_DTCADASTRORETORNO']) && !empty($_POST['Atendimentos']['ATD_DTCADASTRORETORNO'])) {

                            $dataAgendamento = $_POST['Atendimentos']['ATD_DTCADASTRORETORNO'];
                            $dataAtendimento = $_POST['Atendimentos']['ATD_DTCADASTRO'];
                            $horaAgendamento = $_POST['Atendimentos']['ATD_HORAINICIORETORNO'];
                            $horaAtendimento = $_POST['Atendimentos']['ATD_HORAINICIO'];

                            $this->checkDateCustomerService($dataAgendamento, $dataAtendimento, $horaAgendamento, $horaAtendimento);

                            $modelAtd = new Atendimentos;

                            $modelAtd->setAttributes($_POST['Atendimentos']);

                            if (isset($_POST['Atendimentos']['ATD_TIPO']) && is_array($_POST['Atendimentos']['ATD_TIPO'])) {
                                $modelAtd->ATD_TIPO = implode(',', $_POST['Atendimentos']['ATD_TIPO']);
                            } else {
                                $modelAtd->ATD_TIPO = null;
                            }

                            $obs = str_replace("Agendamento pendente de retorno:", '', $_POST['Atendimentos']['ATD_OBS']);

                            $modelAtd->ATD_SITUACAO   = 'A';
                            $modelAtd->ATD_DTCADASTRO = $dataAgendamento;
                            $modelAtd->ATD_HORAINICIO = $horaAgendamento;
                            $modelAtd->ATD_TOTALHORAS = null;
                            $modelAtd->ATD_HORAFINAL  = null;
                            $modelAtd->ATD_OBS = "Agendamento pendente de retorno: ".$obs;
                            $modelAtd->ATD_TIPO = 'PR';

                            if (!$modelAtd->save()) {
                                throw new Exception("Houve um erro ao salvar, verifique os dados e tente novamente", 2);
                            }
                        }

                        $transaction->commit();
                        $this->dadosAtualizados($old, $model);
                        $this->redirect(array('clientes/savview', 'id' => $model->ATD_IDCLIENTE, 'page' => 'atividades'));
                    } else {
                        $save = false;
                    }

                } catch (Exception $e) {
                    $transaction->rollback();
                    $error = true;

                    if($e->getCode() == 1){
                        Yii::app()->user->setFlash('danger', $e->getMessage());

                    } else if ($e->getCode() == 2) {
                        Yii::app()->user->setFlash('error', $e->getMessage());
                        // $this->redirect(array('view', 'id' => $model->ATD_IDATENDIMENTO));
                    }
                }

            }

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

        public function actionVupdate($id)
        {
            $model = $this->loadModel($id, 'Atendimentos');
            $old = $this->loadModel($id, 'Atendimentos');
            $model->scenario = 'atividades';

            if($model->LinkEditar != 'vupdate') {
                Yii::app()->user->setFlash('error', 'Você não tem permissão de realizar esta ação.');
                $this->redirect(array('view', 'id' => $model->ATD_IDATENDIMENTO));
            }

            $arquivos = array();

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

                try {
                    $transaction = Yii::app()->db->beginTransaction();
                    $save = true;

                    if(isset($_POST['Arquivos']) && is_array($_POST['Arquivos'])) {
                        $arquivos = $_POST['Arquivos'];
                        if(isset($_FILES['Arquivos']) && is_array($_FILES['Arquivos'])) {
                            foreach($_FILES['Arquivos'] as $name => $files) {
                                foreach($files as $key => $value) {
                                    $arquivos[$key]['ARQ_ARQUIVO'][$name] = $value;
                                }
                            }
                        }
                        foreach($arquivos as $key => $file) {
                            $arquivo = new Arquivos;
                            $arquivo->scenario = 'upload';
                            $arquivo->setAttributes($file);
                            if (is_array($arquivo->ARQ_ARQUIVO) && !$arquivo->upload(true)) {
                                $save = false;
                            }
                            $arquivos[$key] = $arquivo;
                        }

                        if (!$save) {
                            throw new Exception("Erro ao salvar um ou mais arquivos anexados!", 2);
                        }
                    }

                    if ($save && $model->save()) {
                        foreach ($arquivos as $arquivo) {
                            $arquivo->ARQ_FOREIGNKEY = $model->ATD_IDATENDIMENTO;
                            $arquivo->ARQ_MODEL = 'Atendimentos';
                            if (!$arquivo->save()) {
                                $save = false;
                            }
                        }

                        if ($save) {
                            $dadosAtualizados = $this->dadosAtualizados($old, $model);
                            if (!$dadosAtualizados) {
                                $save = false;
                            }
                        }
                    } else {
                        $save = false;
                    }

                    if ($save) {
                        $transaction->commit();
                        $this->redirect(array('clientes/view', 'id' => $model->ATD_IDCLIENTE, 'page' => 'atividades'));
                    } else {
                        throw new Exception("Ocorreu um erro ao salvar!", 2);
                    }
                } catch (Exception $e) {
                    $transaction->rollback();

                    if ($e->getCode() == 1) {
                        Yii::app()->user->setFlash('warning', $e->getMessage());
                    } elseif ($e->getCode() == 2) {
                        Yii::app()->user->setFlash('error', $e->getMessage());
                    }
                }
            }

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

        private function dadosAtualizados($old, $new, $disable = array())
        {
            $new = $this->loadModel($new->ATD_IDATENDIMENTO, 'Atendimentos');
            $atualizacoes = array();

            if ($new->ATD_DTCADASTRO != $old->ATD_DTCADASTRO) {
                $atualizacoes[] = Util::formatUpdatedField('Data', $old->ATD_DTCADASTRO, $new->ATD_DTCADASTRO);
            }
            if ($new->ATD_HORAINICIO != $old->ATD_HORAINICIO) {
                $atualizacoes[] = Util::formatUpdatedField('Hora início', $old->ATD_HORAINICIO, $new->ATD_HORAINICIO);
            }
            if ($new->ATD_HORAFINAL != $old->ATD_HORAFINAL) {
                $atualizacoes[] = Util::formatUpdatedField('Hora final', $old->ATD_HORAFINAL, $new->ATD_HORAFINAL);
            }
            if ($new->ATD_SITUACAO != $old->ATD_SITUACAO) {
                $atualizacoes[] = Util::formatUpdatedField('Situação', Util::getSituacaoAtendimento($old->ATD_SITUACAO), Util::getSituacaoAtendimento($new->ATD_SITUACAO));
            }
            if ($new->ATD_TIPO != $old->ATD_TIPO) {
                $atualizacoes[] = Util::formatUpdatedField('Tipo', Util::getTipoAtendimento(explode(',', $old->ATD_TIPO)), Util::getTipoAtendimento(explode(',',$new->ATD_TIPO)));
            }
            if ($new->ATD_IDFUNCIONARIO != $old->ATD_IDFUNCIONARIO) { // ventedor/técnico
                $atendente = 'Vendedor';
                if($new->Motivo->MOT_TIPO == 2) {
                    $atendente = 'Técnico';
                }
                $atendente_old = Funcionarios::model()->findByPk($old->ATD_IDFUNCIONARIO);
                $atendente_new = Funcionarios::model()->findByPk($new->ATD_IDFUNCIONARIO);
                $atualizacoes[] = Util::formatUpdatedField($atendente, $atendente_old, $atendente_new);
            }
            if ($new->ATD_IDMOTIVO != $old->ATD_IDMOTIVO) {
                $atualizacoes[] = Util::formatUpdatedField('Motivo', $old->Motivo, $new->Motivo);
            }
            if ($new->ATD_IDMOTIVO_FN != $old->ATD_IDMOTIVO_FN) {
                $atualizacoes[] = Util::formatUpdatedField('Motivo Fechamento Negativo', $old->MotivoFechamentoNegativo, $new->MotivoFechamentoNegativo);
            }
            if ($new->ATD_IDVERSAO != $old->ATD_IDVERSAO) {
                $atualizacoes[] = Util::formatUpdatedField('Versão do sistema', $old->Versao, $new->Versao);
            }
            if ($new->ATD_NIVELINTERESSE != $old->ATD_NIVELINTERESSE) {
                $atualizacoes[] = Util::formatUpdatedField('Nível de interesse', Util::getNivelInteresse($old->ATD_NIVELINTERESSE), Util::getNivelInteresse($new->ATD_NIVELINTERESSE));
            }
            if ($new->ATD_IDVEICULO != $old->ATD_IDVEICULO) {
                $atualizacoes[] = Util::formatUpdatedField('Veículo', $old->Veiculo, $new->Veiculo);
            }
            if ($new->ATD_KMINICIAL != $old->ATD_KMINICIAL) {
                $atualizacoes[] = Util::formatUpdatedField('KM inicial', $old->ATD_KMINICIAL, $new->ATD_KMINICIAL);
            }
            if ($new->ATD_KMFINAL != $old->ATD_KMFINAL) {
                $atualizacoes[] = Util::formatUpdatedField('KM final', $old->ATD_KMFINAL, $new->ATD_KMFINAL);
            }
            if ($new->ATD_CONTATO != $old->ATD_CONTATO) {
                $atualizacoes[] = Util::formatUpdatedField('Contato', $old->ATD_CONTATO, $new->ATD_CONTATO);
            }
            if ($new->ATD_OBS != $old->ATD_OBS && !in_array('ATD_OBS', $disable)) {
                $atualizacoes[] = Util::formatUpdatedField('Observações', $old->ATD_OBS, $new->ATD_OBS);
            }

            if (!empty($atualizacoes)) {
                if (empty($old->ATD_UPDATE)) {
                    $new->ATD_UPDATE = Util::formatAllUpdates($atualizacoes);
                } else {
                    $new->ATD_UPDATE = $old->ATD_UPDATE.PHP_EOL.PHP_EOL.Util::formatAllUpdates($atualizacoes);
                }
                return $new->save(false, array('ATD_UPDATE'));
            }
            return true;
        }

        public function actionDupdate($id)
        {
            $model = $this->loadModel($id, 'Atendimentos');
            $model->scenario = 'documentos';
            if($model->LinkEditar != 'dupdate') {
                Yii::app()->user->setFlash('error', 'Você não tem permissão de realizar esta ação.');
                $this->redirect(array('view', 'id' => $model->ATD_IDATENDIMENTO));
            }

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

                if ($model->save()) {
                    $this->redirect(array('clientes/view', 'id' => $model->ATD_IDCLIENTE, 'page' => 'atividades'));
                }
            }

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

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

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

        public function actionCdelete($id)
        {
            if (User::isAdmin()) {
                $model = $this->loadModel($id, 'Atendimentos');
                $model->delete();

                if (!Yii::app()->getRequest()->getIsAjaxRequest()) {
                    $this->redirect(array('clientes/view', 'id' => $model->ATD_IDCLIENTE, 'page' => 'atividades'));
                } else {
                    throw new CHttpException(400, 'Sua solicitação é inválida.');
                }
            }
        }

        public function actionSavdelete($id)
        {
            if (User::isAdmin()) {
                $model = $this->loadModel($id, 'Atendimentos');
                $transaction = Yii::app()->db->beginTransaction();

                $commit = false;
                if ($model->delete()) {
                    if (isset($model->HorasUsadas)) {
                        $horasUsadas = $model->HorasUsadas;
                        if ($horasUsadas->delete()) {
                            $horaContratada = $horasUsadas->HoraContratada;
                            $horaContratada->HOC_SALDO += $horasUsadas->HUS_HORAS;
                            if ($horaContratada->save(false, ['HOC_SALDO'])) {
                                $commit = true;
                            }
                        }
                    } else {
                        $commit = true;
                    }
                }

                if($commit) {
                    try {
                        $transaction->commit();
                        Yii::app()->user->setFlash('success', 'Atividade excluída com sucesso!');
                    } catch (Exception $e) {
                        $transaction->rollback();
                        Yii::app()->user->setFlash('danger', 'Ocorreu um erro na execução da ação!');
                    }
                } else {
                    $transaction->rollback();
                    Yii::app()->user->setFlash('danger', 'Ocorreu um erro na execução da ação!');
                }

                if (!Yii::app()->getRequest()->getIsAjaxRequest()) {
                    $this->redirect(array('clientes/savview', 'id' => $model->ATD_IDCLIENTE, 'page' => 'atividades'));
                } else {
                    throw new CHttpException(400, 'Sua solicitação é inválida.');
                }
            }
        }

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

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

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

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

        public function actionDdelete($id)
        {
            if (User::isAdmin()) {
                $this->loadModel($id, 'Atendimentos')->delete();

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

        public function actionAdmin()
        {
            $model = new Atendimentos('search');
            $model->unsetAttributes();

            if (empty($model->TOKEN)) {
                $model->TOKEN = Util::uid();
            }

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

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

        public function actionTelacheia()
        {
            $model = new Atendimentos('search');
            $model->unsetAttributes();

            $Motivos = Motivos::model()->findAll("MOT_TIPO = 1 and MOT_SITUACAO = 'A'");
            $Motivo = array();
            $Motivo = CHtml::listData($Motivos, 'MOT_IDMOTIVO', 'MOT_IDMOTIVO');

            if (!isset($_GET['busca_tecnico']) || empty($_GET['busca_tecnico'])) {
                $model->ATD_DTCADASTRO_INICIAL = date('d/m/Y', strtotime('-3 days'));
                $model->ATD_DTCADASTRO_FINAL = date('d/m/Y', strtotime('+3 days'));
            }

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

            if (empty($model->TOKEN)) {
                $model->TOKEN = Util::uid();
            }
            $model->BuscaTecnico = 1;
            $model->Motivos_filtro = $Motivo;
            $model->ATD_SITUACAO = 'A';

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

        public function actionTecnico()
        {
            $model = new Atendimentos('search');
            $model->unsetAttributes();

            if (empty($model->TOKEN)) {
                $model->TOKEN = Util::uid();
            }

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

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

        public function actionRelatorioVisitas()
        {
            $model = new Atendimentos('search_RelatorioVisitas');
            $model->unsetAttributes();

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

            if (!isset($model->SEARCH_STATUS)) {
                $model->SEARCH_STATUS = 'A';
            }

            if(isset($_GET['exportar']) && $_GET['exportar'] == 1) {
                $this->actionGenerateExcel($model);
            }

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

        public function actionAgendamentosComercial()
        {
            if(!in_array(User::getPrivilegio(), array(1, 6, 7, 8, 9, 10, 11, 13))) {
                User::blockAction('Você não pode acessar esta página');
            }
            $model = new Atendimentos('agendamentosComercial');
            $model->unsetAttributes();
            if (empty($model->TOKEN)) {
                $model->TOKEN = Util::uid();
            }

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

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

        public function actionAgendamentosComercialExcel($token = false)
        {
            if(!in_array(User::getPrivilegio(), array(1, 6, 7, 8, 9, 10, 11, 13))) {
                User::blockAction('Você não pode acessar esta página');
            }
            $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();
            $DataLancamento = (in_array(User::getPrivilegio(), array(1, 6, 7, 8, 9, 11, 13)));

            Yii::app()->request->sendFile('relatorio-agendamentos-comercial-'. date('d-m-Y-H-i-s') . '.xls', $this->renderPartial('agendamentos_comercial_excel', array('dataProvider' => $dataProvider, 'data' => $data, 'DataLancamento' => $DataLancamento), true), 'application/vnd.ms-excel', true);
        }

        public function actionAtividadesPorCidade($token = false)
        {
            if(!in_array(User::getPrivilegio(), array(1, 6, 7, 8, 9, 10, 11, 13))) {
                User::blockAction('Você não pode acessar esta página');
            }
            $model = new Cidades('atividadesCidade');
            $model->unsetAttributes();

            Yii::app()->cache->delete($token);

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

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

        public function actionAtividadesPorCidadeExcel($token = false)
        {
            if(!in_array(User::getPrivilegio(), array(1, 6, 7, 8, 9, 10, 11, 13))) {
                User::blockAction('Você não pode acessar esta página');
            }
            $dataProvider = Yii::app()->cache->get($token);

            if ($dataProvider === false) {
                throw new CHttpException(400, 'Não foi possível encontrar os dados solicitados');
            }
            $data = $dataProvider->getData();

            Yii::app()->request->sendFile('relatorio-atendimentos-por-cidade-'. date('d-m-Y-H-i-s') . '.xls', $this->renderPartial('atividades_por_cidade_excel', array('dataProvider' => $dataProvider, 'data' => $data), true), 'application/vnd.ms-excel', true);
        }

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

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

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

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

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

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

        public function actionGrafico()
        {
            $model = new Atendimentos('search_Grafico');
            $model->unsetAttributes();

            $dadosGrafico = false;
            if (isset($_GET['Atendimentos'])) {
                $model->setAttributes($_GET['Atendimentos']);
                $dadosGrafico = $model->getDadosGrafico();
            }

            if (!isset($model->SEARCH_STATUS)) {
                $model->SEARCH_STATUS = 'A';
            }

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

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

            $search = $model->search_RelatorioVisitas();
            $dataProvider = $model->search_RelatorioVisitas($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();

            // Administrador ou Diretor ou Supervisor ou Gerente Comercial ou Diretor Revenda ou Consultor
            // ou Gerente Suporte ou Gerente Suporte Revendas
            $incluirDataLancamento = (in_array(User::getPrivilegio(), array(1, 6, 7, 8, 9, 13, 14, 20)));
            Yii::app()->request->sendFile(
                'relatorio-atendimentos-'. date('Ymd-His') . '.xlsx',
                $this->renderPartial('excelReport', array(
                    'model' => $model,
                    'data' => $data,
                    'incluirDataLancamento' => $incluirDataLancamento
                ), true),
                'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet', true
            );
        }

        public function actionCobranca()
        {
            if(!User::getUser()->FUN_TBL_COBRANCA_ATENDIMENTO_SUPORTE == 1) {
                User::blockAction('Você não pode acessar esta página');
            }

            $model = new Atendimentos('cobranca');
            $model->unsetAttributes();

            if (empty($model->TOKEN)) {
                $model->TOKEN = Util::uid();
            }

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

            $this->render('cobranca_admin', ['model' => $model]);
        }

        public function actionCobrancaView($id)
        {
            $this->render('cobranca_view', ['model' => $this->loadModel($id, 'Atendimentos')]);
        }

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

            if (isset($_POST['Atendimentos'])) {
                try {
                    $transaction = Yii::app()->db->beginTransaction();

                    $model->setAttributes($_POST['Atendimentos']);

                    if($_POST['Atendimentos']['ATD_VALOR'] == '00,00' || $_POST['Atendimentos']['ATD_VALOR'] == ''){
                        $model->ATD_VALOR = null;
                    } else {
                        $model->ATD_VALOR = Util::convertDecimal($_POST['Atendimentos']['ATD_VALOR']);
                    }

                    if($_POST['Atendimentos']['ATD_STATUS_COBRANCA'] == 1){
                        $this->gerarCobrancaAtendimento($model);
                        $model->ATD_STATUS_FINANCEIRO = 1;
                    }

                    if (!$model->save()) {
                        throw new Exception("Não foi possivel editar o agendamento", 1);
                    }

                    $transaction->commit();
                    $this->redirect(['atendimentos/cobrancaView',
                                     'id' => $model->ATD_IDATENDIMENTO,
                                     'retorno' => 'agenda']);

                } catch (Exception $e) {
                    $transaction->rollback();
                    $error = true;

                    if($e->getCode() == 1){
                        Yii::app()->user->setFlash('danger', $e->getMessage());

                    } else if ($e->getCode() == 2) {
                        Yii::app()->user->setFlash('error', $e->getMessage());
                    }
                }
            }

            $this->render('cobranca_update', ['model' => $model]);
        }

        private function gerarCobrancaAtendimento($atendimento)
        {

            try {

                $model = new TitulosSvextras();
                $model->unsetAttributes();

                $model->TITSV_IDTITULO      = $this->getTitulosCobranca();
                $model->TITSV_IDCLIENTE     = $atendimento->ATD_IDCLIENTE;
                $model->TITSV_IDATENDIMENTO = $atendimento->ATD_IDATENDIMENTO;
                $model->TITSV_SERIE         = 'SVR';
                $model->TITSV_USUARIO       = User::getId();
                $model->TITSV_EMISSAO       = date('Y-m-d');
                $model->TITSV_VALOR         = (int)$atendimento->ATD_VALOR;
                $model->TITSV_NOMECLIFOR    = $atendimento->Cliente->CLI_NOME;
                $model->TITSV_TITULOGERADO  = 0;

                if (!$model->save()) {
                    $erro = $model->getErrors();
                    throw new Exception($erro, 2);
                }
            } catch (Exception $e) {
                if ($e->getCode() == 2) {
                    Yii::app()->user->setFlash('error', $e->getMessage());
                }
            }

        }

        private function getTitulosCobranca()
        {
            $sql = "SELECT TITSV_IDTITULO as titulo
                    FROM titulos_svextras
                    ORDER BY TITSV_IDTITULO DESC
                    LIMIT 1";

            if(null !== Yii::app()->db->createCommand($sql)->queryRow()){
                return Yii::app()->db->createCommand($sql)->queryRow()['titulo']+1;
            } else {
                return 1;
            }
        }

        public function actionCobrancaDelete($id)
        {
            if (User::isAdmin()) {
                $this->loadModel($id, 'Atendimentos')->delete();

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

        public function actionAtividadeInteressado($id) {
            if (User::canCreate()) {
                $modelInteressado = $this->loadModel($id, 'Interessados');
                if(!$modelInteressado->permissaoAtividades() || !$modelInteressado->canAddActivity()) {
                    if (empty($modelInteressado->INT_IDPROSPECTO)) {
                        User::blockAction('Não é possível lançar atividades em interessados com Prospecto / Cliente!');
                    } else {
                        User::blockAction('Você não pode acessar esta página');
                    }
                }
                $model = new Atendimentos;
                $model->ATD_IDINTERESSADO = $id;
                $model->ATD_IDFUNCIONARIO = $modelInteressado->INT_IDVENDEDOR;
                if (empty($model->ATD_DTCADASTRO)) {
                    $model->ATD_DTCADASTRO = date('d/m/Y');
                }

                if (empty($model->ATD_HORAINICIO)) {
                    $model->ATD_HORAINICIO = date('H:i');
                }

                if (empty($model->ATD_HORAFINAL)) {
                    $model->ATD_TOTALHORAS = "00:00";
                }
                $vendedorAtual = $modelInteressado->Vendedor->FUN_NOME;

                $model->scenario = 'atividadesInteressados';

                $atendimentos = filter_input(INPUT_POST, 'Atendimentos', FILTER_DEFAULT , FILTER_REQUIRE_ARRAY);
                if (!empty($atendimentos)) {
                    $transaction = Yii::app()->db->beginTransaction();
                    $continue = true;
                    $model->setAttributes($atendimentos);
                    $model->ATD_SITUACAO = "R";
                    $model->ATD_TIPO = "S";

                    if ($model->save()) {
                        if ($model->ATD_IDMOTIVO == 558) { // Troca de vendedor
                            $modelInteressado->INT_IDVENDEDOR = $model->ATD_IDFUNCIONARIO;
                            if ($modelInteressado->save(false, ['INT_IDVENDEDOR'])) {
                                $modelInteressado->refresh();
                                $vendedorNovo = $modelInteressado->Vendedor->FUN_NOME;

                                $atualizacao = "<b>Interessado teve informações alteradas pela atividade: </b>" . PHP_EOL;
                                $atualizacao .= Util::formatUpdatedField(
                                    'Vendedor',
                                    $vendedorAtual,
                                    $vendedorNovo
                                );

                                $model->ATD_OBS .= PHP_EOL;
                                $model->ATD_OBS .= $atualizacao;

                                $model->save(false, ['ATD_OBS']);
                            } else {
                                $continue = false;
                            }
                        }

                        if($continue) {
                            try {
                                $transaction->commit();
                            } catch (Exception $e) {
                                $transaction->rollback();
                                $continue = true;
                            }
                        } else {
                            $transaction->rollback();
                        }

                        if ($continue) {
                            Yii::app()->user->setFlash('success', 'Atividade salva com sucesso!');
                            $this->redirect(array(
                                'interessados/atividades',
                                'id' => $id,
                            ));
                        } else {
                            Yii::app()->user->setFlash('success', 'Ocorreu um erro ao alterar os dados no interessado!');
                        }

                    }

                }

                $this->render('createAtividadeInteressado', array(
                    'model' => $model,
                    'modelInteressado' => $modelInteressado
                ));
            } else {
                throw new CHttpException(400, "Solicitação inválida!");
            }
        }

        public function actionUpdateAtividadeInteressado($id) {
            $model = $this->loadModel($id, 'Atendimentos');
            $old = $this->loadModel($id, 'Atendimentos');
            $modelInteressado = $this->loadModel($model->ATD_IDINTERESSADO, 'Interessados');
            if(!$modelInteressado->permissaoAtividades() || !$modelInteressado->canAddActivity()) {
                User::blockAction('Você não pode acessar esta página');
            }
            $model->scenario = 'atividadesInteressados';
            if (isset($_POST['Atendimentos'])) {
                $model->setAttributes($_POST['Atendimentos']);
                if ($model->save()) {
                    $this->dadosAtualizados($old, $model);

                    if ($modelInteressado->INT_IDVENDEDOR != $model->ATD_IDFUNCIONARIO) { // Troca de vendedor
                        $modelInteressado->INT_IDVENDEDOR = $model->ATD_IDFUNCIONARIO;
                        $modelInteressado->save(false, ['INT_IDVENDEDOR']);
                    }

                    $this->redirect(array(
                        'interessados/atividades',
                        'id' => $modelInteressado->INT_CODIGO,
                    ));
                }
            }

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

        public function actionDeleteAtividadeInteressado($id) {
            if (User::isAdmin()) {
                $model = $this->loadModel($id, 'Atendimentos');
                $model->delete();

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

} elseif($Permissoes->FUN_TBL_RELATORIO_VISITA == 1) {
    class AtendimentosController extends GxController {

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

            $search = $model->search_RelatorioVisitas();
            $dataProvider = $model->search_RelatorioVisitas($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();

            // Administrador ou Diretor ou Supervisor ou Gerente Comercial ou Diretor Revenda ou Consultor
            // ou Gerente Suporte ou Gerente Suporte Revendas
            $incluirDataLancamento = (in_array(User::getPrivilegio(), array(1, 6, 7, 8, 9, 13, 14, 20)));
            Yii::app()->request->sendFile(
                'relatorio-atendimentos-'. date('Ymd-His') . '.xlsx',
                $this->renderPartial('excelReport', array(
                    'model' => $model,
                    'data' => $data,
                    'incluirDataLancamento' => $incluirDataLancamento
                ), true),
                'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet', true
            );
        }

        public function actionRelatorioVisitas() {
            $model = new Atendimentos('search_RelatorioVisitas');
            $model->unsetAttributes();

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

            if (!isset($model->SEARCH_STATUS)) {
                $model->SEARCH_STATUS = 'A';
            }

            if(isset($_GET['exportar']) && $_GET['exportar'] == 1) {
                $this->actionGenerateExcel($model);
            }

            $this->render('relatoriovisitas', array('model' => $model));
        }
    }
} elseif($Permissoes->FUN_TBL_GRAFICO_VISITA == 1) {
    class AtendimentosController extends GxController {

        public function actionGrafico() {
            $model = new Atendimentos('search_Grafico');
            $model->unsetAttributes();

            $dadosGrafico = false;
            if (isset($_GET['Atendimentos'])) {
                $model->setAttributes($_GET['Atendimentos']);
                $dadosGrafico = $model->getDadosGrafico();
            }

            if (!isset($model->SEARCH_STATUS)) {
                $model->SEARCH_STATUS = 'A';
            }

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

    }
}
