<?php  

class RegistroController extends Controller{
	
	public $layout = "main";

    /**
	 * @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(){
		// Me falta colocar "correcto" en otro lugar ya que se puede ingresar como invitado.
		return array(
			array('allow',
				'actions' => array('municipios', 'parroquias', 'validarCorreo','cargarActividades'),
				'users' => array('*'),
			),
			array(
				'allow',
				'actions' => array('correcto'),
				'expression' => array($this, 'permitirCorrecto')
			),
			array('allow',
				'actions'=>array('enviar'),
				'expression' => array($this, 'permitirEnviar'),
			),
			array('allow',
				'actions'=>array('codigo'),
				'expression' => array($this, 'permitirCodigo'),
			),	
			array('allow', 
				'actions'=>array('index'),
				'expression' => array($this, 'permitirRegistro'),
			),		
			array('deny',  // deny all users
				'users'=>array('*'),
			),
		);
	}

	/**
	 * action donde muestra el formulario de registro del aportante/representante/usuario.
	 */

	public function actionIndex() {
    $model = new SidcaiAportante('agregar');
    $model2 = new SidcaiRepresentantelegal('agregar');
    $modelAlicuota = new SidcaiAporAlicuota('insert');

    $this->performAjaxValidation($model, 'sidcai-aportante-form');

    if (Yii::app()->user->hasState('tipo') && Yii::app()->user->hasState('documento')) {
        $model->apor_rif = Yii::app()->user->getState('tipo') . Yii::app()->user->getState('documento');
    }

    $date = new DateTime("now", new DateTimeZone('America/Caracas'));

    if (Yii::app()->user->hasState('permitir_registro')) {
        if (isset($_POST['SidcaiAportante'], $_POST['SidcaiRepresentantelegal'], $_POST['SidcaiAporAlicuota'])) {
            $atributos_aportante = [];
            $atributos_representante = [];
            $atributos_alicuotas = [];

            foreach ($_POST['SidcaiAportante'] as $key => $value) {
                $atributos_aportante[$key] = mb_strtoupper(CHtml::encode($value));
            }

            foreach ($_POST['SidcaiRepresentantelegal'] as $key => $value) {
                $atributos_representante[$key] = mb_strtoupper(CHtml::encode($value));
            }

            foreach ($_POST['SidcaiAporAlicuota'] as $key => $value) {
                if (is_array($value)) {
                    $value = implode(',', $value);
                }
                $atributos_alicuotas[$key] = mb_strtoupper(CHtml::encode($value));
            }

            $model->attributes = $atributos_aportante;
            $model2->attributes = $atributos_representante;
            $modelAlicuota->attributes = $atributos_alicuotas;

            // Sanitizar campos numéricos
            $modelAlicuota->alicuota = is_numeric($_POST['SidcaiAporAlicuota']['alicuota']) ? $_POST['SidcaiAporAlicuota']['alicuota'] : null;
            $modelAlicuota->apor_porcprivada = is_numeric($_POST['SidcaiAporAlicuota']['apor_porcprivada']) ? $_POST['SidcaiAporAlicuota']['apor_porcprivada'] : null;
            $modelAlicuota->apor_porcpublico = is_numeric($_POST['SidcaiAporAlicuota']['apor_porcpublico']) ? $_POST['SidcaiAporAlicuota']['apor_porcpublico'] : null;
            $modelAlicuota->apor_tipoempresa = $_POST['SidcaiAporAlicuota']['apor_tipoempresa'];
            $modelAlicuota->es_fidetel = isset($_POST['SidcaiAporAlicuota']['es_fidetel']) ? (bool)$_POST['SidcaiAporAlicuota']['es_fidetel'] : false;

            if (isset($_POST['SidcaiAporAlicuota']['apor_actividad_economica'])) {
                $modelAlicuota->apor_actividad_economica = is_array($_POST['SidcaiAporAlicuota']['apor_actividad_economica']) ?
                    implode(',', $_POST['SidcaiAporAlicuota']['apor_actividad_economica']) :
                    $_POST['SidcaiAporAlicuota']['apor_actividad_economica'];
            }

            $this->validar($model, $model2, $modelAlicuota);

            if ($model->validate() && $model2->validate()) {
                Yii::import('application.controllers.FuncionesController');

                $model->apor_fechahoraregistro = $date->format('Y-m-d H:i:s');
                $model->apor_fechahoraestatus = $date->format('Y-m-d H:i:s');
                $model->apor_actividadeconomica = "ACTIVIDAD ECONÓMICA";
                $model->esta_codigoestatus_fk = 2008;
                $model->apor_origenempresa = 1;
                $model->datos_actualizados = true;
                $model->tipo_codigo_fk = 1;
                $model->estatus_conciliacion = false;
                $model->apor_correoelectronico .= '@GMAIL.COM';
                $model->repetir_correo .= '@GMAIL.COM';

                $clave = FuncionesController::generarCodigo(10, 4);
                $model->apor_contrasena = password_hash($clave, PASSWORD_DEFAULT);

                $nacionalidad_representante = $model2->repr_nacionalidad;
                $model2->repr_documento = $nacionalidad_representante . $model2->repr_documento;
                $model2->repr_correoelectronico .= '@GMAIL.COM';

                $existe_representante = SidcaiRepresentantelegal::model()->find(
                    'repr_documento = :repr_documento',
                    array(':repr_documento' => $model2->repr_documento)
                );

                $transaction = $model2->dbConnection->beginTransaction();

                try {
                    if ($existe_representante !== null) {
                        // Tomar representante existente sin guardar
                        $model2 = $existe_representante;
                        $model2->repr_nacionalidad = $nacionalidad_representante;
                    } else {
                        // Guardar representante si no existe
                        if (!$model2->save()) {
                            throw new Exception("Error al guardar el representante.");
                        }
                    }

                    // Guardar aportante usando ID del representante
                    $model->repr_codigo_fk = $model2->repr_codigo_pk;
                    $model->apor_tipoempresa = $modelAlicuota->apor_tipoempresa;

                    if ($modelAlicuota->apor_tipoempresa == 3) {
                        $model->ciiu_codigo_fk = 9999;
                    } elseif ($modelAlicuota->apor_tipoempresa == 1) {
                        $model->ciiu_codigo_fk = 4021;
                    } elseif ($modelAlicuota->apor_tipoempresa == 2) {
                        if ($modelAlicuota->apor_porcprivada >= 51) $model->ciiu_codigo_fk = 2710;
                        if ($modelAlicuota->apor_porcpublico >= 50) $model->ciiu_codigo_fk = 9999;
                    }

                    if (!$model->save()) throw new Exception("Error al guardar el aportante.");

				
					// INSERTAR NUEVO REGISTRO EN SidcaiEjercicioFiscal
					// -----------------------------------------------------------

					// Recuperar los valores del formulario del Aportante
					$dia = $model->apor_diacierre;
					$mes = $model->apor_mescierre;

					// Crear registro nuevo
					$ejercicioFiscal = new SidcaiEjercicioFiscal();
					$ejercicioFiscal->apor_diacierre = $dia;
					$ejercicioFiscal->apor_mescierre = $mes;
					$ejercicioFiscal->estatus = 1;
					$ejercicioFiscal->apor_codigo_fk = $model->apor_codigo_pk;
					$ejercicioFiscal->fecha_actualizacion = new CDbExpression('NOW()');

					if (!$ejercicioFiscal->save(false)) {
						throw new CException('Error guardando historial de ejercicio fiscal.');
					}



                    // Guardar alícuota
                    $modelAlicuota->cod_aportante = $model->apor_codigo_pk;
                    $modelAlicuota->fecha_registro = date('Y-m-d H:i:s');
                    $modelAlicuota->fecha_modificacion = date('Y-m-d H:i:s');
                    $modelAlicuota->estatus = 1;
                    $modelAlicuota->comentarios = "Ingreso desde formulario aportante";
                    $modelAlicuota->analista_id = null;

                    if (!$modelAlicuota->save()) throw new Exception("Error al guardar la alícuota.");

                    $transaction->commit();

                    // Enviar correo
                    $correo = $model->apor_correoelectronico;
                    $nombres = $model->apor_razonsocial;
                    $titulo = "SIDCAI - Registro de empresa";
                    $datos = ['rif' => $model->apor_rif, 'clave' => $clave];
                    $mensaje = $this->mensaje_registro($datos);

                    if (FuncionesController::enviarCorreo([$correo], [$nombres], $titulo, $mensaje)) {
                        Yii::app()->user->setState('permitir_registro', null);
                        Yii::app()->user->setState('tipo', null);
                        Yii::app()->user->setState('documento', null);
                        Yii::app()->user->setState('correcto', "ok");

						
                        $this->redirect(Yii::app()->homeUrl . "registro/correcto");


						//$this->redirect(['registro/correcto', 'id' => $model->apor_codigo_pk]);
						//Yii::app()->end();
                    } else {
                        Yii::app()->user->setFlash('error_registro', "¡Ups! No se logró enviar el mensaje al correo electrónico.");
                    }

                    // Restaurar campos
                    $model->apor_correoelectronico = explode("@", $model->apor_correoelectronico)[0];
                    $model2->repr_correoelectronico = explode("@", $model2->repr_correoelectronico)[0];
                    $model2->repr_nacionalidad = substr($model2->repr_documento, 0, 1);
                    $model2->repr_documento = substr($model2->repr_documento, 1, 8);

                } catch (Exception $e) {
                    $transaction->rollBack();
                    Yii::app()->user->setFlash('error_registro', $e->getMessage());
                }

            } else {
                Yii::app()->user->setFlash('error_warning', "Por favor verifique los campos requeridos.");
                Yii::app()->user->setFlash('error_registro', "<b>¡Ups!</b> Hubo un error al registrarse, por favor intente más tarde.");
            }
        }
    }

    $model->apor_fechahoraregistro = $date->format('d/m/Y');

    $modelAlicuota = SidcaiAporAlicuota::model()->findByAttributes(
        ['cod_aportante' => $model->apor_codigo_pk, 'estatus' => 1],
        ['order' => 'fecha_registro DESC']
    );

    if (!$modelAlicuota) {
        $modelAlicuota = new SidcaiAporAlicuota();
        $modelAlicuota->cod_aportante = $model->apor_codigo_pk;
    }

    $alicuotaActual = SidcaiAporAlicuota::model()->findByAttributes(
        ['cod_aportante' => $model->apor_codigo_pk, 'estatus' => 1],
        ['order' => 'fecha_registro DESC']
    );

    $modelAlicuota->alicuota_actual = ($alicuotaActual !== null) ? $alicuotaActual->alicuota : 0;

    $this->render("index", [
        'model' => $model,
        'model2' => $model2,
        'modelAlicuota' => $modelAlicuota,
    ]);
}

