X-Git-Url: https://git.rapsys.eu/airbundle/blobdiff_plain/d868bf518ef5382b61f0c0d3f563bd86e135427b..ca4cd083c302be4c5a1b50de9d3dcd70cf20b1d8:/DataFixtures/AirFixtures.php?ds=sidebyside diff --git a/DataFixtures/AirFixtures.php b/DataFixtures/AirFixtures.php index 8ccf572..92f4b55 100644 --- a/DataFixtures/AirFixtures.php +++ b/DataFixtures/AirFixtures.php @@ -1,64 +1,92 @@ - + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ namespace Rapsys\AirBundle\DataFixtures; +use Doctrine\Bundle\FixturesBundle\Fixture; +use Doctrine\Persistence\ObjectManager; +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 { +/** + * {@inheritdoc} + */ +class AirFixtures extends Fixture { /** - * @var ContainerInterface + * Air fixtures constructor */ - private $container; - - public function setContainer(\Symfony\Component\DependencyInjection\ContainerInterface $container = null) { - $this->container = $container; + public function __construct(protected ContainerInterface $container, protected UserPasswordHasherInterface $hasher) { } /** * {@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( - 'Mr.' => 'Mister', - 'Mrs.' => 'Madam', - 'Ms.' => 'Miss' - ); + $civilityTree = [ + 'Mister', + 'Madam', + 'Miss' + ]; //Create titles - $civilitys = array(); - foreach($civilityTree as $shortData => $civilityData) { - $civility = new Title($civilityData); - $civility->setShort($shortData); - $civility->setCreated(new \DateTime('now')); - $civility->setUpdated(new \DateTime('now')); + $civilitys = []; + foreach($civilityTree as $civilityData) { + $civility = new Civility($civilityData); $manager->persist($civility); - $civilitys[$shortData] = $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; + + //Dance tree + $danceTree = [ + 'Argentine Tango' => [ + 'Milonga', 'Class and milonga', 'Public class', 'Private class' + ] + ]; + + //Create titles + $dances = []; + foreach($danceTree as $danceTitle => $danceData) { + foreach($danceData as $danceType) { + $dance = new Dance($danceTitle, $danceType); + $manager->persist($dance); + unset($dance); + } + } + //Group tree //XXX: ROLE_XXX is required by - $groupTree = array( + $groupTree = [ 'User', 'Guest', 'Regular', 'Senior', 'Admin' - ); + ]; //Create groups - $groups = array(); + $groups = []; foreach($groupTree as $groupData) { $group = new Group($groupData); - $group->setCreated(new \DateTime('now')); - $group->setUpdated(new \DateTime('now')); $manager->persist($group); $groups[$groupData] = $group; unset($group); @@ -68,8 +96,8 @@ class AirFixtures extends \Doctrine\Bundle\FixturesBundle\Fixture implements \Sy $manager->flush(); //User tree - $userTree = array( - array( + $userTree = [ + [ 'short' => 'Mr.', 'group' => 'Admin', 'mail' => 'tango@rapsys.eu', @@ -78,8 +106,8 @@ class AirFixtures extends \Doctrine\Bundle\FixturesBundle\Fixture implements \Sy 'surname' => 'Gertz', 'phone' => '+33677952829', 'password' => 'test' - ), - /*array( + ], + /*[ 'short' => 'Mr.', 'group' => 'Senior', 'mail' => 'denis.courvoisier@wanadoo.fr', @@ -88,8 +116,8 @@ class AirFixtures extends \Doctrine\Bundle\FixturesBundle\Fixture implements \Sy 'surname' => 'Courvoisier', 'phone' => '+33600000000', 'password' => 'test' - ),*/ - array( + ],*/ + [ 'short' => 'Mr.', 'group' => 'Senior', 'mail' => 'rannou402@orange.fr', @@ -98,8 +126,8 @@ class AirFixtures extends \Doctrine\Bundle\FixturesBundle\Fixture implements \Sy 'surname' => 'Rannou', 'phone' => '+33600000000', 'password' => 'test' - ), - /*array( + ], + /*[ 'short' => 'Ms.', 'group' => 'Regular', 'mail' => 'roxmaps@gmail.com', @@ -108,22 +136,18 @@ class AirFixtures extends \Doctrine\Bundle\FixturesBundle\Fixture implements \Sy 'surname' => 'Prado', 'phone' => '+33600000000', 'password' => 'test' - ),*/ - ); + ],*/ + ]; //Create users - $users = array(); + $users = []; foreach($userTree as $userData) { - $user = new User($userData['mail']); + $user = new User($userData['mail'], $userData['password'], $civilitys[$userData['short']], $userData['forename'], $userData['surname']); + #TODO: check that password is hashed correctly !!! + #$user->setPassword($this->hasher->hashPassword($user, $userData['password'])); $user->setPseudonym($userData['pseudonym']); - $user->setForename($userData['forename']); - $user->setSurname($userData['surname']); $user->setPhone($userData['phone']); - $user->setPassword($encoder->encodePassword($user, $userData['password'])); - $user->setCivility($civilitys[$userData['short']]); $user->addGroup($groups[$userData['group']]); - $user->setCreated(new \DateTime('now')); - $user->setUpdated(new \DateTime('now')); $manager->persist($user); $users[] = $user; unset($user); @@ -134,6 +158,7 @@ class AirFixtures extends \Doctrine\Bundle\FixturesBundle\Fixture implements \Sy //Location tree //XXX: adding a new zipcode here requires matching accuweather uris in Command/WeatherCommand.php + //TODO: add descriptions as well $locationTree = [ [ 'title' => 'Garnier opera', @@ -279,7 +304,7 @@ class AirFixtures extends \Doctrine\Bundle\FixturesBundle\Fixture implements \Sy ]; //Create locations - $locations = array(); + $locations = []; foreach($locationTree as $locationData) { $location = new Location(); $location->setTitle($locationData['title']); @@ -290,8 +315,6 @@ class AirFixtures extends \Doctrine\Bundle\FixturesBundle\Fixture implements \Sy $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); $locations[$locationData['title']] = $location; unset($location); @@ -309,12 +332,9 @@ class AirFixtures extends \Doctrine\Bundle\FixturesBundle\Fixture implements \Sy ]; //Create slots - $slots = array(); + $slots = []; foreach($slotTree as $slotData) { - $slot = new Slot(); - $slot->setTitle($slotData); - $slot->setCreated(new \DateTime('now')); - $slot->setUpdated(new \DateTime('now')); + $slot = new Slot($slotData); $manager->persist($slot); $slots[$slot->getId()] = $slot; unset($slot);