<?php
$Permissoes = User::getUser(true);
if (!$Permissoes) {
    User::blockAction("Você não tem permissão para acessar esta tela");
}
class DadosAcessoController extends GxController {

    var $help = 'Informações Extras / Dados de Acesso. ';

    public function actionView($id) {

        if (User::getUser()->FUN_TBL_DADOSACESSO != '1') {
            User::blockAction('Usuário sem permissão de acesso a visualização de Informações Extras / Dados de Acesso.');
        }

        $this->render('view', array(
            'model' => $this->loadModel($id, 'DadosAcesso'),
        )); 
    }

    public function actionCreate($DAC_IDCLIENTE) {

        if (User::getUser()->FUN_TBL_DADOSACESSO != '1') {
            User::blockAction('Usuário sem permissão de acesso a visualização de Informações Extras / Dados de Acesso.');
        }

        $model = new DadosAcesso;
        $model->DAC_IDCLIENTE = (int)$DAC_IDCLIENTE;

        if (isset($_POST['DadosAcesso'])) {
            $model->setAttributes($_POST['DadosAcesso']);
            $model->DAC_IDAUTOR = User::getId();
            if ($model->save()) {
                Yii::app()->user->setFlash('success', 'Registro salvo com sucesso.');
                $this->redirect(array('clientes/savview', 'id' => $model->DAC_IDCLIENTE, 'page' => 'dados_acesso'));
            } else {
                Yii::app()->user->setFlash('error', 'Houve um erro ao tentar gravar o registro, por favor tente novamente.');
            }

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

    public function actionUpdate($id) {
        $model = $this->loadModel($id, 'DadosAcesso');
        $dados_acesso_anterior = $this->loadModel($id, 'DadosAcesso');


        if (!$model->podeEditar()) {
            User::blockAction('Usuário sem permissão de acesso a atualização de Informações Extras / Dados de Acesso.');
        }

        if (isset($_POST['DadosAcesso'])) {
            $model->setAttributes($_POST['DadosAcesso']);
            if($model->DAC_TIPO != $dados_acesso_anterior->DAC_TIPO) {
                Yii::app()->user->setFlash('error', 'Não é possível alterar o tipo de registro. Altere o status para inativo
                    e crie um novo registro.');
                $this->redirect(array('clientes/savview', 'id' => $model->DAC_IDCLIENTE, 'page' => 'dados_acesso'));
            }
            $model->DAC_DATAATUALIZACAO = date("Y-m-d H:i:s");
            if ($model->save()) {
                $this->dadosAtualizados($dados_acesso_anterior, $model);
                Yii::app()->user->setFlash('success', 'Registro editado com sucesso.');
                $this->redirect(array('clientes/savview', 'id' => $model->DAC_IDCLIENTE, 'page' => 'dados_acesso'));
            } else {
                Yii::app()->user->setFlash('error', 'Houve um erro ao tentar editar o registro, por favor tente novamente.');
            }
        }
        $this->render('update', array('model' => $model));
    }


    private function dadosAtualizados($old, $new)
    {
        $new = $this->loadModel($new->DAC_IDDADOSACESSO, 'DadosAcesso');
        $atualizacoes = array();

        if ($new->DAC_DATAATUALIZACAO != $old->DAC_DATAATUALIZACAO) {
            $atualizacoes[] = Util::formatUpdatedField('Data de Atualização', $old->DAC_DATAATUALIZACAO, $new->DAC_DATAATUALIZACAO);
        }

        if ($new->DAC_DATACADASTRO != $old->DAC_DATACADASTRO) {
            $atualizacoes[] = Util::formatUpdatedField('Data de Cadastro', $old->DAC_DATACADASTRO, $new->DAC_DATACADASTRO);
        }

        if ($new->DAC_OBSERVACAO != $old->DAC_OBSERVACAO) {
            $atualizacoes[] = Util::formatUpdatedField('Observação', $old->DAC_OBSERVACAO, $new->DAC_OBSERVACAO);
        }

        if ($new->DAC_STATUS != $old->DAC_STATUS) {
            $novo_status = $new->DAC_STATUS == 1 ? 'Ativo' : 'Inativo';
            $antigo_status = $old->DAC_STATUS == 1 ? 'Ativo' : 'Inativo';
            $atualizacoes[] = Util::formatUpdatedField('Status', $antigo_status, $novo_status);
        }

        if ($new->DAC_SENHA != $old->DAC_SENHA) {
            $atualizacoes[] = Util::formatUpdatedField('Senha', $old->DAC_SENHA, $new->DAC_SENHA);
        }

        if ($new->DAC_USUARIO != $old->DAC_USUARIO) {
            $atualizacoes[] = Util::formatUpdatedField('Usuário', $old->DAC_USUARIO, $new->DAC_USUARIO);
        }

        if ($new->DAC_LINK != $old->DAC_LINK) {
            $atualizacoes[] = Util::formatUpdatedField('Link', $old->DAC_LINK, $new->DAC_LINK);
        }

        if ($new->DAC_NOME != $old->DAC_NOME) {
            $atualizacoes[] = Util::formatUpdatedField('Identificação do Acesso / Nome do Contato', $old->DAC_NOME, $new->DAC_NOME);
        }

        if ($new->DAC_SETOR != $old->DAC_SETOR) {
            $atualizacoes[] = Util::formatUpdatedField('Setor', $old->DAC_SETOR, $new->DAC_SETOR);
        }
        if ($new->DAC_TELEFONE != $old->DAC_TELEFONE) {
            $atualizacoes[] = Util::formatUpdatedField('Telefone', $old->DAC_TELEFONE, $new->DAC_TELEFONE);
        }
        if ($new->DAC_EMAIL != $old->DAC_EMAIL) {
            $atualizacoes[] = Util::formatUpdatedField('Email', $old->DAC_EMAIL, $new->DAC_EMAIL);
        }

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

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

        if (!$model->podeExcluir()) {
            User::blockAction('Usuário sem permissão de acesso a exclusão de Informações Extras / Dados de Acesso.');
        }

        if (Yii::app()->getRequest()->getIsPostRequest()) {
            $model->delete();
        } else {
            throw new CHttpException(400, 'Sua solicitação é inválida.');
        }
    }

    public function actionEsconderModalMensagens() {
        if (Yii::app()->getRequest()->getIsAjaxRequest()) {
            if (isset($_POST['id_mensagens'])&&isset($_POST['id_cliente'])&&isset($_POST['id_funcionario']))  {
                $mensagens_id = json_decode($_POST['id_mensagens']);
                foreach ($mensagens_id as $key => $value) {
                    $model_mensagem_suporte = new MensagemSuporte;
                    $model_mensagem_suporte->MSU_IDCLIENTE = $_POST['id_cliente'];
                    $model_mensagem_suporte->MSU_IDFUNCIONARIO = $_POST['id_funcionario'];
                    $model_mensagem_suporte->MSU_IDDADOSACESSO = $value;
                    $model_mensagem_suporte->save();             
                }
            } else {
                throw new CHttpException(400, 'Sua solicitação é inválida.');
            }
        } else {
            throw new CHttpException(400, 'Sua solicitação é inválida.');
        }
    }


    public function actionAlterarStatus($id) {
        if (User::getUser()->FUN_TBL_DADOSACESSO != '1') {
            User::blockAction('Usuário sem permissão de acesso a visualização de Informações Extras / Dados de Acesso.');
        }

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

        $model->DAC_STATUS == 1 ? $model->DAC_STATUS = 0 : $model->DAC_STATUS = 1;

        if ($model->save(false, array('DAC_STATUS'))) {
            $this->dadosAtualizados($dados_acesso_anterior, $model);
            $status = ($model->DAC_STATUS == '1') ? "Ativo" : "Inativo";
            Yii::app()->user->setFlash('success', 'Status do registro alterado com sucesso para <strong>'.$status.'.</strong>');
        } else {
            Yii::app()->user->setFlash('error', 'Erro ao alterar status do registro.');
        }

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

}