/**
  * @test
  */
 public function findByName()
 {
     $this->loadFixtures('');
     $em = $this->getEntityManager();
     $book = new Book();
     $book->setName('hogehoge');
     $em->persist($book);
     $em->flush();
     $repository = $em->getRepository('AppBundle:Book');
     $books = $repository->findByName('hogehoge');
     $this->assertEquals(1, count($books));
 }
Пример #2
0
 /**
  * implements interface method load()
  * Load data fixtures with the passed EntityManager
  *
  * @param ObjectManager $manager
  */
 public function load(ObjectManager $om)
 {
     $book = new Book();
     $book->setIsbn('123456')->setAuthor('Frau Holle')->setTitle('Kissen schütteln leicht gemacht')->setPrice('9.99');
     $om->persist($book);
     $book = new Book();
     $book->setIsbn('7836')->setAuthor('Inet Held 85')->setTitle('Symfony for checkers')->setPrice('9.99');
     $om->persist($book);
     $book = new Book();
     $book->setIsbn('8787878')->setAuthor('Dieter Scherenhand')->setTitle('Die wundervolle Welt des Häkelns')->setPrice('9.99');
     $om->persist($book);
     $om->flush();
 }
 public function addBook(Book $book)
 {
     $cart = $this->getCart();
     // Check if paper version available before adding to cart
     if ($book->getHasPaper()) {
         $key = $this->getItem($book, $cart);
         if ($key !== FALSE) {
             $cart = $this->increaseItem($key, $cart);
         } else {
             $cart = $this->setItem($book, $cart);
         }
         $this->setCart($cart);
     }
 }
Пример #4
0
 /**
  * Finds a book array from an isbn array using the Google Books API
  *
  * @param array $isbns
  *
  * @return array
  */
 public function find(array &$isbns)
 {
     $data = [];
     $isbnsNotFound = [];
     try {
         if (is_array($isbns)) {
             foreach ($isbns as $isbn) {
                 $q = Constants::GOOGLE_BOOKS_QUERY . $isbn;
                 $result = $this->booksApi->volumes->listVolumes($q, $this->params);
                 $items = $result->getItems();
                 if (count($items) > 0) {
                     $volumeInfo = $items[0]->getVolumeInfo();
                     $book = Book::buildBookWithGoogleApiInfo($volumeInfo);
                     $data[] = $book;
                 } else {
                     $isbnsNotFound[] = $isbn;
                 }
             }
             $isbns = $isbnsNotFound;
             return $data;
         }
     } catch (Exception $e) {
         //TODO: catch specific exception
         return $data;
     }
 }
Пример #5
0
 public function testSubmitValidData()
 {
     $formData = array('title' => 'Test titel', 'author' => 'der unit tester', 'isbn' => '123445', 'price' => '99');
     // test that class BookType compiles
     $form = $this->factory->create(BookType::class);
     $book = new Book();
     $book->setTitle($formData['title'])->setAuthor($formData['author'])->setIsbn($formData['isbn'])->setPrice($formData['price']);
     $form->submit($formData);
     // test that data is correctly transformed by the form
     $this->assertTrue($form->isSynchronized());
     // test that form was submitted and the data mapping is correct
     $this->assertEquals($book, $form->getData());
     // test that all widgets(eg keys from $formData)
     // are available in the children property
     $view = $form->createView();
     $children = $view->children;
     foreach (array_keys($formData) as $key) {
         $this->assertArrayHasKey($key, $children);
     }
 }
Пример #6
0
 /**
  * Gets all the books given a documents name
  *
  * @param $docName
  *
  * @return array
  *
  * @throws DocumentNotFoundException
  */
 public function getBooksFromDocument($docName)
 {
     if (!is_null($docName) && $this->findBy(array('name' => $docName))) {
         $sql = "SELECT lb.*, auth.auth_name\n                    FROM linio_books AS lb," . "author AS auth, " . "lb_author AS lba, " . "documents AS doc, " . "lb_doc AS lbd " . "WHERE doc.doc_name =? AND " . "doc.doc_id = lbd.doc_id_fk AND " . "lb.lb_id = lbd.lb_id_fk AND " . "lba.lb_id_fk = lb.lb_id AND " . "lba.auth_id_fk = auth.auth_id";
         $booksDBArray = $this->_em->getConnection()->fetchAll($sql, array($docName));
         $booksArray = [];
         foreach ($booksDBArray as $bookDB) {
             $book = Book::buildComplete($bookDB[Constants::BOOK_ISBN10], $bookDB[Constants::BOOK_ISBN13], $bookDB[Constants::BOOK_TITLE], $bookDB[Constants::AUTHOR_NAME], $bookDB[Constants::BOOK_PUBLISHER], $bookDB[Constants::BOOK_DESCRIPTION], $bookDB[Constants::BOOK_NUMPAGES], $bookDB[Constants::BOOK_IMAGELINK]);
             $booksArray[] = $book;
         }
         return $booksArray;
     }
     throw new DocumentNotFoundException('Document not found in database');
 }
