<?php

class SubscripcionController extends Controller {
    
    public $defaultAction = 'modificar';
    
    /**
     * @return array action filters
     */
    public function filters() {
        return array(
            'accessControl', // perform access control for CRUD operations
        );
    }

    /**
     * Specifies the access control rules.
     * This method is used by the 'accessControl' filter.
     * @return array access control rules
     */
    public function accessRules() {
        return array(
            array('allow', 
                'actions' => array('modificar'),
                'users' => array('@'),
                'expression' => 'Yii::app()->user->esCoordinador',                
            ),
            array('deny', // deny all users
                'users' => array('*'),
            ),
        );
    }
    
    public function actionModificar($id) {
        Yii::trace('Ver/modificar la subscripción del usuario', 'application.controllers.SubscripcionController');
        
        if ($id != Yii::app()->user->subscripcion->id)
            throw new CHttpException(401, Yii::t('profind', 'Acceso no autorizado.'));
        
        $subscripcion = $this->loadModel($id);
        $criterial = new CDbCriteria();
        $criterial->order = 'tipo DESC, id';        
        $productos = Producto::model()->findAll($criterial);
        
        if (isset($_POST['Subscripcion'])) {
            $subscripcion->attributes = $_POST['Subscripcion'];
            
            if ($subscripcion->save()) {
                Yii::trace('Se ha modificado la subscripción del usuario', 'application.controllers.UsuarioController');
                EMail::enviarNotificacionCambioProducto(Yii::app()->user->email, $subscripcion->producto->id);
                Yii::app()->user->setFlash('success', Yii::t('profind', 'Se ha actualizado su producto'));
                $this->redirect(array('modificar', 'id' => $id));
            }
        }

        $this->render('index', array(
            'subscripcion' => $subscripcion,
            'productos' => $productos,
        ));
    }
        
    /**
     * Returns the data model based on the primary key given in the GET variable.
     * If the data model is not found, an HTTP exception will be raised.
     * @param integer the ID of the model to be loaded
     */
    public function loadModel($id) {
        $model = Subscripcion::model()->findByPk($id);
        if ($model === null)
            throw new CHttpException(404, Yii::t('profind', 'La página solicitada no existe.'));

        return $model;
    }
        
}