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]); }