createCustomer($faker, $visibleCustomer); $manager->persist($customer); $projectForCustomer = rand(self::MIN_PROJECTS_PER_CUSTOMER, self::MAX_PROJECTS_PER_CUSTOMER); for ($p = 1; $p <= $projectForCustomer; $p++) { $visibleProject = 0 != $p % 7; $project = $this->createProject($faker, $customer, $visibleProject); $manager->persist($project); $activityForProject = rand(self::MIN_ACTIVITIES_PER_PROJECT, self::MAX_ACTIVITIES_PER_PROJECT); for ($a = 1; $a <= $activityForProject; $a++) { $visibleActivity = 0 != $a % 6; $activity = $this->createActivity($faker, $project, $visibleActivity); $manager->persist($activity); } } $manager->flush(); $manager->clear(); } $amountGlobalActivities = rand(self::MIN_GLOBAL_ACTIVITIES, self::MAX_GLOBAL_ACTIVITIES); for ($c = 1; $c <= $amountGlobalActivities; $c++) { $visibleActivity = 0 != $c % 4; $activity = $this->createActivity($faker, null, $visibleActivity); $manager->persist($activity); } $manager->flush(); $manager->clear(); } /** * @param Generator $faker * @param bool $visible * @return Customer */ private function createCustomer(Generator $faker, $visible) { $entry = new Customer(); $entry ->setCurrency($faker->currencyCode) ->setName($faker->company . ($visible ? '' : ' (x)')) ->setAddress($faker->address) ->setComment($faker->text) ->setNumber('C-' . $faker->ean8) ->setCountry($faker->countryCode) ->setTimezone($faker->timezone) ->setVisible($visible) ; return $entry; } /** * @param Generator $faker * @param Customer $customer * @param bool $visible * @return Project */ private function createProject(Generator $faker, Customer $customer, $visible) { $entry = new Project(); $entry ->setName($faker->catchPhrase . ($visible ? '' : ' (x)')) ->setBudget(rand(self::MIN_BUDGET, self::MAX_BUDGET)) ->setComment($faker->text) ->setCustomer($customer) ->setVisible($visible) ; return $entry; } /** * @param Generator $faker * @param Project|null $project * @param bool $visible * @return Activity */ private function createActivity(Generator $faker, ?Project $project, $visible) { $entry = new Activity(); $entry ->setName($faker->bs . ($visible ? '' : ' (x)')) ->setProject($project) ->setComment($faker->text) ->setVisible($visible) ; return $entry; } }