예제 #1
0
 /**
  * Returns the data model based on the primary key given in the GET variable.
  * If the data model is not found, an HTTP exception will be raised.
  * @param integer $id the ID of the model to be loaded
  * @return Cargamasiva the loaded model
  * @throws CHttpException
  */
 public function loadModel($id)
 {
     $model = Cargamasiva::model()->findByPk($id);
     if ($model === null) {
         throw new CHttpException(404, 'The requested page does not exist.');
     }
     return $model;
 }
 public function actioncargamasiva()
 {
     $model = new Cargamasiva();
     $construir_archivo = array();
     $todosErrores = array();
     if (isset($_POST['Cargamasiva'])) {
         $model->attributes = $_POST['Cargamasiva'];
         $construir_archivo = array();
         if ($model->validate()) {
             $model->archivo = CUploadedFile::getInstance($model, 'archivo');
             $model->archivo->saveAs(Yii::app()->basePath . '/../assets/archivo.' . $model->archivo->extensionName);
             $fila = -1;
             $usuario_procesados = 0;
             $usuario_noprocesados = 0;
             $file = file(Yii::app()->basePath . '/../assets/archivo.' . $model->archivo->extensionName);
             $lineas = count($file);
             $lineas--;
             //$si = true;
             if (($gestor = fopen(Yii::app()->basePath . '/../assets/archivo.' . $model->archivo->extensionName, "r")) !== FALSE) {
                 while (($datos = fgetcsv($gestor, 1000, ";")) !== FALSE) {
                     $numero = count($datos);
                     if ($numero != 0) {
                         if ($fila != -1) {
                             $transaction = Yii::app()->db->beginTransaction();
                             try {
                                 $ente = new EntesOrganos();
                                 $usuario = new Usuarios('cargamasiva');
                                 $ente->codigo_onapre = utf8_encode(trim($datos[0])) != '' ? utf8_encode(trim($datos[0])) : '';
                                 $ente->nombre = utf8_encode(trim($datos[1]));
                                 $ente->tipo = "O";
                                 $ente->creado_por = "snc";
                                 $ente->rif = utf8_encode(trim($datos[2]));
                                 if ($ente->save()) {
                                     $usuario->usuario = strtolower(utf8_encode(trim($datos[5])));
                                     $usuario->correo = strtolower(utf8_encode(trim($datos[5])));
                                     $usuario->nombre = strtoupper(utf8_encode(trim($datos[3])));
                                     $usuario->cedula = utf8_encode(trim($datos[4]));
                                     $usuario->cargo = utf8_encode(trim($datos[6])) != '' ? strtoupper(utf8_encode(trim($datos[6]))) : '';
                                     $usuario->contrasena = md5(rand(0, 100));
                                     $usuario->creado_el = date("Y-m-d");
                                     $usuario->llave_activacion = md5(rand(0, 100));
                                     $usuario->actualizado_el = date("Y-m-d");
                                     $usuario->rol = 'organo';
                                     $usuario->ente_organo_id = $ente->ente_organo_id;
                                     if ($usuario->save()) {
                                         $transaction->commit();
                                         $usuario_procesados++;
                                         //$this->enviarCorreoRecuperacion($usuario->usuario, '1234567');
                                         Yii::app()->user->setFlash('success', "{$usuario_procesados} usuario(s) procesado(s) del archivo con número de lineas {$lineas} !");
                                     } else {
                                         /*print_r(Chtml::errorSummary($usuario));
                                          	Yii::app()->end();*/
                                         throw new Exception(Chtml::errorSummary($usuario), 1);
                                         //$transaction->rollBack();
                                         //Yii::app()->user->setFlash('error', "Ocurrio un error al momento de crear el usuario!");
                                     }
                                 } else {
                                     //print_r(Chtml::errorSummary($ente));
                                     //	Yii::app()->end();
                                     throw new Exception(Chtml::errorSummary($ente), 1);
                                     //$transaction->rollBack();
                                     //Yii::app()->user->setFlash('error', "Ocurrio un error al momento de crear el organo!");
                                 }
                             } catch (Exception $e) {
                                 $transaction->rollBack();
                                 $usuario_noprocesados++;
                                 $construir_archivo[$fila] = $file[$fila + 1];
                                 $todosErrores[$fila] = $e->getMessage();
                                 $si = false;
                                 //Yii::app()->user->setFlash('error', $e->getMessage());
                                 Yii::app()->user->setFlash('error', "{$usuario_noprocesados} usuario(s) NO procesado(s) del archivo con número de lineas {$lineas}");
                             }
                         }
                     }
                     $fila++;
                 }
                 fclose($gestor);
             }
             //$this->redirect(array('planificacion/descargar','id'=>$model->id, 'title'=>$model->title));
             //$this->redirect(array('planificacion/errores'));
             //print_r($construir_archivo);
             //$this->redirect('planificacion/descargar');
             //$file = 'assets/archivo.csv';
             //echo $file;
             //return Yii::app()->getRequest()->sendFile('archivo.csv',@file_get_contents($file),'application/vnd.ms-excel');
         }
     }
     $this->render('cargamasiva', array('model' => $model, 'errores' => $construir_archivo, 'todosErrores' => $todosErrores));
 }