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\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();
}
}

View File

@ -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();

View File

@ -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();