/** * @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)); }
/** * 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); } }
/** * 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; } }
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); } }
/** * 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'); }
/** * @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); }
/** * @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; }
/** * @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]); }
/** * @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(); }
/** * Add books * * @param \AppBundle\Entity\Book $book * @return Reader */ public function addBook(\AppBundle\Entity\Book $book) { $book->addReader($this); $this->books[] = $book; return $this; }
/** * 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; }
public function boot() { Book::setUploadsDirectory($this->container->getParameter('uploads_directory')); }
/** * Remove book * * @param \AppBundle\Entity\Book $book */ public function removeBook(Book $book) { $this->books->removeElement($book); }
/** * @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); }
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(); }
/** * Remove bookComment * * @param \AppBundle\Entity\BookComment $bookComment */ public function removeBookComment(\AppBundle\Entity\BookComment $bookComment) { $this->bookComments->removeElement($bookComment); }