	public function actionIndex22102025() {
		$model = new SidcaiAportante('agregar');
		$model2 = new SidcaiRepresentantelegal('agregar');
		$modelAlicuota = new SidcaiAporAlicuota('insert');
	
		$this->performAjaxValidation($model, 'sidcai-aportante-form');
	
		if (Yii::app()->user->hasState('tipo') && Yii::app()->user->hasState('documento')) {
			$model->apor_rif = Yii::app()->user->getState('tipo') . Yii::app()->user->getState('documento');
		}
	
		$date = new DateTime("now", new DateTimeZone('America/Caracas'));
	
		if (Yii::app()->user->hasState('permitir_registro')) {
			if (isset($_POST['SidcaiAportante'], $_POST['SidcaiRepresentantelegal'], $_POST['SidcaiAporAlicuota'])) {
				$atributos_aportante = [];
				$atributos_representante = [];
				$atributos_alicuotas = [];
	
				foreach ($_POST['SidcaiAportante'] as $key => $value) {
					$atributos_aportante[$key] = mb_strtoupper(CHtml::encode($value));
				}
	
				foreach ($_POST['SidcaiRepresentantelegal'] as $key => $value) {
					$atributos_representante[$key] = mb_strtoupper(CHtml::encode($value));
				}
	
				foreach ($_POST['SidcaiAporAlicuota'] as $key => $value) {
					if (is_array($value)) {
						$value = implode(',', $value);
					}
					$atributos_alicuotas[$key] = mb_strtoupper(CHtml::encode($value));
				}
	
				$model->attributes = $atributos_aportante;
				$model2->attributes = $atributos_representante;
				$modelAlicuota->attributes = $atributos_alicuotas;
	
				// ✅ Sanitizar campos numéricos
				$modelAlicuota->alicuota = is_numeric($_POST['SidcaiAporAlicuota']['alicuota']) ? $_POST['SidcaiAporAlicuota']['alicuota'] : null;
				$modelAlicuota->apor_porcprivada = is_numeric($_POST['SidcaiAporAlicuota']['apor_porcprivada']) ? $_POST['SidcaiAporAlicuota']['apor_porcprivada'] : null;
				$modelAlicuota->apor_porcpublico = is_numeric($_POST['SidcaiAporAlicuota']['apor_porcpublico']) ? $_POST['SidcaiAporAlicuota']['apor_porcpublico'] : null;
				$modelAlicuota->apor_tipoempresa = $_POST['SidcaiAporAlicuota']['apor_tipoempresa'];
				$modelAlicuota->es_fidetel = isset($_POST['SidcaiAporAlicuota']['es_fidetel']) ? (bool)$_POST['SidcaiAporAlicuota']['es_fidetel'] : false;
	
				if (isset($_POST['SidcaiAporAlicuota']['apor_actividad_economica'])) {
					$modelAlicuota->apor_actividad_economica = is_array($_POST['SidcaiAporAlicuota']['apor_actividad_economica']) ?
						implode(',', $_POST['SidcaiAporAlicuota']['apor_actividad_economica']) :
						$_POST['SidcaiAporAlicuota']['apor_actividad_economica'];
				}
	
				$this->validar($model, $model2, $modelAlicuota);
	
				if ($model->validate() && $model2->validate()) {
					Yii::import('application.controllers.FuncionesController');
	
					$model->apor_fechahoraregistro = $date->format('Y-m-d H:i:s');
					$model->apor_fechahoraestatus = $date->format('Y-m-d H:i:s');
					$model->apor_actividadeconomica = "ACTIVIDAD ECONÓMICA";
					$model->esta_codigoestatus_fk = 2008;
					$model->apor_origenempresa = 1;
					$model->datos_actualizados = true;
					$model->tipo_codigo_fk = 1;
					$model->estatus_conciliacion = false;
					$model->apor_correoelectronico .= '@GMAIL.COM';
					$model->repetir_correo .= '@GMAIL.COM';
	
					$clave = FuncionesController::generarCodigo(10, 4);
					$model->apor_contrasena = password_hash($clave, PASSWORD_DEFAULT);
	
					$nacionalidad_representante = $model2->repr_nacionalidad;
					$model2->repr_documento = $nacionalidad_representante . $model2->repr_documento;
					$model2->repr_correoelectronico .= '@GMAIL.COM';
	
					$existe_representante = SidcaiRepresentantelegal::model()->find(
						'repr_documento = :repr_documento',
						array(':repr_documento' => $model2->repr_documento)
					);
	
					if ($existe_representante !== null) {
						$model2 = $existe_representante;
						$model2->repr_nacionalidad = $nacionalidad_representante;
					}
	
					$transaction = $model2->dbConnection->beginTransaction();
	
					if ($model2->save()) {
						$model->repr_codigo_fk = $model2->repr_codigo_pk;
						$model->apor_tipoempresa = $modelAlicuota->apor_tipoempresa;
	
						if ($modelAlicuota->apor_tipoempresa == 3) {
							$model->ciiu_codigo_fk = 9999;
						} elseif ($modelAlicuota->apor_tipoempresa == 1) {
							$model->ciiu_codigo_fk = 4021;
						} elseif ($modelAlicuota->apor_tipoempresa == 2) {
							if ($modelAlicuota->apor_porcprivada >= 51) {
								$model->ciiu_codigo_fk = 2710;
							}
							if ($modelAlicuota->apor_porcpublico >= 50) {
								$model->ciiu_codigo_fk = 9999;
							}
						}
	
						if ($model->save()) {
							$correo = $model->apor_correoelectronico;
							$nombres = $model->apor_razonsocial;
							$titulo = "SIDCAI - Registro de empresa";
							$datos = [
								'rif' => $model->apor_rif,
								'clave' => $clave
							];
							$mensaje = $this->mensaje_registro($datos);
	
							$modelAlicuota->cod_aportante = $model->apor_codigo_pk;
							$modelAlicuota->fecha_registro = date('Y-m-d H:i:s');
							$modelAlicuota->fecha_modificacion = date('Y-m-d H:i:s');
							$modelAlicuota->estatus = 1;
							$modelAlicuota->comentarios = "Ingreso desde formulario aportante";
							$modelAlicuota->analista_id = null;
	
							if ($modelAlicuota->save()) {
								$transaction->commit();
								if (FuncionesController::enviarCorreo([$correo], [$nombres], $titulo, $mensaje)) {
									Yii::app()->user->setState('permitir_registro', null);
									Yii::app()->user->setState('tipo', null);
									Yii::app()->user->setState('documento', null);
									Yii::app()->user->setState('correcto', "ok");
									$this->redirect(Yii::app()->homeUrl . "registro/correcto");
								} else {
									Yii::app()->user->setFlash('error_registro', "¡Ups! No se logró enviar el mensaje al correo electrónico.");
								}
							} else {
								$transaction->rollBack();
								Yii::app()->user->setFlash('error_registro', "Error al guardar la alícuota.");
							}
						} else {
							$transaction->rollBack();
							Yii::app()->user->setFlash('error_registro', "Error al guardar el aportante.");
						}
					} else {
						$transaction->rollBack();
						Yii::app()->user->setFlash('error_registro', "Error al guardar el representante.");
					}
	
					// Restaurar campos
					$model->apor_correoelectronico = explode("@", $model->apor_correoelectronico)[0];
					$model2->repr_correoelectronico = explode("@", $model2->repr_correoelectronico)[0];
					$model2->repr_nacionalidad = substr($model2->repr_documento, 0, 1);
					$model2->repr_documento = substr($model2->repr_documento, 1, 8);
				} else {
					Yii::app()->user->setFlash('error_warning', "Por favor verifique los campos requeridos.");
					Yii::app()->user->setFlash('error_registro', "<b>¡Ups!</b> Hubo un error al registrarse, por favor intente más tarde.");
				}
			}
		}
	
		$model->apor_fechahoraregistro = $date->format('d/m/Y');
	
		$modelAlicuota = SidcaiAporAlicuota::model()->findByAttributes(
			['cod_aportante' => $model->apor_codigo_pk, 'estatus' => 1],
			['order' => 'fecha_registro DESC']
		);
	
		if (!$modelAlicuota) {
			$modelAlicuota = new SidcaiAporAlicuota();
			$modelAlicuota->cod_aportante = $model->apor_codigo_pk;
		}
	
		$alicuotaActual = SidcaiAporAlicuota::model()->findByAttributes(
			['cod_aportante' => $model->apor_codigo_pk, 'estatus' => 1],
			['order' => 'fecha_registro DESC']
		);
	
		$modelAlicuota->alicuota_actual = ($alicuotaActual !== null) ? $alicuotaActual->alicuota : 0;
	
		$this->render("index", [
			'model' => $model,
			'model2' => $model2,
			'modelAlicuota' => $modelAlicuota,
		]);
	}
	
