<?php

class SiteController extends Controller {

    public function filters() {
        return array('accessControl');
    }

    public function accessRules() {
        return array(
            array('allow',
                'actions' => array('login'),
                'users' => array('*')
            ),
            array('allow',
                'users' => array('@')
            ),
            array('deny'),
        );
    }

    /**
     * This is the default 'index' action that is invoked
     * when an action is not explicitly requested by users.
     */
    public function actionIndex() {
        // renders the view file 'protected/views/site/index.php'
        // using the default layout 'protected/views/layouts/main.php'
        $this->render('index');
    }

    /**
     * This is the action to handle external exceptions.
     */
    public function actionError() {
        if ($error = Yii::app()->errorHandler->error) {
            if (Yii::app()->request->isAjaxRequest)
                echo $error['message'];
            else {
                $this->layout = '/layouts/error';
                $this->render('error_sistema', $error);
            }
        }
    }

    /**
     * Displays the login page
     */
    public function actionLogin() {
        $formulario = new FormularioLogin;
        $resultado = array();

        // if it is ajax validation request
        if (isset($_POST['ajax']) && $_POST['ajax'] === 'login-form') {
            $formulario->email = $_POST['FormularioLogin_email'];
            $formulario->password = $_POST['FormularioLogin_password'];

            if (!$formulario->validate()) {
                foreach ($formulario->getErrors() as $campo => $error) {
                    $resultado[$campo] = $error;
                }
                echo function_exists('json_encode') ? json_encode($resultado) : CJSON::encode($resultado);
                Yii::app()->end();
            }

            $identificacion = new IdentificacionUsuario($formulario->email, $formulario->password);
            $identificacion->authenticate();

            if ($identificacion->errorCode != IdentificacionUsuario::ERROR_NONE) {
                $resultado['password'] = Yii::t('profind', 'Email o contraseña incorrectos');
                echo function_exists('json_encode') ? json_encode($resultado) : CJSON::encode($resultado);
                Yii::app()->end();
            }

            $duracion = 0;
            Yii::app()->user->login($identificacion, $duracion);
            Yii::app()->user->setReturnUrl($this->createUrl('usuario/modificar', array('id' => $identificacion->id)));

            $resultado['status'] = '200';
            $resultado['redirect'] = Yii::app()->user->returnUrl;
            echo function_exists('json_encode') ? json_encode($resultado) : CJSON::encode($resultado);
            Yii::app()->end();
        }

        $this->redirect(Yii::app()->params['frontpage']);
    }

    /**
     * Logs out the current user and redirect to homepage.
     */
    public function actionLogout() {
        Yii::app()->user->logout();
        $this->redirect(Yii::app()->homeUrl);
    }

}