public function updateOrCreateCuenta(Estudiante $estudiante) { $cuenta = $this->em->getRepository('AppBundle:Cuenta')->findOneBy(array('referenciabancaria' => $estudiante->getReferenciaBancaria())); if ($cuenta) { foreach ($cuenta->getEstudiantes() as $hermano) { $estudiante->addMyBrother($hermano); $hermano->addMyBrother($estudiante); $this->em->persist($hermano); } foreach ($cuenta->getProgenitores() as $progenitor) { $estudiante->addProgenitore($progenitor); $progenitor->addEstudiante($estudiante); $this->em->persist($progenitor); } $estudiante->setCuenta($cuenta); $this->em->persist($estudiante); } else { $this->logger->addDebug(sprintf('Account not exists. Creating with reference: %s', $estudiante->getReferenciaBancaria())); $cuenta = new Cuenta(); $cuenta->setReferenciabancaria($estudiante->getReferenciaBancaria()); $this->em->persist($cuenta); $estudiante->setCuenta($cuenta); } $this->em->persist($estudiante); $this->em->flush(); }
public function updateEstudianteRelations(Estudiante $estudiante, $updateBrothers = false) { foreach ($estudiante->getProgenitores() as $progenitor) { $newsletterUser = $progenitor->getNewsletterUser(); $toRemoveGroups = array(); $newsletterGroups = $newsletterUser->getUserGroups(); foreach ($newsletterGroups as $group) { $toRemoveGroups[$group->getId()] = $group; } $toAddGroups = $this->getNewsletterGroupsOfStudent($estudiante); $addKeys = array_keys($toAddGroups); foreach ($addKeys as $key) { if (isset($toRemoveGroups[$key])) { unset($toRemoveGroups[$key]); unset($toAddGroups[$key]); } } foreach ($toRemoveGroups as $group) { $newsletterUser->removeUserGroup($group); } foreach ($toAddGroups as $group) { $newsletterUser->addUserGroup($group); } $this->em->persist($newsletterUser); $this->em->flush($newsletterUser); } if ($updateBrothers) { foreach ($estudiante->getMyBrothers() as $brother) { $this->updateEstudianteRelations($brother, false); } } }
public function loadEstudiante(ObjectManager $manager) { $estudiante = array(array(1, 12, 1), array(2, 14, 1), array(3, 19, 1), array(4, 37, 1), array(5, 40, 1), array(6, 41, 1), array(7, 48, 1), array(8, 50, 1), array(9, 55, 1), array(10, 56, 1), array(11, 63, 1), array(12, 64, 1), array(13, 65, 1), array(14, 66, 1), array(15, 67, 1), array(16, 69, 1), array(17, 71, 1), array(18, 72, 1), array(19, 73, 1), array(20, 75, 1), array(21, 76, 1), array(22, 78, 1), array(23, 84, 1), array(24, 87, 1), array(25, 44, 4), array(26, 16, 4), array(27, 13, 4), array(28, 46, 4), array(29, 35, 4), array(30, 10, 4), array(31, 2, 4), array(32, 42, 4), array(33, 15, 4), array(34, 43, 4), array(35, 27, 4), array(36, 22, 4), array(37, 30, 2), array(38, 32, 2), array(39, 36, 2), array(40, 39, 2), array(41, 47, 2), array(42, 49, 2), array(43, 57, 2), array(44, 31, 1), array(45, 45, 1), array(46, 52, 1), array(47, 54, 1), array(48, 58, 1), array(49, 60, 1), array(50, 74, 1), array(51, 79, 1), array(52, 83, 1), array(53, 85, 2), array(54, 33, 2), array(55, 7, 2), array(56, 59, 2), array(57, 81, 2), array(58, 82, 2), array(59, 18, 2), array(60, 68, 4), array(61, 62, 2), array(62, 70, 2), array(63, 53, 3), array(64, 24, 4), array(65, 80, 1), array(66, 86, 2), array(67, 17, 1)); $em = $this->container->get('doctrine')->getEntityManager('default'); foreach ($estudiante as $data) { $entityEstudiante = new Estudiante(); $entityPersona = $em->getRepository('AppBundle:Persona')->find($data[1]); $entityEstudiante->setPersona($entityPersona); $entityPnf = $em->getRepository('AppBundle:Pnf')->find($data[2]); $entityEstudiante->setPnf($entityPnf); $manager->persist($entityEstudiante); } $manager->flush(); }
public function estuPnfEntity(Request $request, Estudiante $entity) { if (is_array($request->request->get('estuPnf'))) { $pnf = $request->request->get('estuPnf'); $em = $this->getDoctrine()->getManager(); $entityEstuPnf = $em->getRepository('AppBundle:EstuPnf')->findBy(array('estu' => $entity->getCedu())); $estuPnfIds = array(); foreach ($entityEstuPnf as $key => $enti) { $pnfId = $enti->getPnf()->getPnfId(); if (in_array($pnfId, $pnf)) { if (($key = array_search($pnfId, $pnf)) !== false) { unset($pnf[$key]); sort($pnf); } } else { $estuPnfIds[] = $enti; } } //delete entity foreach ($estuPnfIds as $key => $value) { $em->remove($value); } if ($estuPnfIds) { $em->flush(); } //add entity foreach ($pnf as $key => $value) { $entityPnf = $em->getRepository('AppBundle:Pnf')->find($value); if ($entityPnf) { $entityEstuPnf = new EstuPnf(); $entityEstuPnf->setPnf($entityPnf); $entity->addEstuPnf($entityEstuPnf); } } } }
public function updateStudent($id) { $row = $this->retrieveOldStudent($id); if (!$row) { return; } $estudiante = $this->em->getRepository('AppBundle:Estudiante')->findOneBy(array('oldId' => $row['id'])); $isUpdate = true; if (!$estudiante) { $estudiante = new Estudiante(); $isUpdate = false; } $nombre = $row['nombre']; $apellido = $row['apellido']; $fechaNacimiento = $row['fecha_nacimiento']; $anioIngreso = $row['anio_ingreso']; $sociedad = $row['sociedad']; $referencia_bancaria = $row['referencia_bancaria']; $emergencia_medica = $row['emergencia_medica']; $horario = $row['horario']; $futuro_colegio = $row['futuro_colegio']; $descuento = $row['descuento']; $clase = $row['clase']; $egresado = $row['egresado']; $estudiante->setAnioIngreso($anioIngreso); $estudiante->setApellido($apellido); $estudiante->setDescuento($descuento); $estudiante->setEgresado($egresado); if ($fechaNacimiento) { $estudiante->setFechaNacimiento(new \DateTime($fechaNacimiento)); } $estudiante->setNombre($nombre); $estudiante->setReferenciaBancaria($referencia_bancaria); $estudiante->setActive(true); $estudiante->setOldId($row['id']); if ($horario == 'doble_horario') { $horario = 'Doble Horario'; } $dbHorario = $this->em->getRepository('AppBundle:Horario')->findOneBy(array('name' => ucfirst($horario))); $estudiante->setHorario($dbHorario); $dbClase = $this->em->getRepository('AppBundle:Clase')->findOneBy(array('name' => ucfirst($clase))); $estudiante->setClase($dbClase); if ($futuro_colegio != '') { $dbColegio = $this->em->getRepository('AppBundle:Colegio')->findOneBy(array('name' => $futuro_colegio)); if (!$dbColegio) { $dbColegio = new Colegio(); $dbColegio->setName($futuro_colegio); $this->em->persist($dbColegio); } $estudiante->setFuturoColegio($dbColegio); } if ($sociedad != '') { $dbSociedad = $this->em->getRepository('AppBundle:SociedadMedica')->findOneBy(array('name' => $sociedad)); if (!$dbSociedad) { $dbSociedad = new SociedadMedica(); $dbSociedad->setName($sociedad); $this->em->persist($dbSociedad); } $estudiante->setSociedadMedica($dbSociedad); } if ($emergencia_medica != '') { $dbEmergenciaMedica = $this->em->getRepository('AppBundle:EmergenciaMedica')->findOneBy(array('name' => $emergencia_medica)); if (!$dbEmergenciaMedica) { $dbEmergenciaMedica = new EmergenciaMedica(); $dbEmergenciaMedica->setName($emergencia_medica); $this->em->persist($dbEmergenciaMedica); } $estudiante->setEmergenciaMedica($dbEmergenciaMedica); } $oldDbActivities = $this->retrieveOldStudentActivities($id); $activitiesList = new ArrayCollection(); foreach ($oldDbActivities as $rowActivity) { $activity = $this->em->getRepository('AppBundle:Actividad')->findOneBy(array('oldId' => $rowActivity['actividad_id'])); if ($activity) { $activitiesList->add($activity); } } $estudiante->mergeActividades($activitiesList); $this->em->persist($estudiante); $this->em->flush(); if (!$isUpdate) { $this->cuentaService->updateOrCreateCuenta($estudiante); } $this->facturasServices->generateUserAndFinalBill($estudiante); $this->newsLetterSyncService->updateEstudianteRelations($estudiante); return true; }
public function generateUserBill(Estudiante $estudiante, $month = null, $year = null, $ignorePaidAndCancel = false) { if ($month === null) { $month = date('n'); } if ($year === null) { $year = date('Y'); } if ($estudiante->getEgresado()) { $this->logger->addInfo(sprintf('The student %s has already left', $estudiante->getId())); return; } $factura = $this->em->getRepository('AppBundle:FacturaEstudiante')->retrieveFacturaOfEstudiantePerMonthAndYear($estudiante, $month, $year); if ($factura) { if (!$ignorePaidAndCancel) { if ($factura->getPago()) { $this->logger->addInfo(sprintf('The student %s has the bill of %s/%s paid', $estudiante->getId(), $month, $year)); return; } if ($factura->getCancelado()) { $this->logger->addInfo(sprintf('The student %s has the bill of %s/%s cancelled', $estudiante->getId(), $month, $year)); return; } } } else { $factura = new FacturaEstudiante(); } if ($estudiante->getAnioIngreso() > date('Y')) { if ($factura->getId() > 0) { $this->em->remove($factura); $this->em->flush($factura); } $this->logger->addInfo(sprintf('The student %s starting year is %s. No bill generated', $estudiante->getId(), $estudiante->getAnioIngreso())); return; } $factura->setEstudiante($estudiante); $factura->setMonth($month); $factura->setTotal(0); $factura->setYear($year); $factura->setFechavencimiento(new \DateTime()); $this->em->persist($factura); $total = 0; $listadoDetalles = array(); if ($estudiante->getHorario() !== null) { $costoHorario = $this->getCostoOfHorario($estudiante->getHorario()); $total = $costoHorario; $detalleMensualidad = new FacturaEstudianteDetalle(); $detalleMensualidad->setAmount($costoHorario); $detalleMensualidad->setDescription('Mensualidad'); $detalleMensualidad->setFactura($factura); $detalleMensualidad->setAutogenerated(true); $listadoDetalles[$detalleMensualidad->generateUniqueHash()] = $detalleMensualidad; } // Descuento de hermano $activeBrother = 0; foreach ($estudiante->getMyBrothers() as $brother) { if (!$brother->getEgresado()) { ++$activeBrother; } } $descuento = $this->em->getRepository('AppBundle:Descuento')->findOneBy(array('cantidadDeHermanos' => $activeBrother)); if ($descuento && $descuento->getPorcentaje() > 0) { $amount = ceil($total * $descuento->getPorcentaje() / 100 * -1); $detalleDescuentoHermano = new FacturaEstudianteDetalle(); $detalleDescuentoHermano->setAmount($amount); $detalleDescuentoHermano->setDescription('Descuento hermano'); $detalleDescuentoHermano->setFactura($factura); $detalleDescuentoHermano->setAutogenerated(true); $listadoDetalles[$detalleDescuentoHermano->generateUniqueHash()] = $detalleDescuentoHermano; $total += $amount; } if ($estudiante->getDescuento() && $estudiante->getDescuento() > 0) { $amount = ceil($total * $estudiante->getDescuento() / 100 * -1); $detalleDescuento = new FacturaEstudianteDetalle(); $detalleDescuento->setAmount($amount); $detalleDescuento->setDescription('Descuento usuario'); $detalleDescuento->setFactura($factura); $detalleDescuento->setAutogenerated(true); $listadoDetalles[$detalleDescuento->generateUniqueHash()] = $detalleDescuento; $total += $amount; } foreach ($estudiante->getActividades() as $actividad) { $detalleActividad = new FacturaEstudianteDetalle(); $detalleActividad->setAmount($actividad->getCosto()); $detalleActividad->setDescription($actividad->getNombre()); $detalleActividad->setFactura($factura); $detalleActividad->setAutogenerated(true); $listadoDetalles[$detalleActividad->generateUniqueHash()] = $detalleActividad; $total += $actividad->getCosto(); } foreach ($factura->getFacturaDetalles() as $detalle) { if (count($listadoDetalles) > 0) { $auxDetalle = array_pop($listadoDetalles); $detalle->setAmount($auxDetalle->getAmount()); $detalle->setDescription($auxDetalle->getDescription()); $this->em->persist($detalle); } else { $this->em->remove($detalle); } } foreach ($listadoDetalles as $detalle) { $this->em->persist($detalle); } $factura->setTotal($total); $this->em->persist($factura); $this->em->flush(); }