	/**
	 * Enviar código al correo electrónico.
	 */
	public function actionEnviar(){
		$model = new ValidarFormEnviarCodigo;

		$this->performAjaxValidation($model, 'enviar-form');

		// Si existe las variables de sesion, que mande los valores a los input
		if(Yii::app()->user->hasState('tipo') && Yii::app()->user->hasState('documento'))
			$model->documento_r = Yii::app()->user->getState('tipo').Yii::app()->user->getState('documento');

		if(isset($_POST['ValidarFormEnviarCodigo'])){
			$model->attributes = $_POST['ValidarFormEnviarCodigo'];

			if($model->validate()){
				Yii::import('application.controllers.FuncionesController');

				// Se Genera el código y clave temporal que es enviado al correo electrónico
				Yii::app()->user->setState('clave_temporal',FuncionesController::generarCodigo(6, 3));
				//Yii::app()->user->setState('clave_temporal', "123456");
				Yii::app()->user->setState('enviar', null);
				Yii::app()->user->setState('codigo', 'ok'); // Sesion que me permite ingresar a la página del código de confirmación.

				// Datos enviados al correo del usuario.
				$mensaje = [];
				$mensaje['rif'] = $model->documento_r;
				$mensaje['codigo'] = Yii::app()->user->getState('clave_temporal');

				/**
				 * Comentar if si no hay Internet.
				 */
				if(FuncionesController::enviarCorreo([$model->email. "@gmail.com"], [""] ,"SIDCAI - Clave de Confirmacion", $this->mensaje_codigo($mensaje))){
					$cookie = new CHttpCookie('codigo', $mensaje['codigo']);
					$cookie->expire = time() + 60 * 60; // 60 minutos que tendrá el usuario para ingresar el código.
					Yii::app()->request->cookies['codigo'] = $cookie;
	
					$this->redirect(Yii::app()->homeUrl.'registro/codigo');

				}else{
					$model->addError('email', 'No se logró enviar el código a su correo. Por favor, intente más tarde.');
				}
			}
		}
		
		$this->render('enviar', array('model' => $model));
	}

