Adding activity fixtures

This commit is contained in:
Marc Ducobu 2015-07-06 00:27:16 +02:00
parent f7ab4824db
commit e1eeb1bdab
3 changed files with 103 additions and 2 deletions

View File

@ -25,20 +25,111 @@ namespace Chill\ActivityBundle\DataFixtures\ORM;
use Doctrine\Common\DataFixtures\AbstractFixture; use Doctrine\Common\DataFixtures\AbstractFixture;
use Doctrine\Common\DataFixtures\OrderedFixtureInterface; use Doctrine\Common\DataFixtures\OrderedFixtureInterface;
use Doctrine\Common\Persistence\ObjectManager; 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 * @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() public function getOrder()
{ {
return 16400; 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) 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();
} }
} }

View File

@ -39,6 +39,8 @@ class LoadActivityReason extends AbstractFixture implements OrderedFixtureInterf
return 16300; return 16300;
} }
public static $references = array();
public function load(ObjectManager $manager) public function load(ObjectManager $manager)
{ {
$reasons = [ $reasons = [
@ -69,6 +71,9 @@ class LoadActivityReason extends AbstractFixture implements OrderedFixtureInterf
->setActive(true) ->setActive(true)
->setCategory($this->getReference($r['category'])); ->setCategory($this->getReference($r['category']));
$manager->persist($activityReason); $manager->persist($activityReason);
$reference = 'activity_reason_'.$r['name']['en'];
$this->addReference($reference, $activityReason);
static::$references[] = $reference;
} }
$manager->flush(); $manager->flush();

View File

@ -38,6 +38,8 @@ class LoadActivityType extends AbstractFixture implements OrderedFixtureInterfac
{ {
return 16100; return 16100;
} }
public static $references = array();
public function load(ObjectManager $manager) public function load(ObjectManager $manager)
{ {
@ -55,6 +57,9 @@ class LoadActivityType extends AbstractFixture implements OrderedFixtureInterfac
$activityType = (new ActivityType()) $activityType = (new ActivityType())
->setName(($t['name'])); ->setName(($t['name']));
$manager->persist($activityType); $manager->persist($activityType);
$reference = 'activity_type_'.$t['name']['en'];
$this->addReference($reference, $activityType);
static::$references[] = $reference;
} }
$manager->flush(); $manager->flush();