X-Git-Url: https://git.rapsys.eu/.gitweb.cgi/airbundle/blobdiff_plain/a6d4b638f900b3e1430c1f86d4cdb520f3774e6b..7275c708976e5ffd84de02128b7459c83f76a6aa:/DataFixtures/AirFixtures.php diff --git a/DataFixtures/AirFixtures.php b/DataFixtures/AirFixtures.php index 4599f0b..7b3e3a3 100644 --- a/DataFixtures/AirFixtures.php +++ b/DataFixtures/AirFixtures.php @@ -2,46 +2,78 @@ namespace Rapsys\AirBundle\DataFixtures; -use Rapsys\AirBundle\Entity\Title; +use Doctrine\Bundle\FixturesBundle\Fixture; +use Doctrine\Persistence\ObjectManager; +use Symfony\Component\DependencyInjection\ContainerAwareInterface; +use Symfony\Component\DependencyInjection\ContainerInterface; +use Symfony\Component\PasswordHasher\Hasher\UserPasswordHasherInterface; + +use Rapsys\AirBundle\Entity\Civility; use Rapsys\AirBundle\Entity\Group; use Rapsys\AirBundle\Entity\User; use Rapsys\AirBundle\Entity\Location; use Rapsys\AirBundle\Entity\Slot; -class AirFixtures extends \Doctrine\Bundle\FixturesBundle\Fixture implements \Symfony\Component\DependencyInjection\ContainerAwareInterface { +class AirFixtures extends Fixture implements ContainerAwareInterface { /** * @var ContainerInterface */ private $container; - public function setContainer(\Symfony\Component\DependencyInjection\ContainerInterface $container = null) { + /** + * @var UserPasswordHasherInterface + */ + private $hasher; + + public function setContainer(ContainerInterface $container = null) { $this->container = $container; + $this->hasher = $this->container->get('security.password_hasher_factory'); } /** * {@inheritDoc} */ - public function load(\Doctrine\Common\Persistence\ObjectManager $manager) { - $encoder = $this->container->get('security.password_encoder'); + public function load(ObjectManager $manager) { + //Civility tree + $civilityTree = array( + 'Mister', + 'Madam', + 'Miss' + ); + + //Create titles + $civilitys = array(); + foreach($civilityTree as $civilityData) { + $civility = new Civility(); + $civility->setTitle($civilityData); + $civility->setCreated(new \DateTime('now')); + $civility->setUpdated(new \DateTime('now')); + $manager->persist($civility); + $civilitys[$civilityData] = $civility; + unset($civility); + } + + //TODO: insert countries from https://raw.githubusercontent.com/raramuridesign/mysql-country-list/master/country-lists/mysql-country-list-detailed-info.sql + #CREATE TABLE `countries` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `code` varchar(2) NOT NULL, `alpha` varchar(3) NOT NULL, `title` varchar(64) COLLATE utf8mb4_unicode_ci NOT NULL, `created` datetime NOT NULL, `updated` datetime NOT NULL, PRIMARY KEY (`id`), UNIQUE KEY `code` (`code`), UNIQUE KEY `alpha` (`alpha`)) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; + #insert into countries (code, alpha, title, created, updated) select countryCode, isoAlpha3, countryName, NOW(), NOW() FROM apps_countries_detailed ORDER BY countryCode ASC, isoAlpha3 ASC; - //Title tree - $titleTree = array( - 'Mr.' => 'Mister', - 'Mrs.' => 'Madam', - 'Ms.' => 'Miss' + //Dance tree + $danceTree = array( + 'Argentine Tango' => [ + 'Milonga', 'Class and milonga', 'Public class', 'Private class' + ] ); //Create titles - $titles = array(); - foreach($titleTree as $shortData => $titleData) { - $title = new Title(); - $title->setShort($shortData); - $title->setTitle($titleData); - $title->setCreated(new \DateTime('now')); - $title->setUpdated(new \DateTime('now')); - $manager->persist($title); - $titles[$shortData] = $title; - unset($title); + $dances = array(); + foreach($danceTree as $danceTitle => $danceData) { + foreach($danceData as $danceType) { + $dance = new Dance($danceTitle, $danceType); + $dance->setCreated(new \DateTime('now')); + $dance->setUpdated(new \DateTime('now')); + $manager->persist($dance); + unset($dance); + } } //Group tree @@ -80,7 +112,7 @@ class AirFixtures extends \Doctrine\Bundle\FixturesBundle\Fixture implements \Sy 'phone' => '+33677952829', 'password' => 'test' ), - array( + /*array( 'short' => 'Mr.', 'group' => 'Senior', 'mail' => 'denis.courvoisier@wanadoo.fr', @@ -89,7 +121,7 @@ class AirFixtures extends \Doctrine\Bundle\FixturesBundle\Fixture implements \Sy 'surname' => 'Courvoisier', 'phone' => '+33600000000', 'password' => 'test' - ), + ),*/ array( 'short' => 'Mr.', 'group' => 'Senior', @@ -115,15 +147,13 @@ class AirFixtures extends \Doctrine\Bundle\FixturesBundle\Fixture implements \Sy //Create users $users = array(); foreach($userTree as $userData) { - $user = new User(); - $user->setMail($userData['mail']); + $user = new User($userData['mail']); $user->setPseudonym($userData['pseudonym']); $user->setForename($userData['forename']); $user->setSurname($userData['surname']); $user->setPhone($userData['phone']); - $user->setPassword($encoder->encodePassword($user, $userData['password'])); - $user->setActive(true); - $user->setTitle($titles[$userData['short']]); + $user->setPassword($this->hasher->hashPassword($user, $userData['password'])); + $user->setCivility($civilitys[$userData['short']]); $user->addGroup($groups[$userData['group']]); $user->setCreated(new \DateTime('now')); $user->setUpdated(new \DateTime('now')); @@ -136,15 +166,17 @@ class AirFixtures extends \Doctrine\Bundle\FixturesBundle\Fixture implements \Sy $manager->flush(); //Location tree + //XXX: adding a new zipcode here requires matching accuweather uris in Command/WeatherCommand.php $locationTree = [ [ - 'title' => 'Opera Garnier', + 'title' => 'Garnier opera', 'short' => 'Garnier', 'address' => '10 Place de l\'Opéra', 'zipcode' => '75009', 'city' => 'Paris', 'latitude' => 48.871268, - 'longitude' => 2.331832 + 'longitude' => 2.331832, + 'hotspot' => true ], [ 'title' => 'Tino-Rossi garden', @@ -153,7 +185,8 @@ class AirFixtures extends \Doctrine\Bundle\FixturesBundle\Fixture implements \Sy 'zipcode' => '75005', 'city' => 'Paris', 'latitude' => 48.847736, - 'longitude' => 2.360953 + 'longitude' => 2.360953, + 'hotspot' => true ], [ 'title' => 'Trocadero esplanade', @@ -163,25 +196,28 @@ class AirFixtures extends \Doctrine\Bundle\FixturesBundle\Fixture implements \Sy 'zipcode' => '75116', 'city' => 'Paris', 'latitude' => 48.861888, - 'longitude' => 2.288853 + 'longitude' => 2.288853, + 'hotspot' => false ], [ - 'title' => 'Colette square', + 'title' => 'Colette place', 'short' => 'Colette', 'address' => 'Galerie du Théâtre Français', 'zipcode' => '75001', 'city' => 'Paris', 'latitude' => 48.863219, - 'longitude' => 2.335847 + 'longitude' => 2.335847, + 'hotspot' => false ], [ - 'title' => 'Swan Island', + 'title' => 'Swan island', 'short' => 'Swan', 'address' => 'Allée des Cygnes', 'zipcode' => '75015', 'city' => 'Paris', 'latitude' => 48.849976, #48.849976 - 'longitude' => 2.279603 #2.2796029 + 'longitude' => 2.279603, #2.2796029, + 'hotspot' => false ], [ 'title' => 'Jussieu esplanade', @@ -190,7 +226,8 @@ class AirFixtures extends \Doctrine\Bundle\FixturesBundle\Fixture implements \Sy 'zipcode' => '75005', 'city' => 'Paris', 'latitude' => 48.847955, #48.8479548 - 'longitude' => 2.353291 #2.3532907 + 'longitude' => 2.353291, #2.3532907, + 'hotspot' => false ], [ 'title' => 'Orleans gallery', @@ -199,7 +236,8 @@ class AirFixtures extends \Doctrine\Bundle\FixturesBundle\Fixture implements \Sy 'zipcode' => '75001', 'city' => 'Paris', 'latitude' => 48.863885, - 'longitude' => 2.337387 + 'longitude' => 2.337387, + 'hotspot' => false ], [ 'title' => 'Orsay museum', @@ -208,7 +246,8 @@ class AirFixtures extends \Doctrine\Bundle\FixturesBundle\Fixture implements \Sy 'zipcode' => '75007', 'city' => 'Paris', 'latitude' => 48.860418, - 'longitude' => 2.325815 + 'longitude' => 2.325815, + 'hotspot' => false ], [ 'title' => 'Saint-Honore market', @@ -217,7 +256,18 @@ class AirFixtures extends \Doctrine\Bundle\FixturesBundle\Fixture implements \Sy 'zipcode' => '75001', 'city' => 'Paris', 'latitude' => 48.866992, - 'longitude' => 2.331752 + 'longitude' => 2.331752, + 'hotspot' => false + ], + [ + 'title' => 'Igor Stravinsky place', + 'short' => 'Stravinsky', + 'address' => '2 rue Brisemiche', + 'zipcode' => '75004', + 'city' => 'Paris', + 'latitude' => 48.859244, + 'longitude' => 2.351289, + 'hotspot' => false ], [ 'title' => 'Tokyo palace', @@ -226,7 +276,8 @@ class AirFixtures extends \Doctrine\Bundle\FixturesBundle\Fixture implements \Sy 'zipcode' => '75116', 'city' => 'Paris', 'latitude' => 48.863827, - 'longitude' => 2.297339 + 'longitude' => 2.297339, + 'hotspot' => false ], [ 'title' => 'Drawings\' garden', @@ -235,7 +286,28 @@ class AirFixtures extends \Doctrine\Bundle\FixturesBundle\Fixture implements \Sy 'zipcode' => '75019', 'city' => 'Paris', 'latitude' => 48.892503, - 'longitude' => 2.389300 + 'longitude' => 2.389300, + 'hotspot' => false + ], + [ + 'title' => 'Louvre palace', + 'short' => 'Louvre', + 'address' => 'Quai François Mitterrand', + 'zipcode' => '75001', + 'city' => 'Paris', + 'latitude' => 48.860386, + 'longitude' => 2.332611, + 'hotspot' => false + ], + [ + 'title' => 'Monde garden', + 'short' => 'Monde', + 'address' => '63 avenue Pierre Mendès-France', + 'zipcode' => '75013', + 'city' => 'Paris', + 'latitude' => 48.840451, + 'longitude' => 2.367638, + 'hotspot' => false ] ]; @@ -250,6 +322,7 @@ class AirFixtures extends \Doctrine\Bundle\FixturesBundle\Fixture implements \Sy $location->setCity($locationData['city']); $location->setLatitude($locationData['latitude']); $location->setLongitude($locationData['longitude']); + $location->setHotspot($locationData['hotspot']); $location->setCreated(new \DateTime('now')); $location->setUpdated(new \DateTime('now')); $manager->persist($location);