	/**
	 * Valida si el código enviado al correo es igual al igresado por el usuario.
	 * De ser correcto, elimina él acceso a este mismo action.
	 */
	public function actionCodigo(){
		$model = new ValidarFormCodigo;

		$this->performAjaxValidation($model, 'codigo-form');

		if(isset($_POST['ValidarFormCodigo'])){
			$model->attributes = $_POST['ValidarFormCodigo'];

			if(Yii::app()->user->hasState('clave_temporal') && Yii::app()->user->hasState('codigo')){
				// Código que es envíado al correo del usuario.
				$codigo = Yii::app()->user->getState('clave_temporal');

				// Se borran las variables de sesiones anteriores para que no pueda ingresar de nuevo a las páginas.
				Yii::app()->user->setState('clave_temporal', null);
				Yii::app()->user->setState('codigo', null);

				// Se crea la variable de sesión que permite entrar al formulario de registro.
				Yii::app()->user->setState('permitir_registro', 'SI');

				if(strcmp($model->codigo, $codigo) === 0){
					$this->redirect(Yii::app()->homeUrl.'registro');
				}else{
					Yii::app()->user->setFlash('error', "El código ingresado es incorrecto. Por favor, realice el proceso nuevamente.");
					$this->redirect(Yii::app()->homeUrl);
				}
			}
		}

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

	public function actionCorrecto(){
		Yii::app()->user->setState("correcto", null);

		$this->render('registro-correcto');
	}



	public function actionCorrectoNew($id){
		Yii::app()->user->setState("correcto", null);

		 $model = new SidcaiRecaudo(); // ✅ Nuevo modelo Recaudo

		$recaudos = SidcaiTiporecaudo::model()->findAll(
			'tipo_habilitado = :tipo_habilitado',
			array(':tipo_habilitado' => TRUE)
		);

		// Indica si el action es para renovar recaudos.
	$renovar = false;

    $this->render("subir-recaudos", [
        'model' => $model,
		'aportante' => $id,
		'recaudos' => $recaudos,
		'renovar' => $renovar,
    ]);

		//$this->render('registro-correcto');
	}

	//Mostrar Municipios de Aportante/Representante cuando uno se registra y modifica
	public function actionMunicipios(){
		if(isset($_POST['id_estado'])){
			$id_estado = $_POST['id_estado'];

			$lista = SidcaiMunicipio::model()->findAll(
				array(
					'condition' => 'esta_codigo_fk = :esta_codigo_fk',
					'params' => array(':esta_codigo_fk' => $id_estado),
					'order' => 'muni_nombre'
				)
			);

			echo "<option value>Seleccione un Municipio.</option>";

			foreach($lista as $l){
				echo '<option value="'.$l->muni_codigo_pk.'">'.$l->muni_nombre.'</option>';
			}
		}else{
			throw new CHttpException(404, 'La página no existe.');
		}
	} 

	//Mostrar Parroquias de Aportante/Representante cuando uno se registra y modifica
	public function actionParroquias(){
		if(isset($_POST['id_municipio'])){
			$id_municipio = $_POST['id_municipio'];

			$lista = SidcaiParroquia::model()->findAll(
				array(
					'condition' => 'muni_codigo_fk = :muni_codigo_fk',
					'params' => array(':muni_codigo_fk' => $id_municipio),
					'order' => 'parr_nombre'
				)
			);

			echo "<option value>Seleccione una Parroquia.</option>";

			foreach($lista as $l){
				echo '<option value="'.$l->parr_codigo_pk.'">'.$l->parr_nombre.'</option>';
			}
		}else{
			throw new CHttpException(404, 'La página no existe.');
		}

	} 

	/**
	 * Valida que solo pueda existir un correo por empresa.
	 */
	public function actionValidarCorreo(){
		if(isset($_POST['correo'])){
			$correo = $_POST['correo'];

			if(strlen($correo) > 4){
				$data['existe'] = 0;
				$correo = mb_strtoupper($correo)."@GMAIL.COM";

				$empresa = SidcaiAportante::model()->find('apor_correoelectronico = :apor_correoelectronico', [':apor_correoelectronico' => $correo]);

				if($empresa != null){
					$data['existe'] = 1;
				}

				echo json_encode($data);
			}
		}else{
			throw new CHttpException(404, 'La página no existe.');
		}
	}


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

											Funciones

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

	/**
	 * Valida los model.
	 */
	private function validar($model, $model2){
		// Validar Aportante
		if(strpos($model->apor_correoelectronico, "@") !== false)
			return Yii::app()->user->setFlash('warning_registro', 'No ingrese el caracter "@" en el campo de correo electrónico de la empresa.');

		if(strpos($model->repetir_correo, "@") !== false)
			return Yii::app()->user->setFlash('warning_registro', 'No ingrese el caracter "@" en el campo de repetir correo electrónico de la empresa.');

		if(!is_numeric($model->apor_zonapostal)) 
			return Yii::app()->user->setFlash('warning_registro', 'Solo inserte números en la Zona Postal de la empresa.');

		if(!is_numeric($model->apor_telefono1)) 
			return Yii::app()->user->setFlash('warning_registro', 'El número de teléfono de la empresa es inválido.');

		if($model->apor_telefono2 != "" && !is_numeric($model->apor_telefono2))
			return Yii::app()->user->setFlash('warning_registro', 'El número de teléfono de la empresa es inválido.');


		// Validar Representante
		if(strpos($model2->repr_correoelectronico, "@") !== false)
			return Yii::app()->user->setFlash('warning_registro', 'No ingrese el caracter "@" en el campo de correo electrónico del Representante Legal.');

		if(!is_numeric($model2->repr_documento)) 
			return Yii::app()->user->setFlash('warning_registro', 'El documento del Representante Legal es inválido.');

		if(!is_numeric($model2->repr_telefono)) 
			return Yii::app()->user->setFlash('warning_registro', 'El número de teléfono del Representante Legal es inválido.');

		if($model2->repr_celular != "" && !is_numeric($model2->repr_celular))
			return Yii::app()->user->setFlash('warning_registro', 'El número de teléfono del Representante Legal es inválido.');

		if(!is_numeric($model2->repr_zonapostal)) 
			return Yii::app()->user->setFlash('warning_registro', 'Solo inserte número en la Zona Postal del Representante Legal.');
	}

	/**
	 * Cuerpo de mensaje al enviar el código para iniciar con el proceso de registro del Aportante.
	 */
	private function mensaje_codigo(array $datos) : string{
		$mensaje = "";
		$mensaje .= "Verifique si el RIF es correcto<br>";
		$mensaje .= "Su RIF es: <b>". $datos['rif']."</b><br><br>";
		$mensaje .= "Ingrese el siguiente código para iniciar con el proceso de registro de empresa.<br><br>";
       	$mensaje .= "Código: <b>".$datos['codigo']."<br>";
       	$mensaje .= "<br><b>Solo dispone de 60 minutos para ingresar el código, de lo contrario, tendrá que iniciar el proceso nuevamente.</b>";

       	return $mensaje;
	}

	/**
	 * Cuerpo del mensaje a enviar al registrarse
	 */
	private function mensaje_registro(array $datos) : string{
		$mensaje = "";
		$mensaje .= '<p>Bienvenido al <strong>Sistema para Declaración y control del Aporte-Inversión en Ciencia, Tecnología e ';
		$mensaje .= 'Innovación</strong>.<br /><br>';
		$mensaje .=	'Su Registro ha finalizado exitosamente, para ingresar en el sistema, deberá usar la siguiente información:<br /><br />';

		$mensaje .= 'RIF: <b>' .mb_strtoupper($datos['rif']). '</b><br />';
		$mensaje .= 'Clave (Temporal) : <b>' .$datos['clave']. '</b><br />';

		$mensaje .= "<br><br>";
		$mensaje .= "Por medidas de seguridad se le pedirá el cambio de la clave al ingresar.";

		return $mensaje;

	}

	public function actionCargarActividades()
	{
		$tipoEmpresa = Yii::app()->request->getParam('tipo_empresa');
		$actividades = array();
	
		if ($tipoEmpresa) {
			// Consulta a la base de datos para obtener las actividades según el tipo de empresa
			$criteria = new CDbCriteria();
			$criteria->condition = 'act_tipoempresa_fk = :tipo_empresa';
			$criteria->params = array(':tipo_empresa' => $tipoEmpresa);
			$criteria->params = array(':tipo_empresa' => $tipoEmpresa);
			$criteria->order = 'act_nombre ASC';
			
			$modelos = SidcaiActividadEconomica::model()->findAll($criteria);
			
			foreach ($modelos as $modelo) {
				$actividades[$modelo->act_codigo_pk] = $modelo->act_nombre;
			}
		}
	
		echo CJSON::encode($actividades);
		Yii::app()->end();
	}

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

											Expresiones

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

	//Permite la entrada a la página de enviar código
	public function permitirEnviar(){
		if(Yii::app()->user->hasState('enviar'))
			return true;
		else
			$this->redirect(Yii::app()->homeUrl);

	}

	//Permite la entrada a la página de ingresar el código
	public function permitirCodigo(){
		if(Yii::app()->user->hasState('codigo')){
			if(empty(Yii::app()->request->cookies['codigo']->value))
				$this->redirect(Yii::app()->homeUrl);
			else
				return true;
		}
		else
			$this->redirect(Yii::app()->homeUrl);
	}

	//Permite la entrada a la página de index de registro
	public function permitirRegistro(){
		if(Yii::app()->user->hasState('permitir_registro'))
			return true;
		else
			$this->redirect(Yii::app()->homeUrl);
	}

	// Permite la entrada a la página "Registro-correcto"
	// Solo estará 10 minutos.
	public function permitirCorrecto(){
		if(Yii::app()->user->hasState('correcto'))
			return true;
		else
			$this->redirect(Yii::app()->homeUrl);
	}

}

?>