/** * Muestra el formulario para que se registren los nuevos usuarios. Además * se encarga de procesar la información y de guardar la información en la base de datos */ public function registroAction() { $peticion = $this->getRequest(); $em = $this->getDoctrine()->getEntityManager(); $usuario = new Usuario(); $usuario->setPermiteEmail(true); $usuario->setFechaNacimiento(new \DateTime('now - 18 years')); $formulario = $this->createForm(new UsuarioType(), $usuario); if ($peticion->getMethod() == 'POST') { $formulario->bindRequest($peticion); if ($formulario->isValid()) { // Completar las propiedades que el usuario no rellena en el formulario $usuario->setSalt(md5(time())); $encoder = $this->get('security.encoder_factory')->getEncoder($usuario); $passwordCodificado = $encoder->encodePassword($usuario->getPassword(), $usuario->getSalt()); $usuario->setPassword($passwordCodificado); // Guardar el nuevo usuario en la base de datos $em->persist($usuario); $em->flush(); // Loguear al usuario automáticamente $token = new UsernamePasswordToken($usuario, $usuario->getPassword(), 'usuarios', $usuario->getRoles()); $this->container->get('security.context')->setToken($token); return $this->redirect($this->generateUrl('portada')); } } return $this->render('UsuarioBundle:Default:registro.html.twig', array('formulario' => $formulario->createView())); }
/** * Load data fixtures with the passed EntityManager * * @param ObjectManager $manager */ public function load(ObjectManager $manager) { $numUsuarios = 5; for ($i = 0; $i < $numUsuarios; $i++) { $usuario = new Usuario(); $usuario->setNombre("Usuario" . $i); $usuario->setApellidos("Apellidos " . $i); $usuario->setCiudad($manager->find('CiudadBundle:Ciudad', 1)); $usuario->setDireccion("Dirección del usuario " . $i); $usuario->setDni("123123" . $i); $usuario->setEmail("usuario" . $i . "@mail.com"); $usuario->setFechaNacimiento(new \DateTime(date('Y-m-d'))); $usuario->setNumeroTarjeta($i); $usuario->setPassword("pass" . $i); $usuario->setPermiteEmail(true); $usuario->setSalt(uniqid(mt_rand(), true)); $manager->persist($usuario); } $manager->flush(); }
public function registroAction() { $peticion = $this->getRequest(); $usuario = new Usuario(); $usuario->setPermiteEmail(true); $usuario->setFechaNacimiento(new \DateTime('today - 18 years')); $formulario = $this->createForm(new UsuarioType(), $usuario); // Formulario creado desde el mismo controlador! // $formulario = $this->createFormBuilder($usuario) // ->add('nombre') // ->add('apellidos') // ->add('direccion', 'text') // ->add('fechaNacimiento', 'date'); // $formulario = $formulario->getForm(); if ($peticion->getMethod() == 'POST') { $formulario->bind($peticion); if ($formulario->isValid()) { // $encoder = $this->get('security.encoder_factory')->getEncoder($usuario); // // $usuario->setSalt(md5(time())); // // $passwordCodificado = $encoder // ->encodePassword($usuario->getPassword(), $usuario->getSalt()); // // $usuario->setPassword($passwordCodificado); // // $em = $this->getDoctrine()->getManager(); // $em->persist($usuario); // $em->flush(); $peticion->getSession()->setFlash('info', '¡Enhorabuena! Te has registrado correctamente en Cupon'); $token = new UsernamePasswordToken($usuario->getUsername(), $usuario->getPassword(), 'usuarios', $usuario->getRoles()); $this->container->get('security.context')->setToken($token); return $this->redirect($this->generateUrl('portada', array('ciudad' => $usuario->getCiudad()->getSlug()))); } } return $this->render('UsuarioBundle:Default:registro.html.twig', array('formulario' => $formulario->createView())); }
public function load(ObjectManager $manager) { // Crear 5 ciudades de prueba foreach (array('Madrid', 'Barcelona', 'Castellón', 'Vigo', 'Vitoria-Gasteiz') as $nombre) { $ciudad = new Ciudad(); $ciudad->setNombre($nombre); $manager->persist($ciudad); } $manager->flush(); // Crear 10 tiendas en cada ciudad $ciudades = $manager->getRepository('CiudadBundle:Ciudad')->findAll(); $numTienda = 0; foreach ($ciudades as $ciudad) { for ($i = 1; $i <= 10; $i++) { $numTienda++; $tienda = new Tienda(); $tienda->setNombre('Tienda #' . $numTienda); $tienda->setLogin('tienda' . $numTienda); $tienda->setPassword('password' . $numTienda); $tienda->setSalt(md5(time())); $tienda->setDescripcion("Lorem ipsum dolor sit amet, consectetur adipisicing elit," . "sed do eiusmod tempor incididunt ut labore et dolore magna" . "aliqua. Ut enim ad minim veniam, quis nostrud exercitation" . "ullamco laboris nisi ut aliquip ex ea commodo consequat."); $tienda->setDireccion("Calle Lorem Ipsum, {$i}\n" . $ciudad->getNombre()); $tienda->setCiudad($ciudad); $manager->persist($tienda); } } $manager->flush(); // Crear 50 ofertas en cada ciudad $ciudades = $manager->getRepository('CiudadBundle:Ciudad')->findAll(); $numOferta = 0; foreach ($ciudades as $ciudad) { $tiendas = $manager->getRepository('TiendaBundle:Tienda')->findByCiudad($ciudad->getId()); for ($i = 1; $i <= 50; $i++) { $numOferta++; $oferta = new Oferta(); $oferta->setNombre('Oferta #' . $numOferta . ' lorem ipsum dolor sit amet'); $oferta->setDescripcion("Lorem ipsum dolor sit amet, consectetur adipisicing.\n" . "Elit, sed do eiusmod tempor incididunt.\n" . "Ut labore et dolore magna aliqua.\n" . "Nostrud exercitation ullamco laboris nisi ut"); $oferta->setCondiciones("Labore et dolore magna aliqua. Ut enim ad minim veniam."); $oferta->setRutaFoto('foto' . rand(1, 20) . '.jpg'); $oferta->setPrecio(number_format(rand(100, 10000) / 100, 2)); $oferta->setDescuento($oferta->getPrecio() * (rand(10, 70) / 100)); // Se publican 9 ofertas en el pasado, 1 en el presente y 40 en el futuro if (1 == $i) { $fecha = 'today'; $oferta->setRevisada(true); } elseif ($i < 10) { $fecha = 'now - ' . ($i - 1) . ' days'; // el 80% de las ofertas pasadas se marcan como revisadas $oferta->setRevisada(rand(1, 1000) % 10 < 8); } else { $fecha = 'now + ' . ($i - 10 + 1) . ' days'; $oferta->setRevisada(true); } $fechaPublicacion = new \DateTime($fecha); $fechaPublicacion->setTime(23, 59, 59); $fechaExpiracion = clone $fechaPublicacion; $fechaExpiracion->add(\DateInterval::createFromDateString('24 hours')); $oferta->setFechaPublicacion($fechaPublicacion); $oferta->setFechaExpiracion($fechaExpiracion); $oferta->setCompras(0); $oferta->setUmbral(rand(25, 100)); $oferta->setCiudad($ciudad); // Seleccionar aleatoriamente una tienda que pertenezca a la ciudad $oferta->setTienda($tiendas[array_rand($tiendas)]); $manager->persist($oferta); } } $manager->flush(); // Crear 100 usuarios en cada ciudad $numUsuario = 0; foreach ($ciudades as $ciudad) { for ($i = 1; $i <= 100; $i++) { $numUsuario++; $usuario = new Usuario(); $usuario->setNombre('Usuario #' . $numUsuario); $usuario->setApellidos('Apellido1 Apellido2'); $usuario->setEmail('usuario' . $numUsuario . '@localhost'); $usuario->setSalt(''); $usuario->setPassword('password' . $numUsuario); $usuario->setDireccion("Calle Ipsum Lorem, 2\n" . $ciudad->getNombre()); // El 60% de los usuarios permite email $usuario->setPermiteEmail(rand(1, 1000) % 10 < 6); $usuario->setFechaAlta(new \DateTime('now - ' . rand(1, 150) . ' days')); $usuario->setFechaNacimiento(new \DateTime('now - ' . rand(7000, 20000) . ' days')); $dni = substr(rand(), 0, 8); $usuario->setDni($dni . substr("TRWAGMYFPDXBNJZSQVHLCKE", strtr($dni, "XYZ", "012") % 23, 1)); $usuario->setNumeroTarjeta('1234567890123456'); $usuario->setCiudad($ciudad); $manager->persist($usuario); } } $manager->flush(); // Crear 500 ventas aleatorias $ofertas = $manager->getRepository('OfertaBundle:Oferta')->findAll(); $usuarios = $manager->getRepository('UsuarioBundle:Usuario')->findAll(); foreach ($usuarios as $usuario) { $compras = rand(0, 10); $comprado = array(); for ($i = 0; $i < $compras; $i++) { $venta = new Venta(); // Sólo se añade una venta: // - si este mismo usuario no ha comprado antes la misma oferta // - si la oferta seleccionada ha sido revisada // - si la fecha de publicación de la oferta es posterior a ahora mismo $oferta = $ofertas[array_rand($ofertas)]; while (in_array($oferta->getId(), $comprado) || $oferta->getRevisada() == false || $oferta->getFechaPublicacion() > new \DateTime('now')) { $oferta = $ofertas[array_rand($ofertas)]; } $comprado[] = $oferta->getId(); $venta->setOferta($oferta); $venta->setUsuario($usuario); $publicacion = clone $oferta->getFechaPublicacion(); $venta->setFecha($publicacion->add(\DateInterval::createFromDateString(rand(10, 10000) . ' seconds'))); $manager->persist($venta); $oferta->setCompras($oferta->getCompras() + 1); $manager->persist($oferta); } unset($comprado); } $manager->flush(); }