<?php

class RepresentanteController extends Controller{
	/**
	 * @var string the default layout for the views. Defaults to '//layouts/column2', meaning
	 * using two-column layout. See 'protected/views/layouts/column2.php'.
	 */
	public $layout='//layouts/panel-usuario';

	/**
	 * @return array action filters
	 */
	public function filters(){
		return array(
			'accessControl', // perform access control for CRUD operations
			'postOnly + delete', // we only allow deletion via POST request
		);
	}

	/**
	 * Specifies the access control rules.
	 * This method is used by the 'accessControl' filter.
	 * @return array access control rules
	 */
	public function accessRules(){
		return array(
			// Páginas de Usuario
			array(
				'allow',
				'actions' => array('index','actualizarAjax'),
				'expression' => array($this, 'permitirEmpresa'),
			),
			array('deny',  // deny all users
				'users'=>array('*'),
			),
		);
	}

	/**
	 * Datos del Represenante Legal del Usuario logeado.
	 */
	public function actionIndex(){
		$model = $this->loadModel(Yii::app()->user->id_representante);
		
		$model->repr_tipodocuemnto = ($model->repr_tipodocuemnto == "C") ? "Cédula" : "Pasaporte";
		$model->repr_habilitado = ($model->repr_habilitado) ? "Si" : "No";

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

	/*********************************************************************************************

											Funciones

	*********************************************************************************************/

	/**
	 * 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 $id the ID of the model to be loaded
	 * @return SidcaiRepresentantelegal the loaded model
	 * @throws CHttpException
	 */
	public function loadModel($id){
		$model=SidcaiRepresentantelegal::model()->findByPk($id);
		if($model===null)
			throw new CHttpException(404, 'La página no existe.');
		return $model;
	}

	/**
	 * Performs the AJAX validation.
	 * @param SidcaiRepresentantelegal $model the model to be validated
	 */
	protected function performAjaxValidation($model){
		if(isset($_POST['ajax']) && $_POST['ajax']==='sidcai-representantelegal-form'){
			echo CActiveForm::validate($model);
			Yii::app()->end();
		}
	}

public function actionActualizarAjax($id)
{
    // Header para JSON
    header('Content-Type: application/json');
    
    $model = SidcaiRepresentantelegal::model()->findByPk($id);
    
    if (!$model) {
        echo json_encode(['success'=>false, 'message'=>'Registro no encontrado']);
        Yii::app()->end();
    }
    
    if(isset($_POST['SidcaiRepresentantelegal'])){
        $campo = key($_POST['SidcaiRepresentantelegal']);
        $valor = $_POST['SidcaiRepresentantelegal'][$campo];
        
        // Convertir a MAYÚSCULAS excepto para campos específicos
        $camposNoMayusculas = array('repr_correoelectronico', 'repr_telefono', 'repr_celular');
        if (!in_array($campo, $camposNoMayusculas)) {
            $valor = strtoupper($valor);
        }
        
        // Log para debugging
        Yii::log("Actualizando campo: $campo = $valor para ID: $id", 'info', 'application');
        
        $model->$campo = $valor;
        
        if($model->validate(array($campo))){
            if($model->save(false)){ // false para saltar validación nuevamente
                Yii::log("Guardado exitoso: $campo = $valor", 'info', 'application');
                echo json_encode(['success'=>true]);
                Yii::app()->end();
            } else {
                Yii::log("Error al guardar en BD: " . print_r($model->getErrors(), true), 'error', 'application');
                echo json_encode([
                    'success'=>false,
                    'message'=>'Error al guardar en la base de datos'
                ]);
                Yii::app()->end();
            }
        } else {
            $errors = $model->getErrors($campo);
            Yii::log("Error validación $campo: " . print_r($errors, true), 'error', 'application');
            $errorMessage = isset($errors[0]) ? $errors[0] : 'Error de validación';
            echo json_encode([
                'success'=>false,
                'message'=>$errorMessage,
                'errors'=>$errors
            ]);
            Yii::app()->end();
        }
    }
    
    echo json_encode(['success'=>false,'message'=>'Datos inválidos']);
    Yii::app()->end();
}
	
	/*********************************************************************************************

											Expresiones

	*********************************************************************************************/

	// permite solo ingresar a las empresas
	public function permitirEmpresa(){
		if(Yii::app()->user->hasState('rif'))
			return true;
			
		$this->redirect(Yii::app()->homeUrl);
	}

}