Пример #7
0
 /**
  * @param string $title
  * @param string $author
  * @param string $isbn
  * @param string $price
  * @dataProvider providerBookData
  */
 public function testGetBookReturnsExpectedBookObject($title, $author, $isbn, $price)
 {
     $book = new Book();
     $book->setTitle($title)->setAuthor($author)->setIsbn($isbn)->setPrice($price);
     $this->assertEquals($book->getTitle(), $title);
     $this->assertEquals($book->getAuthor(), $author);
     $this->assertEquals($book->getISBN(), $isbn);
     $this->assertEquals($book->getPrice(), $price);
 }
Пример #8
0
 /**
  * @Route("/book/{id}/download", requirements={
  *     "id": "\d+"
  * })
  */
 public function downloadAction($id)
 {
     $repository = $this->getDoctrine()->getRepository('AppBundle:Book');
     $book = $repository->find($id);
     $response = new Response();
     $file = $book->getBookFile();
     $response->headers->set('Content-Type', $file->getMimeType());
     $response->headers->set('Content-Disposition', 'attachment;filename="' . $file->getFileName());
     $response->setContent(file_get_contents(Book::getUploadsDirectory() . '/' . $book->getFilePath()));
     return $response;
 }
Пример #9
0
 /**
  * @Method("GET")
  * @Route("books/{id}", name="book_detail")
  */
 public function getAction(Book $book)
 {
     $comments = $this->getRepository("AppBundle:BookComment")->getCommentsForBook($book->getId());
     return $this->render('book/detail.html.twig', ['book' => $book, 'comments' => $comments]);
 }
Пример #10
0
 /**
  * @param Book $book
  *
  * @return Form
  */
 private function createDeleteForm(Book $book)
 {
     $options = ['action' => $this->generateUrl('book_remove', ['id' => $book->getId()]), 'method' => 'DELETE'];
     return $this->createFormBuilder(null, $options)->add('Delete', 'submit')->getForm();
 }
Пример #11
0
 /**
  * Add books
  *
  * @param \AppBundle\Entity\Book $book
  * @return Reader
  */
 public function addBook(\AppBundle\Entity\Book $book)
 {
     $book->addReader($this);
     $this->books[] = $book;
     return $this;
 }
Пример #12
0
 /**
  * Builds a Book entity from the data retrieved from the API
  *
  * @param $volumeInfo
  *
  * @return Book
  */
 public static function buildBookWithGoogleApiInfo($volumeInfo)
 {
     $numIsbn13 = 0;
     $numIsbn10 = 1;
     if (strlen($volumeInfo[Constants::GOOGLE_BOOKS_LABEL_INDUSTRY][0][Constants::GOOGLE_BOOKS_LABEL_IDENTIFIER]) != 13) {
         $numIsbn10 = 0;
         $numIsbn13 = 1;
     }
     if (isset($volumeInfo[Constants::GOOGLE_BOOKS_LABEL_INDUSTRY][$numIsbn13])) {
         $isbn13 = $volumeInfo[Constants::GOOGLE_BOOKS_LABEL_INDUSTRY][$numIsbn13][Constants::GOOGLE_BOOKS_LABEL_IDENTIFIER];
     } else {
         $isbn13 = "N/A";
     }
     if (isset($volumeInfo[Constants::GOOGLE_BOOKS_LABEL_INDUSTRY][$numIsbn10])) {
         $isbn10 = $volumeInfo[Constants::GOOGLE_BOOKS_LABEL_INDUSTRY][$numIsbn10][Constants::GOOGLE_BOOKS_LABEL_IDENTIFIER];
     } else {
         $isbn10 = "N/A";
     }
     $author = is_array($volumeInfo[Constants::GOOGLE_BOOKS_LABEL_AUTHORS]) ? implode(', ', $volumeInfo[Constants::GOOGLE_BOOKS_LABEL_AUTHORS]) : $volumeInfo[Constants::GOOGLE_BOOKS_LABEL_AUTHORS];
     $imageLink = !empty($volumeInfo[Constants::GOOGLE_BOOKS_LABEL_IMAGELINKS][Constants::GOOGLE_BOOKS_LABEL_THUMBNAIL]) ? $volumeInfo[Constants::GOOGLE_BOOKS_LABEL_IMAGELINKS][Constants::GOOGLE_BOOKS_LABEL_THUMBNAIL] : '';
     $book = Book::buildComplete($isbn10, $isbn13, $volumeInfo[Constants::GOOGLE_BOOKS_LABEL_TITLE], $author, $volumeInfo[Constants::GOOGLE_BOOKS_LABEL_PUBLISHER], $volumeInfo[Constants::GOOGLE_BOOKS_LABEL_DESCRIPTION], $volumeInfo[Constants::GOOGLE_BOOKS_LABEL_PAGECOUNT], $imageLink);
     return $book;
 }
