added global activities (#259)

This commit is contained in:
Kevin Papst
2018-11-06 23:10:34 +01:00
committed by GitHub
parent c66dfbc653
commit db7de3aac1
70 changed files with 1168 additions and 264 deletions

View File

@@ -10,6 +10,7 @@
namespace App\Tests\DataFixtures;
use App\Entity\Activity;
use App\Entity\Project;
use App\Entity\Timesheet;
use App\Entity\User;
use App\Entity\UserPreference;
@@ -108,6 +109,8 @@ class TimesheetFixtures extends Fixture
$activities = $this->getAllActivities($manager);
}
$projects = $this->getAllProjects($manager);
$faker = Factory::create();
$user = $this->user;
@@ -118,9 +121,18 @@ class TimesheetFixtures extends Fixture
} elseif ($i % 2 == 0) {
$description = '';
}
$activity = $activities[array_rand($activities)];
$project = $activity->getProject();
if (null === $project) {
$project = $projects[array_rand($projects)];
}
$entry = $this->createTimesheetEntry(
$user,
$activities[array_rand($activities)],
$activity,
$project,
$description,
$this->getDateTime($i)
);
@@ -129,11 +141,20 @@ class TimesheetFixtures extends Fixture
}
for ($i = 0; $i < $this->running; $i++) {
$activity = $activities[array_rand($activities)];
$project = $activity->getProject();
if (null === $project) {
$project = $projects[array_rand($projects)];
}
$entry = $this->createTimesheetEntry(
$user,
$activities[array_rand($activities)],
$activity,
$project,
$faker->text,
$this->getDateTime($i)
$this->getDateTime($i),
false
);
$manager->persist($entry);
}
@@ -160,7 +181,7 @@ class TimesheetFixtures extends Fixture
protected function getAllActivities(ObjectManager $manager)
{
$all = [];
/* @var User[] $entries */
/* @var Activity[] $entries */
$entries = $manager->getRepository(Activity::class)->findAll();
foreach ($entries as $temp) {
$all[$temp->getId()] = $temp;
@@ -169,15 +190,32 @@ class TimesheetFixtures extends Fixture
return $all;
}
/**
* @param ObjectManager $manager
* @return Project[]
*/
protected function getAllProjects(ObjectManager $manager)
{
$all = [];
/* @var Project[] $entries */
$entries = $manager->getRepository(Project::class)->findAll();
foreach ($entries as $temp) {
$all[$temp->getId()] = $temp;
}
return $all;
}
/**
* @param User $user
* @param Activity $activity
* @param $description
* @param Project $project
* @param string $description
* @param \DateTime $start
* @param bool $setEndDate
* @return Timesheet
*/
private function createTimesheetEntry(User $user, Activity $activity, $description, \DateTime $start, $setEndDate = true)
private function createTimesheetEntry(User $user, Activity $activity, Project $project, $description, \DateTime $start, $setEndDate = true)
{
$end = clone $start;
$end = $end->modify('+ ' . (rand(1, 172800)) . ' seconds');
@@ -188,6 +226,7 @@ class TimesheetFixtures extends Fixture
$entry = new Timesheet();
$entry
->setActivity($activity)
->setProject($project)
->setDescription($description)
->setUser($user)
->setRate(round(($duration / 3600) * $rate))