From eaeb6c18b03ae0693127a252307da0a7839c64d1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Julien=20Fastr=C3=A9?= Date: Thu, 14 Oct 2021 13:57:42 +0200 Subject: [PATCH] try to fix loading of reports fixtures --- .../DataFixtures/ORM/LoadReports.php | 88 +++++++++---------- 1 file changed, 44 insertions(+), 44 deletions(-) diff --git a/src/Bundle/ChillReportBundle/DataFixtures/ORM/LoadReports.php b/src/Bundle/ChillReportBundle/DataFixtures/ORM/LoadReports.php index 180491c1f..5ef8939d8 100644 --- a/src/Bundle/ChillReportBundle/DataFixtures/ORM/LoadReports.php +++ b/src/Bundle/ChillReportBundle/DataFixtures/ORM/LoadReports.php @@ -3,17 +3,17 @@ /* * Chill is a suite of a modules, Chill is a software for social workers * Copyright (C) 2014, Champs Libres Cooperative SCRLFS, - * + * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as * published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version. - * + * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. - * + * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . */ @@ -38,43 +38,43 @@ use Chill\MainBundle\DataFixtures\ORM\LoadScopes; class LoadReports extends AbstractFixture implements OrderedFixtureInterface, ContainerAwareInterface { use \Symfony\Component\DependencyInjection\ContainerAwareTrait; - + /** * - * @var \Faker\Generator + * @var \Faker\Generator */ private $faker; - + public function __construct() { $this->faker = FakerFactory::create('fr_FR'); } - + public function getOrder() { return 15002; } - + public function load(ObjectManager $manager) { $this->createExpected($manager); - + //create random 2 times, to allow multiple report on some people $this->createRandom($manager, 90); $this->createRandom($manager, 30); - + $manager->flush(); } - + private function createRandom(ObjectManager $manager, $percentage) { $people = $this->getPeopleRandom($percentage); - + foreach ($people as $person) { //create a report, set logement or education report $report = (new Report()) ->setPerson($person) - ->setCFGroup(rand(0,10) > 5 ? + ->setCFGroup(rand(0,10) > 5 ? $this->getReference('cf_group_report_logement') : $this->getReference('cf_group_report_education') ) @@ -84,14 +84,14 @@ class LoadReports extends AbstractFixture implements OrderedFixtureInterface, Co $manager->persist($report); } } - + private function createExpected(ObjectManager $manager) { $charline = $this->container->get('doctrine.orm.entity_manager') ->getRepository('ChillPersonBundle:Person') - ->findOneBy(array('firstName' => 'Charline', 'lastName' => 'Depardieu')) + ->findOneBy(array('firstName' => 'Charline', 'lastName' => 'DEPARDIEU')) ; - + $report = (new Report()) ->setPerson($charline) ->setCFGroup($this->getReference('cf_group_report_logement')) @@ -99,12 +99,12 @@ class LoadReports extends AbstractFixture implements OrderedFixtureInterface, Co ->setScope($this->getReference('scope_social')) ; $this->fillReport($report); - + $manager->persist($report); } - + /** - * + * * @return \Chill\MainBundle\Entity\Scope */ private function getScopeRandom() @@ -112,14 +112,14 @@ class LoadReports extends AbstractFixture implements OrderedFixtureInterface, Co $ref = LoadScopes::$references[array_rand(LoadScopes::$references)]; return $this->getReference($ref); } - + private function getPeopleRandom($percentage) { $people = $this->container->get('doctrine.orm.entity_manager') ->getRepository('ChillPersonBundle:Person') ->findAll() ; - + //keep only a part ($percentage) of the people $selectedPeople = array(); foreach($people as $person) { @@ -127,10 +127,10 @@ class LoadReports extends AbstractFixture implements OrderedFixtureInterface, Co $selectedPeople[] = $person; } } - + return $selectedPeople; } - + private function fillReport(Report $report) { //setUser @@ -138,7 +138,7 @@ class LoadReports extends AbstractFixture implements OrderedFixtureInterface, Co $report->setUser( $this->getReference($usernameRef) ); - + //set date if null if ($report->getDate() === NULL) { //set date. 30% of the dates are 2015-05-01 @@ -148,9 +148,9 @@ class LoadReports extends AbstractFixture implements OrderedFixtureInterface, Co } else { $report->setDate($this->faker->dateTimeBetween('-1 year', 'now') ->setTime(0, 0, 0)); - } + } } - + //fill data $datas = array(); foreach ($report->getCFGroup()->getCustomFields() as $field) { @@ -167,66 +167,66 @@ class LoadReports extends AbstractFixture implements OrderedFixtureInterface, Co } } $report->setCFData($datas); - + return $report; } - + /** * pick a random choice - * + * * @param CustomField $field * @return string[]|string the array of slug if multiple, a single slug otherwise */ - private function getRandomChoice(CustomField $field) + private function getRandomChoice(CustomField $field) { $choices = $field->getOptions()['choices']; $multiple = $field->getOptions()['multiple']; $other = $field->getOptions()['other']; - + //add other if allowed if($other) { $choices[] = array('slug' => '_other'); } - + //initialize results $picked = array(); - + if ($multiple) { $numberSelected = rand(1, count($choices) -1); for ($i = 0; $i < $numberSelected; $i++) { $picked[] = $this->pickChoice($choices); } - + if ($other) { $result = array("_other" => NULL, "_choices" => $picked); - + if (in_array('_other', $picked)) { $result['_other'] = $this->faker->realText(70); } - + return $result; } } else { $picked = $this->pickChoice($choices); - + if ($other) { $result = array('_other' => NULL, '_choices' => $picked); - + if ($picked === '_other') { $result['_other'] = $this->faker->realText(70); } - + return $result; } } - - + + } - + /** * pick a choice within a 'choices' options (for choice type) - * + * * @param array $choices * @return the slug of the selected choice */ @@ -234,7 +234,7 @@ class LoadReports extends AbstractFixture implements OrderedFixtureInterface, Co { return $choices[array_rand($choices)]['slug']; } - + }