Пример #13
0
 public function boot()
 {
     Book::setUploadsDirectory($this->container->getParameter('uploads_directory'));
 }
Пример #14
0
 /**
  * Remove book
  *
  * @param \AppBundle\Entity\Book $book
  */
 public function removeBook(Book $book)
 {
     $this->books->removeElement($book);
 }
Пример #15
0
 /**
  * @Route("api/v1/books/add")
  * @param Request $request
  */
 public function addAction(Request $request)
 {
     if (!$this->authentication($request)) {
         $messages = array("message" => "Autentication error, use right api key");
         return $this->jsonResponse($messages);
     }
     $messages = array();
     if ($request->getMethod() === "POST") {
         $bookParametrBag = $request->request;
         $book = Book::createBook($bookParametrBag);
         if (is_array($book)) {
             $messages = $book;
         }
         if (count($messages) === 0) {
             $entityManager = $this->getDoctrine()->getManager();
             $entityManager = $this->getDoctrine()->getManager();
             $entityManager->persist($book);
             $entityManager->flush();
             $messages["message"] = "done";
         } else {
             $messages["message"] = "error";
         }
     } else {
         $messages["message"] = "error";
         $messages["method_error"] = "You should use POST method";
     }
     return $this->jsonResponse($messages);
 }
Пример #16
0
 public function load(ObjectManager $manager)
 {
     $book1 = new Book();
     $book1->setName("Объектно-ориентированное программирование в С++");
     $book1->setAuthor("Роберт Лафоре");
     $book1->setDescription("Эта книга помогла множеству пользователей освоить технологию объектно-ориентированного программирования в С++. Роберт Лафоре рассматривает все основные принципы языка. Представляет полномасштабные приложения, приводит наглядные примеры, которые поясняют теорию. Представляет сложные новые актуальные возможности объектно-ориентированного программирования в C + + . Рассматривает создание сложных и эффективных объектно-ориентированные приложения. Книга рассчитана на то, что вы знакомы с основными понятиями программирования, этого достаточно, чтобы понять синтаксис и особенности языка. При проектировании модулей C + +, вы стараетесь увидеть весь мир в виде объектов (например, автомобиль является объектом, имеющим определенные свойства: цвет, количество дверей и т.д., а также определенные методы: возможность ускоряться, тормозить и т. д.) Роберт Лафоре представляет принципиальные понятия, которые формируют основу объектно-ориентированного программирования: В книге множество полезных иллюстраций. Более ста упражнений, с помощью которых можно проверить знания по всем темам. ");
     $book1->setNumberPages(950);
     $book1->setNameEdition("Питер");
     $book1->setYearEdition(2013);
     $book1->setPrice(480);
     $book1->setImage("book.jpg");
     $book1->setBookType($this->getReference("bookType-1"));
     $book2 = new Book();
     $book2->setName("Приемы объектно-ориентированного проектирования");
     $book2->setAuthor("Эрих Гамма, Ричард Хелм, Ральф Джонсон, Джон Влиссидес");
     $book2->setDescription("Эта книга – полезный и необходимый справочник. Паттерны проектирования книга, которую 90% разработчиков считают лучшей, из всех книг, написанных на эту тематику. Авторы, которых называют \"великолепной четверкой\", представили оптимальные решения наиболее распространенных задач, связанных с проектированием. Паттерны повышают гибкость, дают возможность повторного применения программ. Паттерны используются практически везде – в архитектуре, электронике, музыке, литературе, живописи, спорте, медицине, политике, и т.д. Паттерны обеспечивают");
     $book2->setNumberPages(380);
     $book2->setNameEdition("Питер");
     $book2->setYearEdition(2014);
     $book2->setPrice(190);
     $book2->setImage("book.jpg");
     $book2->setBookType($this->getReference("bookType-1"));
     $book3 = new Book();
     $book3->setName("Совершенный код");
     $book3->setAuthor("Стив Макконнелл");
     $book3->setDescription("Лучшее практическое руководство по программированию, не зависимо от применяемого в работе языка. Стив Макконнелл главный инженер-программист Construx Software, автор книг по программированию. Лауреат нескольких премий. Совершенный код Стива Макконнелла помогает разработчикам создавать программное обеспечение на протяжении десяти лет. Это полностью обновленное издание классической книги с учетом всех новинок, новыми образцами, иллюстрирующими код, ясное прагматичное руководство. Книга стимулирует мышление и поможет построить код самого высокого качества.");
     $book3->setNumberPages(890);
     $book3->setNameEdition("Питер");
     $book3->setYearEdition(2015);
     $book3->setPrice(650);
     $book3->setImage("book.jpg");
     $book3->setBookType($this->getReference("bookType-1"));
     $book4 = new Book();
     $book4->setName("PHP: объекты, шаблоны и методики программирования");
     $book4->setAuthor("Мэтт Зандстра");
     $book4->setDescription("Книга обобщает лучшие методики проектирования кода. Цель книги Мэтта Зандстра PHP – научить разрабатывать безупречные программные системы.. Мэтт Зандстра – известный веб-программист, автор книг. Один из главных разработчиков компании Yahoo!Книга поможет освоить принципы и шаблоны проектирования, делающие модели более мощными. Автор рассматривает классические паттерны проектирования, приводит простые и последовательные примеры, объясняет методы управления несколькими разработчикам Subversion, рассказывает о разработке, установке, стратегии автоматизации тестирования и зданий.");
     $book4->setNumberPages(450);
     $book4->setNameEdition("Питер");
     $book4->setYearEdition(2012);
     $book4->setPrice(510);
     $book4->setImage("book.jpg");
     $book4->setSlider(true);
     $book4->setBookType($this->getReference("bookType-1"));
     $book5 = new Book();
     $book5->setName("PHP. Рецепты программирования");
     $book5->setDescription("В книге представлены решения самых распространенных задач на РНР. Сведения, изложенные Дэвидом Скляром и Адамом Трахтенбергом интересны для каждого разработчика. Речь идет о базовых типах данных, операциях с ними; файлах cookie; функциях РНР; аутентификации пользователей; работе со слоями; вопросах безопасности; ускорении работы программ; работе в сети; создании графических изображений; обработке ошибок; отладке сценариев и создании тестов. Авторы предлагают рецепты, которые связаны с основами объектно-ориентированного программирования и новыми функциональными возможностями РНР. Каждый из этих рецептов полностью показывает путь решения задачи и может использоваться отдельно.");
     $book5->setAuthor("Дэвид Скляр, Адам Трахтенберг");
     $book5->setNumberPages(710);
     $book5->setNameEdition("Питер");
     $book5->setYearEdition(2016);
     $book5->setPrice(770);
     $book5->setImage("book.jpg");
     $book5->setBookType($this->getReference("bookType-1"));
     $book6 = new Book();
     $book6->setName("Java. Библиотека профессионала, том 1. Основы");
     $book6->setDescription("В книге представлена программная платформа этого языка программирования, характерные особенности, цели и достоинства, аплет Java и Internet. Это язык простой, безопасный и надежный, с четкими синтаксическими правилам и понятной семантикой. В книге рассказывается о новых средствах и усовершенствованиях языка. Java библиотека профессионала том 1рассказывает о фундаментальных концепциях языка и основах программирования пользовательского интерфейса.. Авторы сосредоточились на основных понятиях языка и версии платформы Java SE 6. Рассматривается программирование графики, развертывание приложений, архитектура коллекций. В дополнение к правилам языка, авторы дают рекомендации по правильному объектно-ориентированном дизайну");
     $book6->setAuthor("Кей С. Хорстманн, Гари Корнелл");
     $book6->setNumberPages(860);
     $book6->setNameEdition("Питер");
     $book6->setYearEdition(2015);
     $book6->setPrice(770);
     $book6->setImage("book.jpg");
     $book6->setBookType($this->getReference("bookType-1"));
     $this->addReference('book-1', $book1);
     $this->addReference('book-2', $book2);
     $this->addReference('book-3', $book3);
     $this->addReference('book-4', $book4);
     $this->addReference('book-5', $book5);
     $this->addReference('book-6', $book6);
     $manager->persist($book1);
     $manager->persist($book2);
     $manager->persist($book3);
     $manager->persist($book4);
     $manager->persist($book5);
     $manager->flush();
 }
Пример #17
0
 /**
  * Remove bookComment
  *
  * @param \AppBundle\Entity\BookComment $bookComment
  */
 public function removeBookComment(\AppBundle\Entity\BookComment $bookComment)
 {
     $this->bookComments->removeElement($bookComment);
 }