<?php

class AsociadoController 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/column2';

	/**
	 * @return array action filt
	 */
	public function filters()
	{
		return array(
			'accessControl', // perform access control for CRUD operations
                        'postOnly + delete',
                        array('CrugeAccessControlFilter')
		);
	}

	/**
	 * 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',  // allow all users to perform 'index' and 'view' actions
				'actions'=>array('tarjeta','correocumpleanos'),
				'users'=>array('*'),
			),
			array('allow', // allow authenticated user to perform 'create' and 'update' actions

				'actions'=>array('create','update','HaberesSocio','VistaHaberesSocio','HaberesSocioRetiroParcial','reporteNuevosAsociados','HaberesSocioTipoCredito', 'descargar', 'fotoPerfil'),
				'users'=>array('@'),
			),
			 array('allow', // allow admin user to perform 'admin' and 'delete' actions
                'actions'=>array(
                    'reporteanalista','adminAnalista','listarasociado','index','view','enviarCertificado','estatusAsociado',
                    'correocumpleanos','dividendos','dividendos2','felicitaciones','cumpleanerosmes',
                    'cumpleaneros','extraordinario','xlsnoaportante','admin','delete','beneficiario','pdf','imprime',
                    'reporte','reporte2','listar','reporte_xls','xls','validarRuta','crearCorreoMasivo',
                    'cantDestinatarios','cantEmpresas','cantPersonas','cargarUnidad','HaberesSocioLiquidacion',
                    'estadoCuenta', 'TCpdf', 'planillaFirmada'),
                'users'=>array('@'),
            ),
			array('deny',  // deny all users
				'users'=>array('*'),
			),
		);
	}

        public function actionAdminAnalista()
    {
        $model=new Asociado('searchAnalista');
        $model->unsetAttributes();  // clear any default values
        if(isset($_GET['Asociado']))
            $model->attributes=$_GET['Asociado'];

        $this->render('adminanalista',array(
            'model'=>$model,
        ));
    }
    public function actionReporteanalista() //accion que permite la generación de reporte en formato xls
    {
        yii::app()->request->sendFile("Reporteanalista.xls",
        $this->renderPartial('reporteanalista',array(
       // 'model'=>$model,
        ), true)
        );
    }
	public function actionXls() //accion que permite la generación de reporte en formato xls
    {
        yii::app()->request->sendFile("xls.xls",
        $this->renderPartial('xls',array(
        ), true)
        );
    }
    	public function actionFelicitaciones() //accion que permite la generación de reporte en formato xls
    {
             $this->render('felicitaciones');
        /*yii::app()->request->sendFile("felicitaciones.pdf",
        $this->renderPartial('pdf',array(
        ), true)
        );*/
    }
    	public function actionCumpleaneros() //accion que permite la generación de reporte en formato xls
    {
        yii::app()->request->sendFile("cumpleaneros.xls",
        $this->renderPartial('cumpleaneros',array(
        ), true)
        );
    }
    public function actionCorreocumpleanos() //accion que permite la generación de reporte en formato xls
    {
        $this->render('correocumpleanos');
    }

   public function actionEnviarCertificado() //accion que permite la generación de reporte en formato xls
    {
        $this->render('../enviocorreo/create');
    }

        public function actionListarasociado() //accion que permite la generación de reporte en formato xls
    {
        $this->render('listadoasociados');
        /*yii::app()->request->sendFile("dividendos1parte.xls",
        $this->renderPartial('dividendos',array(
        ), true)
        );*/
    }
    public function actionDividendos() //accion que permite la generación de reporte en formato xls
    {
        $this->render('dividendos');
        /*yii::app()->request->sendFile("dividendos1parte.xls",
        $this->renderPartial('dividendos',array(
        ), true)
        );*/
    }
    public function actionDividendos2() //accion que permite la generación de reporte en formato xls
    {
        yii::app()->request->sendFile("dividendos2parte.xls",
        $this->renderPartial('didivendos2',array(
        ), true)
        );
    }
      	public function actionCumpleanerosmes() //accion que permite la generación de reporte en formato xls
    {
        yii::app()->request->sendFile("cumpleanerosmes.xls",
        $this->renderPartial('cumpleanerosmes',array(
        ), true)
        );
    }
    	public function actionXlsnoaportante() //accion que permite la generación de reporte en formato xls
    {
        yii::app()->request->sendFile("noaportante.xls",
        $this->renderPartial('xlsnoaportante',array(
        ), true));
    }


    public function actionCargarUnidad()
{
    $data= Unidad::model()->findAllBySql("select * from unidad where idlugartrabajo
=:keyword and blnborrado='f' order by descripcion asc", array(':keyword'=>$_POST['Asociado']['oficina']));

    $data=CHtml::listData($data,'idunidad','descripcion');
    echo "<option value=''>Seleccione la Unidad</option>";
    foreach($data as $value=>$name)
    {
            echo CHtml::tag('option', array('value'=>$value),CHtml::encode($name),true);
    }
}

	  public function actionReporte_xls() //accion que permite la generación de reporte en formato xls
    {
		//        $model=  Estado::model()->findAll();
        yii::app()->request->sendFile("reporte_xls.xls",
        $this->renderPartial('reporte_xls',array(
       // 'model'=>$model,
        ), true)
        );
    }
      public function actionListar($term) {
      $criteria = new CDbCriteria;                                     //
    //$criteria->condition = "LOWER(nombre_estado) like LOWER(:term)"; // La condición que va a tener nuestro query, en nuestro caso buscaremos por
      $criteria->condition ='"Cedula"=:term'; // La condición que va a tener nuestro query, en nuestro caso buscaremos por
      $criteria->params = array(':term'=> ''.$_GET['term'].'');    // nombre_estado indiferentemente minúsculas y mayúsculas utilizando un like '% %'
      $criteria->limit = 30;                                         // Cantidad máxima a mostrar
      $data = TVenezolanos::model()->findAll($criteria);                   // Ejecutamos nuestra búsqueda en el modelo Estado
      $arr = array();
      foreach ($data as $item) {
          $arr[] = array(
              'id' => $item->cedula,                                // Guardamos el campo id para mas tarde asignarlo al campo cuando se seleccione alguna opción
              'value' => $item->Nombre,                  // almacenamos el nombre_estado para mostrarlo en el listado
              'label' => $item->cedula,                  //
          );
      }
      echo CJSON::encode($arr);
      }
        public function actionExtraordinario()
    {
      $this->render('extraordinario');
     }
  public function actionReporte()
    {
      $this->render('reporte');
     }
   public function actionReporte2()
    {
      $this->render('reporte2');
     }
	/**
	 * Displays a particular model.
	 * @param integer $id the ID of the model to be displayed
	 */
	 public function actionView($id = null)
	 {
	  if (Yii::app()->user->checkAccess('usuario_asociado') && !Yii::app()->user->checkAccess('usuario_administrador') ){
	 	 $id = Asociado::model()->find('cedula=:cedula AND blnborrado = false AND id_estatus in(1,4) ORDER BY idasociado desc',
	 																						 array(':cedula'=>CrugeUserI::model()->findByPk(Yii::app()->user->id)->cedula))->idasociado;
	  }
	  $model = $this->loadModel($id);
	  $beneficiarios =  Beneficiario::model()->findAll('blnborrado=false and idasociado=:idasociado',array(':idasociado'=>$id));
	  $this->render('view',array(
	 	 'model'=>$model,
	 	 'beneficiarios'=>$beneficiarios,
	  ));
	 }
	 public function actionEstatusAsociado($id)
	 {
	  if (Yii::app()->user->checkAccess('usuario_asociado') && !Yii::app()->user->checkAccess('usuario_administrador') ){
	 	 $this->redirect(array('view'));
	  }
	  $model = $this->loadModel($id);
    $modelSeguimiento =  new AsociadoEstatus('EstatusAsociado');
          $model->scenario = 'CambioEstatus';
          if(isset($_POST['AsociadoEstatus'])){
              // $model->attributes = $_POST['Asociado'];
              // $model->id_usuario = Yii::app()->user->id;

              $modelSeguimiento->attributes = $_POST['AsociadoEstatus'];
              $modelSeguimiento->idasociado = $model->idasociado;
              //echo "<pre>";print_r($model);exit;
              if($modelSeguimiento->validate()){
                  $transaction = Yii::app()->db->beginTransaction();
				try {
              $modelSeguimiento->fecha_movimiento = date('Y-m-d',strtotime($modelSeguimiento->fecha_movimiento));
              AsociadoEstatus::model()->updateAll(['actual'=>false],'idasociado=:idasociado',[':idasociado'=>$id]);

                                        if($modelSeguimiento->save()){
                                          // si los estatus son fallecido o finiquito por fallecimiento se elimina la cuenta
                                            if($modelSeguimiento->id_estatus_asociado ==3 || $modelSeguimiento->id_estatus_asociado ==5){
                                              CrugeUserI::model()->updateAll(array('state'=>2),'cedula=:cedula',array(':cedula'=>$model->cedula));
                                            }
                                            $transaction->commit();
                                            Yii::app()->user->setFlash('success', 'Los datos han sido actualizado exitosamente');
                                        }
                                        else{
                                             Yii::app()->user->setFlash('error', 'Ha ocurrido un error al tratar de actualizar al asociado.');
                                        }

					$this->redirect(array('admin'));

				}
			catch (Exception $e){echo "<pre>";print_r($e);exit;
				//throw new CHttpException(400,$e->getMessage());
				$transaction->rollBack();
                                Yii::app()->user->setFlash('error', 'Ha ocurrido un error al tratar de actualizar al asociado.');
                                $this->redirect(array('admin'));
			}
              }
          }
          $this->render('estatusAsociado',array(
     'model'=>$model,
	 	 'modelSeguimiento'=>$modelSeguimiento,
	  ));
	 }

    public function actionPdf($id = null)
    {
        if (Yii::app()->user->checkAccess('usuario_asociado') && !Yii::app()->user->checkAccess('usuario_administrador') ){
            $id = Asociado::get(Yii::app()->user->id);
        }

        $this->render('pdf',array(
            'model' => $this->loadModel($id),
            'empresa' => Empresa::model()->find()
        ));
    }

    public function actionDescargar($id)
    {
        if (
            Yii::app()->user->checkAccess('usuario_asociado') &&
            !Yii::app()->user->checkAccess('usuario_administrador')
        ) {
            $id = Asociado::get(Yii::app()->user->id);
        }

        Yii::createComponent('application.extensions.mpdf60.mpdf');
        $mpdf = new mPDF('win-1252', 'LETTER', 8, 'arial', 5, 5, 0, 5, 5, 5);
        $mpdf->useSubstitutions = false;
        $mpdf->defaultfooterfontsize = 6;

        $planilla = $this->renderPartial('planilla', array(
            'model' => $this->loadModel($id),
            'empresa' => Empresa::model()->find()
        ), true);

        $mpdf->WriteHTML($planilla);
        $mpdf->Output("Ficha-Contrato-{$id}.pdf", 'D');
    }

  public function actionTarjeta($id)
  {
	  $sql=("select a.idasociado,a.cedula, a.nombre, a.apellidos,a.fechanacimiento,a.correoelectronico, c.descripcion as empresa,age(now(), a.fechanacimiento) as edad
    from asociado a, lugar_trabajo c, porcentaje p
      where a.blnborrado=false  and a.oficina = c.idlugartrabajo
      and a.porcentaje=p.idporcentaje
      and a.blnborrado=false
    AND	EXTRACT(MONTH FROM fechanacimiento) = date_part('month', now())
    AND EXTRACT(DAY FROM fechanacimiento) = date_part('day', now())
    and a.idasociado=$id
  order by empresa,fechanacimiento");
	$connection=Yii::app()->db;
	$command=$connection->createCommand($sql);
	$resultadopro=$command->queryAll();
	$val= count($resultadopro);
        if($val>0){
      $this->render('tarjeta',array(
          'model'=>$this->loadModel($id),
        ));

        }
  }
  public function actionImprime($id)
  {
	  	  if($id=="10101101110111"){
		$user=Yii::app()->user->id;
        	$sql = "select * from cruge_user where iduser= $user and state= 1";
		$resp = Yii::app()->db->createCommand($sql)->queryAll();
        	$cedula= $resp[0]['cedula'];
		$id_a= Asociado::model()->findAll('"cedula"=:cedula  and blnborrado=false', array(':cedula'=>$cedula));
		if($id_a != null){  $id= $id_a[0]['idasociado'];}
		  }
      $this->render('imprime',array(
          'model'=>$this->loadModel($id),
          'empresa'=>Empresa::model()->find()
      ));
  }

	/**
	 * Creates a new model.
	 * If creation is successful, the browser will be redirected to the 'view' page.
	 */
	public function actionBeneficiario($id)
	{
					  if($id=="10101101110111"){
		$user=Yii::app()->user->id;
        	$sql = "select * from cruge_user where iduser= $user and state= 1";
		$resp = Yii::app()->db->createCommand($sql)->queryAll();
        	$cedula= $resp[0]['cedula'];
		$id_a= Asociado::model()->findAll('"cedula"=:cedula  and blnborrado=false', array(':cedula'=>$cedula));
		if($id_a != null){  $id= $id_a[0]['idasociado'];}
		  }
				$this->redirect(array('beneficiario/create','id'=>$id));
	}

	public function actionCreate()
	{
            if (Yii::app()->user->checkAccess('usuario_asociado') && !Yii::app()->user->checkAccess('usuario_administrador') ){
	 	 $this->redirect(array('update',));
	  }
		$model=new Asociado('administrador');
		$usuarioAsociado = FALSE;
                $modelAsociadoPorcentaje = new PorcentajeDescuentoAsociadoPatrono('Registro');
		// Uncomment the following line if AJAX validation is needed
		// $this->performAjaxValidation($model);

		if(isset($_POST['Asociado']))
		{
			$model->attributes=$_POST['Asociado'];
            $model->setNacionalidad();
			//$modelAsociadoPorcentaje->attributes=$_POST['PorcentajeDescuentoAsociadoPatrono'];
			//$modelAsociadoPorcentaje->attributes=$_POST['PorcentajeDescuentoAsociadoPatrono'];
			 $model->clvcreado_por=Yii::app()->user->id;
			// $model->apellidos=strtoupper($model->apellidos);
                        if($model->fechanacimiento=='')
                            $model->fechanacimiento=null;

			if($model->activar ==1)
					$model->actualizado=1;
			else
				$model->actualizado=0;

			if($model->validate() /*&& $modelAsociadoPorcentaje->validate()*/){
				$transaction = Yii::app()->db->beginTransaction();
				try {
					 	$model->save();
                                                /*$modelAsociadoPorcentaje->idasociado = $model->idasociado;
                                                $modelAsociadoPorcentaje->id_porcentaje_patrono = $modelAsociadoPorcentaje->getIdPorcentajePatrono();
                                                $modelAsociadoPorcentaje->save();*/

						// verifica para no duplicar
            $modelEstatus = new AsociadoEstatus();
            $modelEstatus->idasociado = $model->idasociado;
            $modelEstatus->id_estatus_asociado = 1;
            $modelEstatus->save();
						if(Yii::app()->user->um->loadUser($model->cedula) == null)
						{
								// asi se crea un usuario (una nueva instancia en memoria volatil)
								$modelUsuario = Yii::app()->user->um->createBlankUser();
								$modelUsuario->username = $model->cedula;
								$modelUsuario->email = ($model->correoelectronico!='')?$model->correoelectronico:'ejemplo@ejemplo.com';
								$modelUsuario->cedula = $model->cedula;
								$modelUsuario->nombres = $model->nombre;
								$modelUsuario->apellidos = $model->apellidos;
								$modelUsuario->username = $model->cedula;

								// la establece como "Activada"
								Yii::app()->user->um->activateAccount($modelUsuario);
								// ahora a ponerle una clave
								Yii::app()->user->um->changePassword($modelUsuario,$model->cedula);
								// guarda usando el API, la cual hace pasar al usuario por el sistema de filtros.
								if(Yii::app()->user->um->save($modelUsuario)){
										 Yii::app()->user->rbac->assign("usuario_asociado", $modelUsuario->primaryKey);
								}
							 }
						$transaction->commit();
						// enviar msj
						if($model->correoelectronico !=''){
							CorreoElectronico::enviarCorreo(array('nombre'=>$model->nombre.' '.$model->apellidos,
                                                                                    'correo'=>$model->correoelectronico,
                                                                                    'asunto'=>'Registo de los Datos de la Planilla',
                                                                                    'mensaje'=>$this->renderPartial('correoRegistroAsociado',array(
                                                                                            'model'=>$model,
                                                                                            'empresa' =>  Empresa::model()->find(),
                                                                                    ), true)
                                                                            ));
						}

					Yii::app()->user->setFlash('success', 'Los datos han sido actualizado exitosamente');
					$this->redirect(array('admin'));

				}
			catch (Exception $e){
				//throw new CHttpException(400,$e->getMessage());
				$transaction->rollBack();
                                Yii::app()->user->setFlash('error', 'Ha ocurrido un error al tratar de guardar al asociado.');
                                $this->redirect(array('admin'));
			}



			}
		}
		$this->render('create',array(
					'model'=>$model,
					'usuarioAsociado'=>$usuarioAsociado,
					'modelAsociadoPorcentaje'=>$modelAsociadoPorcentaje,

		));
	}

	/**
	 * Updates a particular model.
	 * If update is successful, the browser will be redirected to the 'view' page.
	 * @param integer $id the ID of the model to be updated
	 */
	public function actionUpdate($id = null)
    {
        $escenario = 'administrador';
        $usuarioAsociado = false;
        // Rol asociado verifica si el asociado tiene un registro en la tabla, si existe verifica que no este en Estatus borrado y este actualizado
        if (
            Yii::app()->user->checkAccess('usuario_asociado') &&
            ! Yii::app()->user->checkAccess('usuario_administrador')
        ) {
            $id = Asociado::model()->find(
                'cedula=:cedula AND blnborrado = false AND id_estatus in(1,4) ORDER BY idasociado desc',
                [':cedula' => CrugeUserI::model()->findByPk(Yii::app()->user->id)->cedula]
            )->idasociado;
            $escenario = 'asociado';
            $usuarioAsociado = true;
        }

        $model = $this->loadModel($id);
        $model->scenario = $escenario;
        $cedula = $model->cedula;
        $modelUsuario = CrugeUserI::model()->findByPk(Yii::app()->user->id);
        $modelUsuario->password = '';
        $modelUsuario->scenario = 'actualizacion';
        $modelAsociadoPorcentaje = PorcentajeDescuentoAsociadoPatrono::model()->find('blnborrado=false');
        if (! $modelAsociadoPorcentaje) {
            $modelAsociadoPorcentaje = new PorcentajeDescuentoAsociadoPatrono();
        }

        if (isset($_POST['Asociado'])) {
            $valido = true;
            $model->attributes = $_POST['Asociado'];
            $model->setNacionalidad();
            $imagen = CUploadedFile::getInstance($model, 'foto');
            $model->foto = $imagen;
            if (
                Yii::app()->user->checkAccess('usuario_asociado') &&
                ! Yii::app()->user->checkAccess('usuario_administrador')
            ) {
                $model->cedula = $cedula;
            }
            $valido = $model->validate() && $valido;
            if (isset($_POST['CrugeUserI'])) {
                $modelUsuario->attributes = $_POST['CrugeUserI'];
                $valido = $modelUsuario->validate() && $valido;

                if ($modelUsuario->password == $modelUsuario->cedula) {
                    $modelUsuario->addError('password', 'No puede colocar la Cedula como clave');
                    $valido = false;
                }
                if ($modelUsuario->password != $modelUsuario->repetirPassword) {
                    $modelUsuario->addError('repetirPassword', 'La clave que ha introducido no coincide');
                    $valido = false;
                }
            }

            if ($valido) {
                $transaction = Yii::app()->db->beginTransaction();
                try {
                    // Actualiza la fecha de inscripción segun condiciones de activación
                    if ($model->primeraActualizacionDePlanilla()) {
                        $model->fecha_inscripcion_actualizada = true;
                        $model->fechaingreso = date('Y-m-d');
                    }
                    $model->actualizado = 1;

                    if (! is_null($imagen)) {
                        $ruta = vsprintf('%s%s.%s', [
                            'images/fotos_perfil_asociado/',
                            $model->randomString(),
                            $imagen->getExtensionName(),
                        ]);
                        if (! $imagen->saveAs($ruta)) {
                            $transaction->rollBack();
                            Yii::app()->user->setFlash('error', 'Ha ocurrido un error al subir la foto de perfil.');

                            return $this->redirect(['admin']);
                        }
                        $model->foto = $ruta;
                    }
                    $model->save();

                    if (isset($_POST['CrugeUserI'])) {
                        $modelUsuario->password = md5($modelUsuario->password);
                        $modelUsuario->email = $model->correoelectronico;
                        $modelUsuario->save();
                    }

                    $transaction->commit();

                    CorreoElectronico::enviarCorreo([
                        'nombre' => $model->nombre.' '.$model->apellidos,
                        'correo' => $model->correoelectronico,
                        'asunto' => 'Actualización de los datos de la planilla',
                        'mensaje' => $this->renderPartial(
                            'correoActualizacionAsociado',
                            [
                                'model' => $model,
                                'empresa' => Empresa::model()->find(),
                            ],
                            true
                        ),
                    ]);
                    Yii::app()->user->setFlash('success', 'Los datos han sido actualizado exitosamente');

                    if (Yii::app()->user->checkAccess('usuario_asociado')) {
                        $this->redirect(['/cruge/ui/principal']);
                    } else {
                        $this->redirect(['view', 'id' => $model->idasociado]);
                    }
                } catch (Exception $e) {
                    $transaction->rollBack();
                    echo '<pre>';
                    print_r($e);
                    echo '</pre>';
                    die();
                    Yii::app()->user->setFlash('error', 'Ha ocurrido un error al tratar de actualizar al asociado.');
                    $this->redirect(['admin']);
                }
            }
        }
        $this->render('update', [
            'model' => $model,
            'usuarioAsociado' => $usuarioAsociado,
            'modelUsuario' => $modelUsuario,
            'modelAsociadoPorcentaje' => $modelAsociadoPorcentaje,
        ]);
    }

	public function actionDelete($id)
	{
       $model=$this->loadModel($id);
	//	if(Yii::app()->request->isPostRequest)
	if($id!="")
		{

			// we only allow deletion via POST request
			  $sql=0;
                    $status="blnborrado='T'";
                    $sql='update asociado set '.$status.' where idasociado='.$id.';';
                    $connection=Yii::app()->db;
                    $command=$connection->createCommand($sql);
                    $row=$command->queryAll();

                    /*$sql='update tblsolicitud_proceso set '.$status.' where clvsolicitud='.$id.';';
                    $connection=Yii::app()->db;
                    $command=$connection->createCommand($sql);
                    $row=$command->queryAll();*/


			// if AJAX request (triggered by deletion via admin grid view), we should not redirect the browser
			if($row!="")
				$this->redirect(isset($_POST['returnUrl']) ? $_POST['returnUrl'] : array('admin'));
		}
		else
			throw new CHttpException(400,'Invalid request. Please do not repeat this request again.');
	}
	/**
	 * Deletes a particular model.
	 * If deletion is successful, the browser will be redirected to the 'admin' page.
	 * @param integer $id the ID of the model to be deleted
	 */
	/*public function actionDelete($id)
	{
		if(Yii::app()->request->isPostRequest)
		{
			// we only allow deletion via POST request
			$this->loadModel($id)->delete();

			// if AJAX request (triggered by deletion via admin grid view), we should not redirect the browser
			if(!isset($_GET['ajax']))
				$this->redirect(isset($_POST['returnUrl']) ? $_POST['returnUrl'] : array('admin'));
		}
		else
			throw new CHttpException(400,'Invalid request. Please do not repeat this request again.');
	}
*/
	/**
	 * Lists all models.
	 */
	public function actionIndex()
	{
		$dataProvider=new CActiveDataProvider('Asociado');
		$this->render('index',array(
			'dataProvider'=>$dataProvider,
		));
	}

	/**
	 * Manages all models.
	 */
	public function actionAdmin()
	{
		$model=new Asociado('search');
		$model->unsetAttributes();  // clear any default values
		if (isset($_GET['Asociado'])) {
			$model->attributes = $_GET['Asociado'];
        }

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

	public function actionValidarRuta()
	{

		$model=new Asociado('search');
		$model->unsetAttributes();  // clear any default values
		$ruta= $_GET['ruta'];
		$id=  $_GET['valor'];

		if ($ruta == '1')
		   $this->renderPartial('view',array('model'=>$this->loadModel($id)));

		if ($ruta == '2')
		   $this->renderPartial('update',array('model'=>$this->loadModel($id)));

	        if ($ruta == '3')
	            $this->actionBeneficiario($id);
		   //$this->renderPartial('beneficiario',array('id'=>$id));


	        if ($ruta == '4')
		   $this->renderPartial('pdf',array('model'=>$this->loadModel($id)));
		   //$this->redirect(array('asociado/view','id'=>'3552'));

	}


        public function actionReporteNuevosAsociados()
    {
       $model=new Asociado('esc_periodo');
       if(isset($_POST['yt0']))
           {
            $model->mes=$_POST['Asociado']['mes'];
            $model->desde=$_POST['Asociado']['desde'];
            $model->hasta=$_POST['Asociado']['hasta'];
            $model->consulta=$_POST['Asociado']['consulta'];
            if($model->consulta==1)$model->scenario='esc_fecha';

           if($model->validate())
            {
                $unidades='';

                if(Yii::app()->user->checkaccess('usuario_rrhh')){
                       $unidadusu=UnidadUsuario::model()->findAll(array('select'=>'idunidad','condition'=>'idusuario='.Yii::app()->user->id));

                       $clvunid = array();
                       foreach ($unidadusu as $iduni) {
                            $clvunid[] = $iduni->idunidad;
                        }
                  $clvunid= implode(",", $clvunid);
                  $unidades= "AND idunidad in ($clvunid)";


                  }
                      if($unidades==null || Yii::app()->user->checkaccess('admin')){
                          $unidades='';
                      }

               #Consulta
               if($model->consulta==0)


               $asociados=  Asociado::model()->findAll(array('order'=>'fecha_registro asc','condition'=>'id_estatus=1 AND (date_part(\'month\',fecha_registro)='.$model->mes.' AND date_part(\'year\',fecha_registro)='.date('Y').') '.$unidades.'' ));

               else

               $asociados=  Asociado::model()->findAll(array('order'=>'fecha_registro asc','condition'=>'id_estatus=1 AND (fecha_registro BETWEEN \''.$model->desde.'\' AND \''.$model->hasta.'\') '.$unidades.'' ));

               if($asociados){
                 //print_r($asociados);die();
                   #Array de Salida
                   $nuevos_ingresos=array();
                   $nuevos_ingresos[0]=array('Cédula','Nombre','Apellido','Fecha de inscripción','% aporte aporte','Unidad','Fecha creado');

                   foreach ($asociados as $key=>$asociado){
                   $nuevos_ingresos[]=array($asociado->cedula,$asociado->nombre,$asociado->apellidos,$asociado->fechaingreso ,$asociado['aportes']['descripcion'],$asociado->unidad->descripcion,$asociado->fecha_registro);


                    }
                   #Lectura del Excel
                    $phpExcelPath = Yii::getPathOfAlias('ext.Excel.PHPExcel.Classes');
                    $phpExcelPath2 = Yii::getPathOfAlias('application.extensions.Excel.PHPExcel.Classes.PHPExcel');
                    spl_autoload_unregister(array('YiiBase','autoload'));
                    include($phpExcelPath . DIRECTORY_SEPARATOR . 'PHPExcel.php');
                    include($phpExcelPath.DIRECTORY_SEPARATOR.'PHPExcel'.DIRECTORY_SEPARATOR.'Reader'.DIRECTORY_SEPARATOR.'Excel2007.php');
                    include($phpExcelPath2 . DIRECTORY_SEPARATOR . 'IOFactory.php');
                    spl_autoload_register(array('YiiBase','autoload'));
                    #
                    $objPHPExcel = new PHPExcel();

                    foreach(range('A','G') as $columnID) {
                        $objPHPExcel->getActiveSheet()->getColumnDimension($columnID)->setAutoSize(true);
                      }
                    $objPHPExcel->getActiveSheet()->fromArray($nuevos_ingresos,NULL,'A1');

                      $objPHPExcel->getActiveSheet()->getStyle('A1:G1')->getFont()->setBold(true);
                      $objPHPExcel->getActiveSheet()->getStyle('A1:G1')->getFont()->getColor()->setARGB(PHPExcel_Style_Color::COLOR_WHITE);
                      $objPHPExcel->getActiveSheet()->getStyle('A1:G1')->getFill()->setFillType(PHPExcel_Style_Fill::FILL_SOLID);
                      $objPHPExcel->getActiveSheet()->getStyle('A1:G1')->getFill()->getStartColor()->setARGB('004413');

                    $objWriter = new PHPExcel_Writer_Excel2007($objPHPExcel);
                    $objWriter->setOffice2003Compatibility(true);
                    //$objWriter->save("doc/liquidados.xlsx");
                    header('Content-Type: application/vnd.ms-excel');
                    header('Content-Disposition: attachment;filename="nuevos_ingreso.xlsx"');
                    header('Cache-Control: max-age=0');
                    $objWriter->save('php://output');
                   exit;

               }
               else {
                   Yii::app()->user->setFlash('warning', "No existen nuevos ingresos en este período");
               }
            }


          }

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


    }



	/**
	 * 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=Asociado::model()->findByPk($id);
		if($model===null)
			throw new CHttpException(404,'The requested page does not exist.');
		return $model;
	}

    public function EnviarCorreoMasivo(
        $text_correo = '',
        $asunto = '',
        $model = '',
        $ruta_adjunto = '',
        $nmb_adjunto = '',
        $nombres = '',
        $apellidos = '',
        $correos = '',
        $cedula = '',
        $t_destinatario = '',
        $cant_men = '',
        $pausa = ''
    ) {
        Yii::import('mailer.phpmailer');
        $empresa = Empresa::model()->find();

        $mail = new phpmailer();
        $mail->IsSMTP();
        $mail->SMTPAuth = true;
        $mail->SMTPSecure = $empresa->secure;
        $mail->Host = $empresa->host;
        $mail->Port = $empresa->puerto;
        $mail->Username = $empresa->email_emp;
        $mail->Password = $empresa->email_clave;
        $mail->SetFrom($empresa->email_emp, $empresa->siglas_emp);
        $mail->AddReplyTo($empresa->email_emp, $empresa->siglas_emp);
        $mail->Subject = $asunto;
        $mail->AltBody = $empresa->nom_emp;
        $mail->MsgHTML(utf8_decode($text_correo));
        $n = 0;

        for ($a = 0; $a < count($correos); $a++) {
            $n = $n + 1;
            if ($n == $cant_men + 1) {
                sleep($pausa);
                $n = 0;
            }
            $nomb = $nombres[$a].' '.$apellidos[$a];
            $mail->AddAddress($correos[$a], $nomb);
            if ($ruta_adjunto != '') {
                $mail->AddAttachment($ruta_adjunto, $nmb_adjunto);
            }

            if (! $mail->Send()) {
                $nombre[] = $nomb;
                $envio[] = 'NO';
                $ced[] = $cedula[$a];
                $corr[] = $correos[$a];
                echo "<font style='font-size: 14px;color: #990000'> No se pudo enviar el correo a: <strong>".
                    $correos[$a].
                    '</strong></font><br/>';
            } else {
                $nombre[] = $nomb;
                $envio[] = 'SI';
                $ced[] = $cedula[$a];
                $corr[] = $correos[$a];
                echo "<font style='font-size: 14px;color: #2e8b57'> El correo se ha enviado satisfactoriamente a: <strong>".
                    $correos[$a].
                    '</strong></font><br/><br/>';
            }
            $mail->ClearAddresses();
            $mail->ClearAttachments();
        }
    }

    public function actionCrearCorreoMasivo()
    {
        $model = new Asociado();
        if (isset($_POST['Asociado'])) {
            if ($_FILES['Asociado']['name']['adjunto'] != '') {
                $model->attributes = $_POST['Asociado'];
                $nmb_adjunto = $_FILES['Asociado']['name']['adjunto'];
                $uploadedFile = CUploadedFile::getInstance($model, 'adjunto');
                if ($uploadedFile->saveAs(Yii::app()->basePath . '/controllers/adjunto/' . $nmb_adjunto)) {
                    $ruta_adjunto = Yii::app()->basePath . '/controllers/adjunto/' . $nmb_adjunto;
                } else {
                    $ruta_adjunto = "";
                }
            } else {
                $ruta_adjunto = "";
                $nmb_adjunto = "";
            }
        }

        if (isset($_POST['texto_correo'])) {
            $text_correo = $_POST['texto_correo'];
            $asunto = utf8_decode($_POST['asunto']);
            $cant_men = '30';
            $pausa = '60';
            $t_destinatario = $_POST['tipo_dest'];

            if ($t_destinatario == 'A') {
                $sql = Asociado::model()->findAll('blnborrado=false');
            }
            if ($t_destinatario == 'B') {
                $id_emp = $_POST['oficina'];
                $sql = Asociado::model()->findAll("blnborrado=false and oficina=$id_emp");
            }
            if ($t_destinatario == 'C') {
                $id_est = $_POST['estado'];
                $sql = Asociado::model()->findAll("blnborrado=false and estado=$id_est");
            }

            foreach ($sql as $data) {
                $nombres[] = $data['nombre'];
                $apellidos[] = $data['apellidos'];
                $correos[] = $data['correoelectronico'];
                $cedula[] = $data['cedula'];
            }

            $this->EnviarCorreoMasivo(
                $text_correo,
                $asunto,
                $model,
                $ruta_adjunto,
                $nmb_adjunto,
                $nombres,
                $apellidos,
                $correos,
                $cedula,
                $t_destinatario,
                $cant_men,
                $pausa
            );

            /*$model->attributes=$_POST['Asociado'];
			if($model->save())
			    $this->redirect(array('view','id'=>$model->idusuario));*/
        }

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

	public function actionCantEmpresas()
	{
	  $id_emp=$_POST['oficina'];
	  $sql= Asociado::model()->findAll("blnborrado=false and oficina=$id_emp");
	  $cant_per= count($sql);
	  echo "<br /><span class='help-block'><i class='icon-info-sign'></i> Cantidad de Asociados de la Unidad : <strong>$cant_per</strong></span>";
	}

        public function actionCantPersonas()
	{
	  $id_est=$_POST['estado'];
	  $sql= Asociado::model()->findAll("blnborrado=false and estado=$id_est");
	  $cant_per= count($sql);
	  echo "<br /><span class='help-block'><i class='icon-info-sign'></i> Cantidad de Asociados por Estado : <strong>$cant_per</strong></span>";
	}


	public function actionCantDestinatarios()
	{
	  $tipo_dest= $_POST['tipo_dest'];
	  if($tipo_dest == 'A')
	  {
	    $sql= Asociado::model()->findAll('blnborrado=false');
	    $cant_per= count($sql);
	    echo "<br /><span class='help-block'><i class='icon-info-sign'></i> Cantidad de Asociados : <strong>$cant_per</strong></span>";
	  }
	   if($tipo_dest == 'B')
	  {
	     Yii::app()->clientScript->scriptMap['jquery.js'] = false;
             Yii::app()->clientScript->scriptMap['jquery.min.js'] = false;
	     $this->renderPartial('_dato_unidad',array(),false,true);
	  }
           if($tipo_dest == 'C')
	  {
	     Yii::app()->clientScript->scriptMap['jquery.js'] = false;
             Yii::app()->clientScript->scriptMap['jquery.min.js'] = false;
	     $this->renderPartial('_dato_estado',array(),false,true);
	  }
	}

	public function VistaDetallesHaberesSocio($id) {
            $this->layout = '';

            return $this->renderPartial('detallesHaberesSocio', array(
                        'id' => $id,
            ));
        }

	public function actionHaberesSocioLiquidacion2() {
            if (isset($_POST['cedulaSocio'])) {
                $modelAsociado = Asociado::model()->find('cedula=:cedula AND blnborrado= false', array(':cedula' => $_POST['cedulaSocio']));
                if ($modelAsociado) {
                    $mostrarCalculadora = TRUE;
                    if (isset($_POST['liquidacion'])) {
                        $modelLiquidacion = Liquidacion::model()->find('idtrabajador=:idtrabajador AND aprobado !=  2', array(':idtrabajador' => $modelAsociado->idasociado));
                        if ($modelLiquidacion) {
                            echo '<div class="alert alert-info"><b>USTED YA POSEE UNA SOLICITUD DE LIQUDACIÓN, REALIZADA EL DIA ' .
                            $modelLiquidacion->fecha_solicitud . '.</b></div>';
                            $mostrarCalculadora = FALSE;
                        }
                        $model = new Liquidacion();
                        $model->idtrabajador = $modelAsociado->idasociado;
                        if (isset($_POST['numeroCuenta'])) {
                            $model->cuenta = $_POST['numeroCuenta'];
                            $model->validate();
                        }

                        if ($mostrarCalculadora) {
                            $haberes = ReporteHaberes::model()->find('idasociado=:ida', array(':ida' => $modelAsociado->idasociado));

                            if ($modelAsociado->fechaingreso != '')
                                $modelAsociado->fechaingreso = date('d/m/Y', strtotime($modelAsociado->fechaingreso));

                            $modelMontoTotalDeudaCreditoSinGarantia = ReporteCreditos::model()->getTotalMontoDeudaSinGarantia($modelAsociado->idasociado);
                            $modelMontoTotalDeudaCreditoConGarantia = ReporteCreditos::model()->getTotalMontoDeudaConGarantia($modelAsociado->idasociado);
                            $modelMontoTotalFiador = ReporteCreditos::model()->getTotalMontoFiador($modelAsociado->idasociado);
                            $remanenteComprometido = ReporteCreditos::model()->getTotalMontoRemanenteComprometido($modelAsociado->idasociado);

                            $modelMontoTotalDeudaCredito = $modelMontoTotalDeudaCreditoSinGarantia + $modelMontoTotalDeudaCreditoConGarantia;
                            $modelMontoTotalDeudaCreditoConGarantia -=$remanenteComprometido;

                            // $modelMontoTotalDeudaCredito = ReporteCreditos::model()->getTotalMontoDeuda($model->idtrabajador);
                            $montoTotaSolicitud = $haberes->total_haberes - ($modelMontoTotalFiador + $modelMontoTotalDeudaCredito);
                            $montoDisponibleXCentaje = ($haberes->total_haberes * 0.80)- ($modelMontoTotalFiador + $modelMontoTotalDeudaCredito);

                            $this->layout = '';
                            $this->renderPartial('haberesSocio', array(
                                                        'modelMontoTotalFiador' => $modelMontoTotalFiador,
                                                        'modelAsociado' => $modelAsociado,
                                                        'haberes' => $haberes,
                                                        'remanenteComprometido' => $remanenteComprometido,
                                                        'modelMontoTotalDeudaCreditoConGarantia' => $modelMontoTotalDeudaCreditoConGarantia,
                                                        'montoDisponibleXCentaje' => $montoDisponibleXCentaje,
                                                        'montoTotaSolicitud' => $montoTotaSolicitud,
                            ));

                            $this->renderPartial('haberesSocioLiquidacion', array(
                                'model' => $model,
                                'modelAsociado' => $modelAsociado,
                                'modelMontoTotalDeudaCredito' => $modelMontoTotalDeudaCredito,
                                'montoTotaSolicitud' => $montoTotaSolicitud,
                            ));

                            echo '<div class="alert alert-success" style="text-align:center">
                                    <div style="color: #000;"><b>MONTO A CANCELAR AL ASOCIADO Bs. '.number_format(($montoTotaSolicitud),2,",",".").'</b></div>'.
                                    (( ($montoTotaSolicitud) < 0)?'<div style="color: red;"><strong>EL MONTO A LIQUIDAR ESTA COMPROMETIDO POR CREDITOS ESPECIALES</center></div>':'').
                                '</div>';
                        }
                    }
                } else {
                    echo '<div class="alert alert-info"><b>La cédula que ha introducido no pertenece a un asociado</b></div>';
                }
            }
        }

        public function VistaHaberesSocio($id, $vista, $idTipoCredito =NULL) {

                $modelAsociado = Asociado::model()->findByPk($id);

                $haberes = ReporteHaberes::model()->find('idasociado=:ida', array(':ida' => $modelAsociado->idasociado));

                $montoGastosAdministrativoLiquidacion = 0;

                //vista 0 es la visat de haberes y vista diferente a esa es liquidacion
                $montoLiquidacion = NULL;
                $etiquetaAcordeon ='';
                if($vista==0){
                    $montoTotaSolicitud= ReporteHaberes::model()->haberDisponible($modelAsociado->idasociado);
                    $modelBasica = Basica::model()->find(['select' => 'monto_disponibilidad_solicitudes']);
                    if($modelBasica->porcentaje_disponibilidad !=''){
                      $porcentaje =$modelBasica->porcentaje_disponibilidad.'%';
                    }
                    else
                      $porcentaje = '80';
                    $fecha = $modelAsociado->fechaingreso ;
                    $etiquetaAcordeon = 'El porcentaje de haberes disponibles del '.$porcentaje;
                }
                //Retiro Parcial
                elseif ($vista==1) {

                    $modelConfiguracion = ConfRetiroParcial::model()->find();

                    if($modelConfiguracion)

                        $porcentaje = $modelConfiguracion->porcentaje_tope;

                    else

                        $porcentaje = '80';

                    Yii::import('application.modules.aportes.models.Disponibilidad');

                    $fecha = $modelAsociado->fechaingreso ;
                    $etiquetaAcordeon = 'Haberes disponibles para solicitudes';

                    Yii::import('application.modules.prestamo.models.DeudaActual');
                    return $this->renderPartial('haberesSocio', array(
                        'modelAsociado' => $modelAsociado,
                        'haberes' => $haberes,
                        'vista'=>$vista,
                        'fecha'=>$fecha,
                        'porcentaje'=>$porcentaje.'%',
                        'montoLiquidacion'=>$montoLiquidacion,
                        'etiquetaAcordeon'=>$etiquetaAcordeon,
                        'etiquetaFecha'=>'Fecha de Inscripci&oacute;n',
                        'fecha'=>$modelAsociado->fechaingreso,
                        'disponible' => new Disponibilidad([
                            'asociado' => $modelAsociado->idasociado,
                            'proceso' => 2,
                            'porcentaje_disponibilidad' => $porcentaje,
                        ])
                    ), true);

                }
                //Prestamo
                elseif ($vista==2) {
                    $modelTipoCredito = TipoCredito::model()->find('id=:id',array(':id'=>$idTipoCredito));
                    if($modelTipoCredito && $modelTipoCredito->porcentaje_disponibilidad !='')
                        $porcentaje = $modelTipoCredito->porcentaje_disponibilidad;
                    else
                        $porcentaje = '80';

                    $montoTotaSolicitud = ReporteHaberes::model()->haberDisponible($modelAsociado->idasociado,$porcentaje);;
                    // $montoTotaSolicitud = ($haberes->total_haberes * ($porcentaje/100)) - ($modelMontoTotalFiador + $modelMontoTotalDeudaCredito);
                    $porcentaje = number_format($porcentaje, 2, ',', '.').'%';
                    $fecha = $modelAsociado->fechaingreso ;

                    $etiquetaAcordeon ='El porcentaje de haberes disponibles para el "'.$modelTipoCredito->descripcion.'" es del '.$porcentaje;
                }

                else{
                    $modelMontoTotalDeuda = ReporteCreditos::model()->getTotalMontoDeuda($id);

                    ########################### Esta funcion esta en blanco en el modelo por eso la comente "Henry" 19-06-218
                    // $modelMontoTotalFiador = ReporteCreditos::model()->getTotalMontoFiador($modelAsociado->idasociado);
                    // $montoTotaSolicitud = $haberes->total_haberes - ($modelMontoTotalFiador + $modelMontoTotalDeuda);
                    $montoTotaSolicitud = $haberes->total_haberes - $modelMontoTotalDeuda;

                    $porcentaje = '100%';
                    $modelLiquidacion = EstatusLiquidacion::model()->with('idLiquidacion')->find('idasociado=:idtrabajador AND "idLiquidacion".blnborrado= false AND id_estatus_liquidacion !=3',
                                        array(':idtrabajador'=>$modelAsociado->idasociado));
                    if($modelLiquidacion)
                        $fecha = $modelLiquidacion->fecha_registro;
                    else
                        $fecha = date('d-m-Y');
                    $modelConfiguracionLiquidacion = ConfLiquidacion::model()->find();
                    if($modelConfiguracionLiquidacion){
                      $total = $montoTotaSolicitud;
                      $montoPositivo = true;
                      if($montoTotaSolicitud < 0){
                        $total = $total * -1;
                        $montoPositivo = false;
                      }
                        $montoGastosAdministrativoLiquidacion = $total*$modelConfiguracionLiquidacion->gastos_administrativo;
                        $montoTotaSolicitud-=($montoGastosAdministrativoLiquidacion*($montoPositivo)?1:-1);
                    }
                    $montoLiquidacion = $haberes->haberDisponible($modelAsociado->idasociado);
                    $etiquetaAcordeon = 'Haberes disponibles para solicitudes';

                }

                $this->layout = '';
                return $this->renderPartial('haberesSocio', array(
                    'modelAsociado' => $modelAsociado,
                    'haberes' => $haberes,
                    'vista'=>$vista,
                    'fecha'=>$fecha,
                    'porcentaje'=>$porcentaje,
                    'montoTotaSolicitud'=>$montoTotaSolicitud,
                    'montoLiquidacion'=>$montoLiquidacion,
                    'etiquetaAcordeon'=>$etiquetaAcordeon,
                    'etiquetaFecha'=>'Fecha de Inscripci&oacute;n',
                    'fecha'=>$modelAsociado->fechaingreso,
                    'disponible' => new Disponibilidad([
                        'asociado' => $modelAsociado->idasociado,
                        'proceso' => 2,
                        'ignorar' => []
                    ])
                ));
        }
        public function actionHaberesSocio() {
            $modelAsociado= FALSE;
            if (Yii::app()->user->checkAccess('usuario_asociado') && !Yii::app()->user->checkAccess('usuario_administrador')) {
                $modelAsociado = Asociado::model()->find('cedula=:cedula AND blnborrado = false AND id_estatus in(1,4) ORDER BY idasociado desc', array(':cedula' => CrugeUserI::model()->findByPk(Yii::app()->user->id)->cedula));
            }
            if (isset($_POST['idasociado']) && $_POST['idasociado'] !=0 && is_numeric($_POST['idasociado'])) {
                $modelAsociado = Asociado::model()->findByPk($_POST['idasociado']);
            }
            if (isset($_POST['cedulaAsociado']) && is_numeric($_POST['cedulaAsociado'])) {
                $modelAsociado = Asociado::model()->find('cedula=:cedula AND blnborrado = false AND id_estatus in(1,4) ORDER BY idasociado desc', array(':cedula' =>$_POST['cedulaAsociado']));
            }
            if ($modelAsociado) {
                echo $this->VistaHaberesSocio($modelAsociado->idasociado, $vista=0);
               // echo $this->VistaDetallesHaberesSocio($modelAsociado->idasociado);

            }
            else{
                echo '<div class="alert alert-info"><b>Por favor verifique la cedula suministrada</b></div>';
            }
        }
        public function actionHaberesSocioRetiroParcial() {

          $resultado['encontrado'] =  0;

          $resultado['idasociado'] = 0;

          $resultado['vista'] = '';

            if (Yii::app()->user->checkAccess('usuario_asociado') && !Yii::app()->user->checkAccess('usuario_administrador')) {
                $modelAsociado = Asociado::model()->find('cedula=:cedula AND blnborrado = false AND id_estatus in(1,4) ORDER BY idasociado desc', array(':cedula' => CrugeUserI::model()->findByPk(Yii::app()->user->id)->cedula));
            }
            if (isset($_POST['idasociado']) && $_POST['idasociado'] !=0) {
                $modelAsociado = Asociado::model()->findByPk($_POST['idasociado']);
            }
            if (isset($_POST['cedulaAsociado'])) {
                $modelAsociado = Asociado::model()->find('cedula=:cedula AND blnborrado = false AND id_estatus in(1,4) ORDER BY idasociado desc', array(':cedula' =>(int)$_POST['cedulaAsociado']));
            }

            if ($modelAsociado) {
                $validarRetiroParcial= RetiroParcial::validarSolcitudRetiroParcialAdministrador($modelAsociado->idasociado);
                if($validarRetiroParcial['valido']==0 ){
                  $resultado['vista'] .='<div id="yw0"><div class="alert in alert-block fade alert-error"><a class="close" data-dismiss="alert">&times;</a><b>'.$validarRetiroParcial['mensaje'].'</b></div></div>';
                }

                $resultado['idasociado'] = $modelAsociado->idasociado;
                $resultado['vista'] .=  $this->VistaHaberesSocio($modelAsociado->idasociado, $vista=1);


                $creditosActivos  = [];

                $modelConfiguracion = ConfRetiroParcial::model()->find();

                if($modelConfiguracion->pago_prestamo_retiro_administrador > 0){

                  $creditos = Credito::getDetallesCreditos([
                    'idAsociado'=>$modelAsociado->idasociado,
                    'id_estatus'=>4,
                    'prestamos_excluidos'=>$modelConfiguracion->pagar_prestamo_retiro_adm,
                  ]);

                  if($creditos){
                    foreach ($creditos as $key => $value) {
                      array_push($creditosActivos, [
                                                    'idcredito'=>$value['idcredito'],
                                                    'categoria'=>$value['categoria'],
                                                    'plazo_prestamo'=>$value['plazo_prestamo'],
                                                    'prestamo'=>'Bs. '.number_format($value['prestamo'],2,',','.'),
                                                    'monto_aprobado'=>'Bs. '.number_format($value['prestamo'],2,',','.'),
                                                    'fecha_registro'=>date('d-m-Y',strtotime($value['fecha_registro'])),
                                                    'cuotas_pagadas'=>(int)$value['cuotas_pagadas'],
                                                    'deuda_actual'=>'Bs. '.number_format($value['deuda_actual'],2,',','.'),
                                                    'nombre_estatus_credito'=>$value['nombre_estatus'],
                                                  ]);
                    }

                  }
                  $resultado['creditos'] = $creditosActivos;

                }

                $data=CHtml::listData(AsociadoCuentaBanco::model()->with(['idBanco'])->together(true)->findAll([
                                                      'select'=>"t.cuenta_bancaria AS id, \"idBanco\".descripcion ||''|| (CASE WHEN cuenta_corriente = true THEN 'Cuenta Corriente' ELSE 'Cuenta de Ahorro' END)||' '|| \"t\".cuenta_bancaria as cuenta_bancaria",
                                                      'condition'=>'idasociado=:idasociado AND t.blnborrado = false',
                                                      'params'=>[':idasociado'=>$modelAsociado->idasociado ]]),'id','cuenta_bancaria');

                $datos_bancarios[] ="<option value=''>-- SELECCIONE EL NUMERO DE CUENTA BANCARIO --</option>";
                foreach($data as $value=>$name)
                {
                    array_push($datos_bancarios,CHtml::tag('option', array('value'=>$value),CHtml::encode($name),true));
                }



                $resultado['datos_bancarios'] = $datos_bancarios;

                $resultado['encontrado'] =  1;
               // echo $this->VistaDetallesHaberesSocio($modelAsociado->idasociado);


            }
            else{

              $resultado['vista'] .='<div id="yw0"><div class="alert in alert-block fade alert-error">
                                          <a class="close" data-dismiss="alert">&times;</a><b>No se encontraron registros asociados a la cédula</b></div></div>';

            }

            echo CJSON::encode($resultado);
        }

        public function actionHaberesSocioLiquidacion() {
             $cedula= 0;
            if (Yii::app()->user->checkAccess('usuario_asociado') && !Yii::app()->user->checkAccess('usuario_administrador')) {
                 $cedula =CrugeUserI::model()->findByPk(Yii::app()->user->id)->cedula;
            }
            if (isset($_POST['cedulaSocio']) && is_numeric($_POST['cedulaSocio'])) {
                $cedula = $_POST['cedulaSocio'];
            }

            $modelAsociado = Asociado::model()->find('cedula=:cedula AND blnborrado = false AND id_estatus in(1,3,4,5) ORDER BY idasociado desc', array(':cedula' => (int)$cedula));
            if ($modelAsociado) {
                echo $this->VistaHaberesSocio($modelAsociado->idasociado, $vista=3);
            }
        }

        public function actionHaberesSocioTipoCredito() {
            $modelAsociado= FALSE;
            if (Yii::app()->user->checkAccess('usuario_asociado') && !Yii::app()->user->checkAccess('usuario_administrador')) {
                $modelAsociado = Asociado::model()->find('cedula=:cedula AND blnborrado = false AND id_estatus in(1,4) ORDER BY idasociado desc', array(':cedula' => CrugeUserI::model()->findByPk(Yii::app()->user->id)->cedula));
            }
            if (isset($_POST['idasociado']) && $_POST['idasociado'] !=0 && is_numeric($_POST['idasociado'])) {
                $modelAsociado = Asociado::model()->findByPk($_POST['idasociado']);
            }
            if (isset($_POST['cedulaAsociado']) && is_numeric($_POST['cedulaAsociado'])) {
                $modelAsociado = Asociado::model()->find('cedula=:cedula AND blnborrado = false AND id_estatus in(1,4) ORDER BY idasociado desc', array(':cedula' =>$_POST['cedulaAsociado']));
            }
            if ($modelAsociado) {
                if ((isset($_POST['idTipoCredito']) && $_POST['idTipoCredito'] !=0)) {
                    echo $this->VistaHaberesSocio($modelAsociado->idasociado, $vista=2, $idTipoCredito = $_POST['idTipoCredito']);
                    // echo $this->VistaDetallesHaberesSocio($modelAsociado->idasociado);
                }
                else{
                    echo '<div class="alert alert-info"><b>Debe seleccionar un tipo de crédito</b></div>';
                }

            }
            else{
                echo '<div class="alert alert-info"><b>La cédula suministrada no esta registrada</b></div>';
            }
        }

    public function actionestadoCuenta($id)
    {
        $model = Asociado::model()->find('idasociado=:socio', [':socio' => $id]);
        $modelEmpresa = Empresa::model()->find();
        $usuario = CrugeUserI::model()->findByPk(Yii::app()->user->id)->nombres.' '.CrugeUserI::model()->findByPk(Yii::app()->user->id)->apellidos;
        $confBasica = Basica::model()->find();

        //datos para los montos y creditos de la tabla
        $haberesAsociado = ReporteHaberes::model()->find('idasociado=:idasociado', [':idasociado' => $model->idasociado]);
        if (! empty($haberesAsociado)) {
            $total = ($haberesAsociado->aporte_asociado
                + $haberesAsociado->aporte_patrono
                + $haberesAsociado->dividendos
                + $haberesAsociado->aporte_extra_socio
                + $haberesAsociado->aporte_extra_patrono);

            $modelMontoTotalDeudaCreditoSinGarantia = ReporteCreditos::model()->getTotalMontoDeudaSinGarantia($model->idasociado);
            $modelMontoTotalDeudaCreditoConGarantia = ReporteCreditos::model()->getTotalMontoDeudaConGarantia($model->idasociado);
            $modelMontoTotalFiador = ReporteCreditos::model()->getTotalMontoFiador($model->idasociado);
            $remanenteComprometido = ReporteCreditos::model()->getTotalMontoRemanenteComprometido($model->idasociado);

            $modelMontoTotalDeudaCredito = $modelMontoTotalDeudaCreditoSinGarantia + $modelMontoTotalDeudaCreditoConGarantia;
            $modelMontoTotalDeudaCreditoConGarantia -= $remanenteComprometido;

            $montoTotaSolicitud = $haberesAsociado->total_haberes - ($modelMontoTotalFiador + $modelMontoTotalDeudaCredito);
            $montoDisponibleXCentaje = ($haberesAsociado->total_haberes * 0.80) - ($modelMontoTotalFiador + $modelMontoTotalDeudaCredito);

            $cred = ReporteCreditos::model()->findAll('idasociado=:id AND id_estatus_credito IN (4,7,9,14,15,16,17,18,19)', [':id' => $model->idasociado]);

            if (! empty($cred)) {
                $total_prestamos = 0;

                foreach ($cred as $prestamo => $datos) {
                    $total_prestamos += $datos->deuda_actual + $datos->deuda_actual_esp;
                }
            } else {
                $total_prestamos = '';
            }

            $retiros = RetiroParcial::model()->with('estatusRetiroParcial')->findAll('t.idasociado=:socio AND t.blnborrado=false AND id_estatus_retiro=4', [':socio' => $model->idasociado]);

            if (! empty($retiros)) {
                $total_retiros = 0;
                foreach ($retiros as $key => $value) {
                    $total_retiros += $value['monto_pagar'];
                }
            } else {
                $total_retiros = '';
            }
        }

        $pdf = Yii::createComponent('application.extensions.mpdf60.mpdf');
        $html = $this->renderPartial('application.modules.asociado.views.asociado.estado_cuenta', [
            'model' => $model,
            'modelEmpresa' => $modelEmpresa,
            'haberesAsociado' => $haberesAsociado,
            'total' => $total,
            'modelMontoTotalDeudaCredito' => $modelMontoTotalDeudaCredito,
            'montoTotaSolicitud' => $montoTotaSolicitud,
            't_prestamo' => $total_prestamos,
            't_retiros' => $total_retiros,
            'retiros' => $retiros,
            'prestamos' => $cred,
            'conf' => $confBasica,
            'disponible' => new Disponibilidad([
                'asociado' => $model->idasociado,
                'proceso' => 13,
                'ignorar' => []
            ])
        ], true);

        $mpdf = new mPDF('win-1252', 'LETTER', 8, '', 15, 15, 20, 15, 5, 5);
        $arr = [
            'L' => [
                'content' => (empty($modelEmpresa->logo)) ? '<img src='.Yii::app()->request->baseUrl."/images/logo.png alt='Logo' width ='40px' heigth='40px'/>" : "<img src='".Yii::app()->request->baseUrl.'/images/'.$modelEmpresa->logo."' alt='Logo' width ='40px' heigth='40px'/>",
            ],
            'R' => [
                'content' => 'Estado de Cuenta<br>',
                'font-style' => 'BI',
                'font-family' => 'serif',
                'color' => '#000000',
            ],
            'line' => 0,
        ];
        $mpdf->setHeader($arr, 'O');
        $mpdf->defaultfooterfontsize = 6;
        $mpdf->SetFooter('Elaborado por:<br>'.$usuario.' <br>{DATE d/m/Y} |'.$modelEmpresa->dir_emp.'| Página {PAGENO}/{nbpg}');
        $mpdf->WriteHTML($html);
        $mpdf->Output('Estado de cuenta.pdf', 'D');
        exit;
    }

    public function actionFotoPerfil()
    {
        $id = Asociado::get(Yii::app()->user->id);
        $model = $this->loadModel($id);
        $model->scenario = 'foto_perfil';

        if (isset($_POST['Asociado'])) {
            $model->attributes = $_POST['Asociado'];
            $res = $model->actualizarFotoPerfil();
            if (! $res['error']) {
                $this->redirect(['/cruge/ui/principal']);
            }
        }

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

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