Código PHP:
public function actualizarNacimientosDeMadreAction(Request $request)
{
if ($request->isXmlHttpRequest())
{
$idIngreso = intval($request->get('ingresoId', 0));
$em = $this->getDoctrine()->getManager();
$ingreso = $em->getRepository('AppBundle:Ingreso')->obtenerUnoJoinUnidadIngreso($idIngreso);
if (is_null($ingreso))
{
return new Response("No se encontró el registro seleccionado.", 404);
}
$embarazada = $ingreso->getEmbarazada();
$nacimientosAlmacenados = new DoctrineCommonCollectionsArrayCollection();
foreach ($embarazada->getNacimientos() as $nacimiento)
{
$nacimientosAlmacenados->add($nacimiento);
}
$form = $this->createForm(AppBundleFormRegistroNacimientosType::class, $embarazada, array(
'action' => $this->generateUrl('nacimiento_actualizar', array('ingresoId' => $ingreso->getId()))
));
$form->get('nombreMadre')->setData($embarazada->getNombre());
if ($request->isMethod('POST'))
{
$form->handleRequest($request);
if ($form->isValid())
{
$contador = 1;
// eliminar la relacion entre embarazada y nacimiento
foreach ($nacimientosAlmacenados as $nacimiento)
{
if(false === $embarazada->getNacimientos()->contains($nacimiento)){
$embarazada->getNacimientos()->removeElement($nacimiento);
$em->remove($nacimiento);
}else{
$nacimiento->setMadre($embarazada);
$nacimiento->setHospital($ingreso->getUnidadDeIngreso());
$nacimiento->setMunicipioPertenece($embarazada->getEstructuraOrganizativa()->getParent()->getParent()->getParent());
$nacimiento->setAnho(intval($nacimiento->getFechaNacimiento()->format('Y')));
$nacimiento->setEdadMadre($nacimiento->getMadre()->getEdad(new DateTime($nacimiento->getFechaNacimiento()->format('Y-m-d'))));
$nacimiento->setSemanaGestacionMadre($embarazada->getEdadGestacional(new DateTime($nacimiento->getFechaNacimiento()->format('Y-m-d'))));
$nacimiento->setTipoPartoDeLaMadre($nacimiento->getMadre()->getTipoPartoTuvo());
$nacimiento->setNumero($contador);
// la fecha de finalizado el embarazo tomara la fecha de nacimiento de la ultima criatura.
$embarazada->setFechaFinalizado(new DateTime($nacimiento->getFechaNacimiento()->format('Y-m-d')));
$embarazada->setEdadGestacionalFinaliza($embarazada->getEdadGestacional(new DateTime($nacimiento->getFechaNacimiento()->format('Y-m-d'))));
$embarazada->getNacimientos()->add($nacimiento);
$em->persist($nacimiento);
$contador++;
}
}
$embarazada->setEmbarazoFinalizado(true);
$em->persist($embarazada);
$em->flush();
$data = array(
'operacion' => 'actualizar_filas',
'msg' => 'La operación se completó satisfactoriamente.',
'data' => array($embarazada->getNombre(), $embarazada->getEdad(), $embarazada->getEdadGestacionalFinaliza() . " sem."),
);
return new SymfonyComponentHttpFoundationJsonResponse($data);
} else
{
return new Response($this->renderView('AppBundle:Ingreso:registrarNacimientoForm.html.twig', array('form' => $form->createView())), 406);
}
}
return $this->render('AppBundle:Ingreso:registrarNacimientoForm.html.twig', array('form' => $form->createView()));
} else
{
throw $this->createNotFoundException("Recurso no encontrado.");
}
}