1.16.10 (#3047)
This commit is contained in:
47
src/DataFixtures/AllFixtures.php
Normal file
47
src/DataFixtures/AllFixtures.php
Normal file
@@ -0,0 +1,47 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
/*
|
||||||
|
* This file is part of the Kimai time-tracking app.
|
||||||
|
*
|
||||||
|
* For the full copyright and license information, please view the LICENSE
|
||||||
|
* file that was distributed with this source code.
|
||||||
|
*/
|
||||||
|
|
||||||
|
namespace App\DataFixtures;
|
||||||
|
|
||||||
|
use Doctrine\Bundle\FixturesBundle\Fixture;
|
||||||
|
use Doctrine\Common\DataFixtures\DependentFixtureInterface;
|
||||||
|
use Doctrine\Persistence\ObjectManager;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This fixture makes sure that all data is loaded.
|
||||||
|
*
|
||||||
|
* @codeCoverageIgnore
|
||||||
|
*/
|
||||||
|
class AllFixtures extends Fixture implements DependentFixtureInterface
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* @return class-string[]
|
||||||
|
*/
|
||||||
|
public function getDependencies()
|
||||||
|
{
|
||||||
|
return [
|
||||||
|
UserFixtures::class,
|
||||||
|
CustomerFixtures::class,
|
||||||
|
TagFixtures::class,
|
||||||
|
TimesheetFixtures::class,
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@inheritdoc}
|
||||||
|
*/
|
||||||
|
public function load(ObjectManager $manager)
|
||||||
|
{
|
||||||
|
// this is a fake fixture class, it only exists to make developers life easier
|
||||||
|
// if we use the DependentFixtureInterface on the TimesheetFixture directly,
|
||||||
|
// we cannot load
|
||||||
|
// bin/console doctrine:fixtures:load --append --group=timesheet
|
||||||
|
// without executing all dependent fixtures
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -13,7 +13,6 @@ use App\Entity\Project;
|
|||||||
use App\Entity\Team;
|
use App\Entity\Team;
|
||||||
use App\Entity\User;
|
use App\Entity\User;
|
||||||
use Doctrine\Bundle\FixturesBundle\Fixture;
|
use Doctrine\Bundle\FixturesBundle\Fixture;
|
||||||
use Doctrine\Common\DataFixtures\DependentFixtureInterface;
|
|
||||||
use Doctrine\Persistence\ObjectManager;
|
use Doctrine\Persistence\ObjectManager;
|
||||||
use Faker\Factory;
|
use Faker\Factory;
|
||||||
|
|
||||||
@@ -26,20 +25,15 @@ use Faker\Factory;
|
|||||||
*
|
*
|
||||||
* @codeCoverageIgnore
|
* @codeCoverageIgnore
|
||||||
*/
|
*/
|
||||||
class TeamFixtures extends Fixture implements DependentFixtureInterface
|
class TeamFixtures extends Fixture
|
||||||
{
|
{
|
||||||
public const AMOUNT_TEAMS = 10;
|
public const AMOUNT_TEAMS = 10;
|
||||||
public const MAX_USERS_PER_TEAM = 15;
|
public const MAX_USERS_PER_TEAM = 15;
|
||||||
public const MAX_PROJECTS_PER_TEAM = 5;
|
public const MAX_PROJECTS_PER_TEAM = 5;
|
||||||
|
|
||||||
/**
|
public static function getGroups(): array
|
||||||
* @return string[]
|
|
||||||
*/
|
|
||||||
public function getDependencies()
|
|
||||||
{
|
{
|
||||||
return [
|
return ['users', 'team'];
|
||||||
UserFixtures::class,
|
|
||||||
];
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -18,7 +18,6 @@ use App\Entity\UserPreference;
|
|||||||
use App\Timesheet\Util;
|
use App\Timesheet\Util;
|
||||||
use Doctrine\Bundle\FixturesBundle\Fixture;
|
use Doctrine\Bundle\FixturesBundle\Fixture;
|
||||||
use Doctrine\Bundle\FixturesBundle\FixtureGroupInterface;
|
use Doctrine\Bundle\FixturesBundle\FixtureGroupInterface;
|
||||||
use Doctrine\Common\DataFixtures\DependentFixtureInterface;
|
|
||||||
use Doctrine\Persistence\ObjectManager;
|
use Doctrine\Persistence\ObjectManager;
|
||||||
use Faker\Factory;
|
use Faker\Factory;
|
||||||
|
|
||||||
@@ -26,20 +25,20 @@ use Faker\Factory;
|
|||||||
* Defines the sample data to load in the database when running the unit and
|
* Defines the sample data to load in the database when running the unit and
|
||||||
* functional tests or while development.
|
* functional tests or while development.
|
||||||
*
|
*
|
||||||
* Execute this command to load the data:
|
* Execute this command to load add fixture data:
|
||||||
* bin/console doctrine:fixtures:load
|
* bin/console doctrine:fixtures:load
|
||||||
*
|
*
|
||||||
|
* Or simply append it to your running installation:
|
||||||
|
* bin/console doctrine:fixtures:load --append --group=timesheet
|
||||||
|
*
|
||||||
* @codeCoverageIgnore
|
* @codeCoverageIgnore
|
||||||
*/
|
*/
|
||||||
class TimesheetFixtures extends Fixture implements DependentFixtureInterface, FixtureGroupInterface
|
class TimesheetFixtures extends Fixture implements FixtureGroupInterface
|
||||||
{
|
{
|
||||||
public const MIN_TIMESHEETS_PER_USER = 50;
|
public const MIN_TIMESHEETS_PER_USER = 50;
|
||||||
public const MAX_TIMESHEETS_PER_USER = 500;
|
public const MAX_TIMESHEETS_PER_USER = 500;
|
||||||
public const MAX_TIMESHEETS_TOTAL = 5000;
|
public const MAX_TIMESHEETS_TOTAL = 200;
|
||||||
public const MAX_RUNNING_TIMESHEETS_PER_USER = 1;
|
public const MAX_RUNNING_TIMESHEETS_PER_USER = 1;
|
||||||
public const TIMERANGE_BEGIN_DAYS = 1; // yesterday
|
|
||||||
public const TIMERANGE_END_DAYS = 1095; // 3 years
|
|
||||||
public const TIMERANGE_RUNNING = 1047; // in minutes = 17:45 hours
|
|
||||||
public const MIN_MINUTES_PER_ENTRY = 15;
|
public const MIN_MINUTES_PER_ENTRY = 15;
|
||||||
public const MAX_MINUTES_PER_ENTRY = 840; // 14h
|
public const MAX_MINUTES_PER_ENTRY = 840; // 14h
|
||||||
public const MAX_DESCRIPTION_LENGTH = 200;
|
public const MAX_DESCRIPTION_LENGTH = 200;
|
||||||
@@ -49,23 +48,16 @@ class TimesheetFixtures extends Fixture implements DependentFixtureInterface, Fi
|
|||||||
|
|
||||||
public const BATCH_SIZE = 100;
|
public const BATCH_SIZE = 100;
|
||||||
|
|
||||||
/**
|
|
||||||
* @return class-string[]
|
|
||||||
*/
|
|
||||||
public function getDependencies()
|
|
||||||
{
|
|
||||||
return [
|
|
||||||
UserFixtures::class,
|
|
||||||
CustomerFixtures::class,
|
|
||||||
TagFixtures::class,
|
|
||||||
];
|
|
||||||
}
|
|
||||||
|
|
||||||
public static function getGroups(): array
|
public static function getGroups(): array
|
||||||
{
|
{
|
||||||
return ['timesheet'];
|
return ['timesheet'];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function getRandomFirstDay(): \DateTime
|
||||||
|
{
|
||||||
|
return new \DateTime(rand(-1095, 14) . ' days');
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* {@inheritdoc}
|
* {@inheritdoc}
|
||||||
*/
|
*/
|
||||||
@@ -218,8 +210,7 @@ class TimesheetFixtures extends Fixture implements DependentFixtureInterface, Fi
|
|||||||
|
|
||||||
private function createTimesheetEntry(User $user, Activity $activity, Project $project, ?string $description, bool $setEndDate)
|
private function createTimesheetEntry(User $user, Activity $activity, Project $project, ?string $description, bool $setEndDate)
|
||||||
{
|
{
|
||||||
$start = new \DateTime();
|
$start = $this->getRandomFirstDay();
|
||||||
$start = $start->modify('- ' . (rand(self::TIMERANGE_BEGIN_DAYS, self::TIMERANGE_END_DAYS)) . ' days');
|
|
||||||
$start = $start->modify('- ' . (rand(1, 86400)) . ' seconds');
|
$start = $start->modify('- ' . (rand(1, 86400)) . ' seconds');
|
||||||
$start->setTimezone(new \DateTimeZone($user->getPreferenceValue(UserPreference::TIMEZONE, date_default_timezone_get())));
|
$start->setTimezone(new \DateTimeZone($user->getPreferenceValue(UserPreference::TIMEZONE, date_default_timezone_get())));
|
||||||
|
|
||||||
@@ -246,7 +237,7 @@ class TimesheetFixtures extends Fixture implements DependentFixtureInterface, Fi
|
|||||||
} else {
|
} else {
|
||||||
// running entries should be short
|
// running entries should be short
|
||||||
$newBegin = clone $entry->getBegin();
|
$newBegin = clone $entry->getBegin();
|
||||||
$newBegin->setTimestamp(time())->modify('- ' . rand(10, self::TIMERANGE_RUNNING) . ' minutes');
|
$newBegin->setTimestamp(time())->modify('- ' . rand(self::MIN_MINUTES_PER_ENTRY, self::MAX_MINUTES_PER_ENTRY) . ' minutes');
|
||||||
$entry->setBegin($newBegin);
|
$entry->setBegin($newBegin);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -12,6 +12,7 @@ namespace App\DataFixtures;
|
|||||||
use App\Entity\User;
|
use App\Entity\User;
|
||||||
use App\Entity\UserPreference;
|
use App\Entity\UserPreference;
|
||||||
use Doctrine\Bundle\FixturesBundle\Fixture;
|
use Doctrine\Bundle\FixturesBundle\Fixture;
|
||||||
|
use Doctrine\Bundle\FixturesBundle\FixtureGroupInterface;
|
||||||
use Doctrine\Persistence\ObjectManager;
|
use Doctrine\Persistence\ObjectManager;
|
||||||
use Faker\Factory;
|
use Faker\Factory;
|
||||||
use Symfony\Component\Security\Core\Encoder\UserPasswordEncoderInterface;
|
use Symfony\Component\Security\Core\Encoder\UserPasswordEncoderInterface;
|
||||||
@@ -25,7 +26,7 @@ use Symfony\Component\Security\Core\Encoder\UserPasswordEncoderInterface;
|
|||||||
*
|
*
|
||||||
* @codeCoverageIgnore
|
* @codeCoverageIgnore
|
||||||
*/
|
*/
|
||||||
class UserFixtures extends Fixture
|
class UserFixtures extends Fixture implements FixtureGroupInterface
|
||||||
{
|
{
|
||||||
public const DEFAULT_PASSWORD = 'kitten';
|
public const DEFAULT_PASSWORD = 'kitten';
|
||||||
public const DEFAULT_API_TOKEN = 'api_kitten';
|
public const DEFAULT_API_TOKEN = 'api_kitten';
|
||||||
@@ -63,6 +64,11 @@ class UserFixtures extends Fixture
|
|||||||
$this->loadTestUsers($manager);
|
$this->loadTestUsers($manager);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static function getGroups(): array
|
||||||
|
{
|
||||||
|
return ['user', 'users'];
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Default users for all test cases
|
* Default users for all test cases
|
||||||
*
|
*
|
||||||
|
|||||||
@@ -76,10 +76,9 @@ final class PaginatedWorkingTimeChart extends SimpleWidget implements UserWidget
|
|||||||
$week = $options['week'];
|
$week = $options['week'];
|
||||||
|
|
||||||
$weekBegin = ($dateTimeFactory->createDateTime())->setISODate($year, $week, 1)->setTime(0, 0, 0);
|
$weekBegin = ($dateTimeFactory->createDateTime())->setISODate($year, $week, 1)->setTime(0, 0, 0);
|
||||||
$weekEnd = ($dateTimeFactory->createDateTime())->setISODate($year, $week, 7)->setTime(23, 59, 59);
|
|
||||||
|
|
||||||
$weekBegin = $dateTimeFactory->getStartOfWeek($weekBegin);
|
$weekBegin = $dateTimeFactory->getStartOfWeek($weekBegin);
|
||||||
$weekEnd = $dateTimeFactory->getEndOfWeek($weekEnd);
|
$weekEnd = $dateTimeFactory->getEndOfWeek($weekBegin);
|
||||||
|
|
||||||
$lastWeekInYear = $this->getLastWeekInYear($year);
|
$lastWeekInYear = $this->getLastWeekInYear($year);
|
||||||
$lastWeekInLastYear = $this->getLastWeekInYear($year - 1);
|
$lastWeekInLastYear = $this->getLastWeekInYear($year - 1);
|
||||||
|
|||||||
Reference in New Issue
Block a user