Ejemplo n.º 1
0
 public function actionNacimiento()
 {
     $model = new Nacimiento();
     $partidaModelo = new Partida();
     $conexion = \Yii::$app->db;
     $transaccion = $conexion->beginTransaction();
     if ($model->load(Yii::$app->request->post()) && $partidaModelo->load(Yii::$app->request->post())) {
         require_once '../auxiliar/Auxiliar.php';
         $partidaModelo->cod_empleado = Yii::$app->user->identity->persona->codEmpleado->codigo;
         $partidaModelo->tipo = "Nacimiento";
         $model->cod_partida = 0;
         $model->edad_padre = calcularEdad(Persona::find()->where('codigo = ' . $model->cod_padre)->one()->fecha_nacimiento);
         $model->edad_madre = calcularEdad(Persona::find()->where('codigo = ' . $model->cod_madre)->one()->fecha_nacimiento);
         $codlibro = Libro::find()->select('codigo')->where("tipo = 'Nacimiento'")->andWhere("anyo = :an", [':an' => date('Y')])->andWhere('numero = :valor', [':valor' => $_POST['Partida']['num_libro']])->one()->codigo;
         $partidaModelo->cod_libro = $codlibro;
         if ($model->validate() && $partidaModelo->validate()) {
             try {
                 $partidaModelo->fecha_emision = fechaMySQL($partidaModelo->fecha_emision);
                 $partidaModelo->fecha_suceso = fechaMySQL($partidaModelo->fecha_suceso);
                 $partidaModelo->hora_suceso = horaMySQL($partidaModelo->hora_suceso);
                 // $partidaModelo->numero = $_POST['Partida']['numero'];
                 if ($partidaModelo->save()) {
                     //Recupero el valor de id con el cual se inserto
                     $ulid = $conexion->getLastInsertID();
                     $model->cod_partida = $ulid;
                     //Guardo el registro de nacimiento
                     if (!$model->save()) {
                         throw new UserException('No se pudo guardar el registro de nacimiento, intente nuevamente');
                     }
                     //Actualizar el folio actual del libro
                     if ($conexion->createCommand("update libro set folio_actual = folio_actual + 1 where codigo = " . $codlibro)->execute() <= 0) {
                         throw new UserException('No se pudo actualizar el libro de partidas, intente nuevamente');
                     }
                     $transaccion->commit();
                     Yii::$app->session->setFlash('success', 'Partida guardada con éxito');
                     return $this->redirect(['nacimiento']);
                 } else {
                     throw new UserException('No se pudo guardar el registro de partida, intente nuevamente');
                 }
                 return;
             } catch (UserException $err) {
                 $transaccion->rollback();
                 Yii::$app->session->setFlash('error', $err->getMessage());
                 return $this->redirect(['nacimiento']);
             }
         } else {
             Yii::$app->session->setFlash('error', 'El modelo no cumple con la validación');
         }
     }
     return $this->render('rnacimiento', ['model' => $model, 'partida' => $partidaModelo]);
 }