From e1eeb1bdaba290f6f49fd3226aead4acfd742ee5 Mon Sep 17 00:00:00 2001 From: Marc Ducobu Date: Mon, 6 Jul 2015 00:27:16 +0200 Subject: [PATCH] Adding activity fixtures --- DataFixtures/ORM/LoadActivity.php | 95 ++++++++++++++++++++++++- DataFixtures/ORM/LoadActivityReason.php | 5 ++ DataFixtures/ORM/LoadActivityType.php | 5 ++ 3 files changed, 103 insertions(+), 2 deletions(-) diff --git a/DataFixtures/ORM/LoadActivity.php b/DataFixtures/ORM/LoadActivity.php index c65ddc696..fe14fd86c 100644 --- a/DataFixtures/ORM/LoadActivity.php +++ b/DataFixtures/ORM/LoadActivity.php @@ -25,20 +25,111 @@ namespace Chill\ActivityBundle\DataFixtures\ORM; use Doctrine\Common\DataFixtures\AbstractFixture; use Doctrine\Common\DataFixtures\OrderedFixtureInterface; use Doctrine\Common\Persistence\ObjectManager; +use Faker\Factory as FakerFactory; +use Chill\ActivityBundle\Entity\Activity; +use Chill\MainBundle\DataFixtures\ORM\LoadUsers; +use Chill\ActivityBundle\DataFixtures\ORM\LoadActivityReason; +use Chill\ActivityBundle\DataFixtures\ORM\LoadActivityType; +use Chill\MainBundle\DataFixtures\ORM\LoadScopes; +use Symfony\Component\DependencyInjection\ContainerAwareInterface; /** - * Description of LoadActivity + * Load reports into DB * * @author Champs-Libres Coop */ -class LoadActivity extends AbstractFixture implements OrderedFixtureInterface//, ContainerAwareInterface +class LoadActivity extends AbstractFixture implements OrderedFixtureInterface, ContainerAwareInterface { + use \Symfony\Component\DependencyInjection\ContainerAwareTrait; + + /** + * @var \Faker\Generator + */ + private $faker; + + public function __construct() + { + $this->faker = FakerFactory::create('fr_FR'); + } + public function getOrder() { return 16400; } + /** + * Return a random scope + * + * @return \Chill\MainBundle\Entity\Scope + */ + private function getRandomScope() + { + $scopeRef = LoadScopes::$references[array_rand(LoadScopes::$references)]; + return $this->getReference($scopeRef); + } + + /** + * Return a random activityType + * + * @return \Chill\ActivityBundle\Entity\ActivityType + */ + private function getRandomActivityType() + { + $typeRef = LoadActivityType::$references[array_rand(LoadActivityType::$references)]; + return $this->getReference($typeRef); + } + + /** + * Return a random activityReason + * + * @return \Chill\ActivityBundle\Entity\ActivityReason + */ + private function getRandomActivityReason() + { + $reasonRef = LoadActivityReason::$references[array_rand(LoadActivityReason::$references)]; + return $this->getReference($reasonRef); + } + + /** + * Return a random user + * + * @return \Chill\MainBundle\Entity\User + */ + private function getRandomUser() + { + $userRef = array_rand(LoadUsers::$refs); + return $this->getReference($userRef); + } + + public function newRandomActivity($person) + { + $activity = (new Activity()) + ->setUser($this->getRandomUser()) + ->setPerson($person) + ->setDate($this->faker->dateTimeThisYear()) + ->setDurationTime($this->faker->dateTime(36000)) + ->setType($this->getRandomActivityType()) + ->setReason($this->getRandomActivityReason()) + ->setScope($this->getRandomScope()) + ->setAttendee($this->faker->boolean()) + ->setRemark('A remark'); + return $activity; + } + public function load(ObjectManager $manager) { + $persons = $this->container->get('doctrine.orm.entity_manager') + ->getRepository('ChillPersonBundle:Person') + ->findAll(); + + foreach($persons as $person) { + $activityNbr = rand(0,3); + for($i = 0; $i < $activityNbr; $i ++) { + print "Creating an activity type for : ".$person."\n"; + $activity = $this->newRandomActivity($person); + $manager->persist($activity); + } + } + $manager->flush(); } } diff --git a/DataFixtures/ORM/LoadActivityReason.php b/DataFixtures/ORM/LoadActivityReason.php index 1dbd18f11..64c58ee7e 100644 --- a/DataFixtures/ORM/LoadActivityReason.php +++ b/DataFixtures/ORM/LoadActivityReason.php @@ -39,6 +39,8 @@ class LoadActivityReason extends AbstractFixture implements OrderedFixtureInterf return 16300; } + public static $references = array(); + public function load(ObjectManager $manager) { $reasons = [ @@ -69,6 +71,9 @@ class LoadActivityReason extends AbstractFixture implements OrderedFixtureInterf ->setActive(true) ->setCategory($this->getReference($r['category'])); $manager->persist($activityReason); + $reference = 'activity_reason_'.$r['name']['en']; + $this->addReference($reference, $activityReason); + static::$references[] = $reference; } $manager->flush(); diff --git a/DataFixtures/ORM/LoadActivityType.php b/DataFixtures/ORM/LoadActivityType.php index 8d0dcfa97..405c89606 100644 --- a/DataFixtures/ORM/LoadActivityType.php +++ b/DataFixtures/ORM/LoadActivityType.php @@ -38,6 +38,8 @@ class LoadActivityType extends AbstractFixture implements OrderedFixtureInterfac { return 16100; } + + public static $references = array(); public function load(ObjectManager $manager) { @@ -55,6 +57,9 @@ class LoadActivityType extends AbstractFixture implements OrderedFixtureInterfac $activityType = (new ActivityType()) ->setName(($t['name'])); $manager->persist($activityType); + $reference = 'activity_type_'.$t['name']['en']; + $this->addReference($reference, $activityType); + static::$references[] = $reference; } $manager->flush();