public function insertAction(Request $request)
 {
     //$movie = new Movie($request->get('title'), str_replace('.', '', $request->get('price')), $request->get('description'));
     $movie = new Movie();
     if ($request->get('title') != null) {
         $movie->setTitle($request->get('title'));
     }
     if (str_replace('.', '', $request->get('price')) != null) {
         $movie->setPrice(str_replace('.', '', $request->get('price')));
     }
     if ($request->get('description') != null) {
         $movie->setDescription($request->get('description'));
     }
     $validator = $this->get('validator');
     $errors = $validator->validate($movie);
     if (count($errors) > 0) {
         $errorsString = (string) $errors;
         return $this->render('movies/customErrorPage.html.twig', array('errorsString' => $errorsString));
     }
     /* em stands for entity manager */
     $em = $this->getDoctrine()->getManager();
     $em->persist($movie);
     $em->flush();
     return $this->redirectToRoute('movies');
 }
 public function load(ObjectManager $manager)
 {
     $t1 = new Type();
     $t1->setName('Feature Film');
     $t2 = new Type();
     $t2->setName('Documentary');
     $g1 = new Genre();
     $g1->setName('thriller');
     $g2 = new Genre();
     $g2->setName('fantasy');
     $g3 = new Genre();
     $g3->setName('drama');
     $m1 = new Movie();
     $m1->setTitle('Elephant man');
     $m1->setType($t1);
     $m1->getGenres()->add($g2);
     $manager->persist($m1);
     $m2 = new Movie();
     $m2->setTitle('Ice age');
     $m2->setYear(2002);
     $m2->setReleaseDate(new \DateTime('2012-03-12'));
     $m2->setType($t2);
     $m2->getGenres()->add($g1);
     $m2->getGenres()->add($g3);
     $manager->persist($m2);
     $m3 = new Movie();
     $m3->setTitle('Deadpool');
     $m3->setType($t1);
     $m3->getGenres()->add($g1);
     $manager->persist($m3);
     $manager->flush();
 }
 public function importArray(array $data)
 {
     // Turning off doctrine default logs queries for saving memory
     $this->em->getConnection()->getConfiguration()->setSQLLogger(null);
     // Process items 20 by 20
     $batchSize = 100;
     $i = 1;
     // Processing on each row of data
     foreach ($data as $row) {
         // $movieImporter->importCSVRow();
         $movie = $this->em->getRepository('AppBundle:Movie')->findOneBy(array('title' => $row['Title']));
         // If the movie does not exist we create one
         if (!is_object($movie)) {
             $movie = new Movie();
             $movie->setTitle($row['Title']);
         }
         // Updating info
         $movie->setYear($row['Year']);
         $movie->setRating($row['IMDb Rating']);
         $type = $this->em->getRepository('AppBundle:Type')->findOneBy(array('name' => $row['Title type']));
         if (!is_object($type)) {
             $type = new Type();
             $type->setName($row['Title type']);
             $this->em->persist($type);
             $this->em->flush();
         }
         $movie->setType($type);
         $genres = explode(', ', $row['Genres']);
         $movie->getGenres()->clear();
         foreach ($genres as $genre) {
             $g = $this->em->getRepository('AppBundle:Genre')->findOneBy(array('name' => $genre));
             if (!is_object($g)) {
                 $g = new Genre();
                 $g->setName($genre);
                 $this->em->persist($g);
                 $this->em->flush();
                 // Important: without flush, object not written in DB, so not found with findOneBy, and we endup with duplicates
             }
             $movie->getGenres()->add($g);
         }
         // TODO handle other fields here
         // Persisting the current object
         $this->em->persist($movie);
         // Each 20 objects persisted we flush everything
         if ($i % $batchSize === 0) {
             $this->em->flush();
             // Detaches all objects from Doctrine for memory save
             $this->em->clear();
             // Notify progress
             $this->ed->dispatch('movie_importer.progress', new GenericEvent('progress', array('advance' => $batchSize)));
         }
         $i++;
     }
     // Flushing and clear data on queue
     $this->em->flush();
     $this->em->clear();
 }
 /**
  * Adds a new movie to the database
  * @param Request $request
  */
 protected function addMovie(Request $request)
 {
     try {
         // Create a new object holding the posted data
         $movie = new Movie();
         $movie->setMovieName($request->request->get('movieName'));
         $movie->setReleaseYear($request->request->get('releaseYear'));
         $movie->setRating($request->request->get('rating'));
         // Auto generate next id and insert data
         $em = $this->getDoctrine()->getManager();
         $this->changeTableName($em);
         $em->persist($movie);
         $metadata = $em->getClassMetaData(get_class($movie));
         $metadata->setIdGenerator(new \Doctrine\ORM\Id\AssignedGenerator());
         $em->flush();
         $response['success'] = true;
         $response['cause'] = 'Movie ' . $request->request->get('movieName') . ' added successfully!';
         // $response['movie_id'] = $movie_id;
     } catch (Exception $e) {
         $response['success'] = false;
         $response['cause'] = 'Invalid request';
     }
     return $response;
 }
 /**
  * {@inheritdoc}
  */
 public function load(ObjectManager $manager)
 {
     $em = $this->container->get('doctrine')->getEntityManager('default');
     $userManager = $this->container->get('fos_user.user_manager');
     /**
      * Add users
      */
     foreach ($this->users as $user) {
         $newUser = $userManager->createUser();
         $newUser->setUsername($user['email']);
         $newUser->setEmail($user['email']);
         $newUser->setName($user['name']);
         $newUser->setPlainPassword($user['pass']);
         $newUser->setEnabled($user['active']);
         $newUser->setRoles(array($user['role']));
         $userManager->updateUser($newUser, true);
     }
     /**
      *Add price categories into database
      */
     foreach ($this->priceCategories as $category => $price) {
         $priceCategory = new priceCategory();
         $priceCategory->setCategory($category);
         $priceCategory->setCategoryPrice($price);
         $manager->persist($priceCategory);
     }
     $manager->flush();
     /**
      * Add clients into database
      */
     /*
           foreach ($this->clients as $i) {
               $client = new Client();
               $client->setEmail($i['email']);
               $client->setFirstname($i['firstname']);
               $client->setSurname($i['surname']);
               $client->setAddress($i['address']);
     
               $manager->persist($client);
           }
             $manager->flush();
     */
     /**
      * Add cinemas, halls and seats into database
      */
     foreach ($this->cinemas as $foo) {
         $cinema = new Cinema();
         $cinema->setName($foo['name']);
         $cinema->setAddress($foo['address']);
         for ($i = 0; $i < rand(1, 3); ++$i) {
             $hall = new Hall();
             $hall->setName($i);
             $hall->setCinema($cinema);
             for ($j = 0; $j < rand(100, 500); ++$j) {
                 $seat = new Seat();
                 $seat->setNumber($j + 1);
                 $seat->setHall($hall);
                 $manager->persist($seat);
             }
             $manager->persist($hall);
         }
         $manager->persist($cinema);
     }
     $manager->flush();
     /**
      * Add genres into database
      */
     foreach ($this->genres as $foo) {
         $genre = new MovieGenre();
         $genre->setGenre($foo);
         $manager->persist($genre);
     }
     $manager->flush();
     // Fetch genres from DB
     $repository = $em->getRepository('AppBundle:MovieGenre');
     $genres = $repository->findAll();
     /**
      * Add movies into database
      */
     foreach ($this->movies as $foo) {
         $movie = new Movie();
         $movie->setName($foo['name']);
         $movie->setYear($foo['year']);
         $genre = $genres[array_rand($genres)];
         $movie->setGenre($genre);
         $movie->setLength($foo['length']);
         $manager->persist($movie);
     }
     $manager->flush();
     /**
      * Add tickets and projections
      */
     // Fetch clients, seats and movies from database
     $repository = $em->getRepository('AppBundle:Client');
     $clients = $repository->findAll();
     $repository = $em->getRepository('AppBundle:Movie');
     $movies = $repository->findAll();
     $repository = $em->getRepository('AppBundle:Hall');
     $halls = $repository->findAll();
     // Add projections into database
     for ($i = 0; $i < 600; $i++) {
         $projection = new Projection();
         $movie = $movies[array_rand($movies)];
         $hall = $halls[array_rand($halls)];
         $date = new \DateTime();
         $date2 = new \DateTime();
         // Set attributes to projection
         $timestamp = randomTimestamp('2015/12/01', '2016/01/31');
         $date->setTimestamp($timestamp);
         $projection->setDate($date);
         $projection->setStart($date);
         $date2->setTimestamp($timestamp + $movie->getLength() * 60);
         $projection->setEnd($date2);
         $projection->setMovie($movie);
         $projection->setHall($hall);
         $manager->persist($projection);
     }
     $manager->flush();
 }
 /**
  * Returns movie
  *
  * @ApiDoc(
  *     views={"default", "movie"},
  *     section="Movie API",
  *     statusCodes={
  *         200="Returned when successful",
  *         400="Returned when an error has occurred"
  *     },
  *     responseMap={
  *         200 = {"class": null, "options": {"data_schema": "movie.schema.yml"}}
  *     }
  * )
  *
  * @Route("movies/{movie}", name="api_movie_get_movie", requirements={
  *     "_scope":  "[\w,]+"
  * }, defaults={"_format": "json"}, methods={"GET"})
  *
  * @RestExtra\Scope(name="list", path="movie/view.yml")
  *
  * @param Movie $movie
  * @param ScopeFetcherInterface $scopeFetcher
  * @param Request $request
  * @return View
  */
 public function getMovieAction(Movie $movie, ScopeFetcherInterface $scopeFetcher, Request $request)
 {
     $datagridBuilder = $this->get('glavweb_datagrid.doctrine_datagrid_builder');
     $datagridBuilder->setEntityClassName(Movie::class)->setDataSchema('movie.schema.yml', $scopeFetcher->getAvailable($request->get('_scope'), 'movie/view.yml'))->addFilter('id', null, ['operator' => Filter::EQ]);
     $datagrid = $datagridBuilder->build(['id' => $movie->getId()]);
     return $this->view($datagrid->getItem());
 }
Example #7
0
 public function relatedEntitiesAction()
 {
     $category = new Entry();
     $category->setName('Main Products');
     $product = new Movie();
     $product->setName('Foo');
     $product->setPrice(19.99);
     $product->setDescription('Lorem ipsum dolor');
     // relate this product to the category
     $product->setCategory($category);
     $em = $this->getDoctrine()->getManager();
     $em->persist($category);
     $em->persist($product);
     $em->flush();
     return new Response('Created product id: ' . $product->getId() . ' and category id: ' . $category->getId());
     //fetchin related
     $product = $this->getDoctrine()->getRepository('AppBundle:Product')->find($id);
     $categoryName = $product->getCategory()->getName();
 }