hide expired projects in team-projects widget (#2432)

This commit is contained in:
Kevin Papst
2021-03-14 13:24:24 +01:00
committed by GitHub
parent ec0eca39ff
commit 0a6ea6be42
3 changed files with 43 additions and 1 deletions

View File

@@ -529,6 +529,21 @@ class Project implements EntityWithMetaFields
return $this->teams; return $this->teams;
} }
public function isVisibleAtDate(\DateTime $dateTime): bool
{
if (!$this->isVisible()) {
return false;
}
if ($this->getCustomer() !== null && !$this->getCustomer()->isVisible()) {
return false;
}
if ($this->getEnd() !== null && $dateTime > $this->getEnd()) {
return false;
}
return true;
}
/** /**
* @return string * @return string
*/ */

View File

@@ -46,12 +46,13 @@ class UserTeamProjects extends SimpleWidget implements AuthorizedWidget, UserWid
/** @var User $user */ /** @var User $user */
$user = $options['user']; $user = $options['user'];
$projects = []; $projects = [];
$now = new \DateTime('now', new \DateTimeZone($user->getTimezone()));
/** @var Team $team */ /** @var Team $team */
foreach ($user->getTeams() as $team) { foreach ($user->getTeams() as $team) {
/** @var Project $project */ /** @var Project $project */
foreach ($team->getProjects() as $project) { foreach ($team->getProjects() as $project) {
if (!$project->isVisible() || !$project->getCustomer()->isVisible()) { if (!$project->isVisibleAtDate($now)) {
continue; continue;
} }
$projects[$project->getId()] = $project; $projects[$project->getId()] = $project;

View File

@@ -48,6 +48,7 @@ class ProjectTest extends TestCase
self::assertNull($sut->getMetaField('foo')); self::assertNull($sut->getMetaField('foo'));
self::assertInstanceOf(Collection::class, $sut->getTeams()); self::assertInstanceOf(Collection::class, $sut->getTeams());
self::assertEquals(0, $sut->getTeams()->count()); self::assertEquals(0, $sut->getTeams()->count());
self::assertTrue($sut->isVisibleAtDate(new \DateTime()));
} }
public function testSetterAndGetter() public function testSetterAndGetter()
@@ -230,4 +231,29 @@ class ProjectTest extends TestCase
self::assertEquals('DE-0123456789', $clone->getCustomer()->getVatId()); self::assertEquals('DE-0123456789', $clone->getCustomer()->getVatId());
self::assertEquals('prj-customer', $clone->getCustomer()->getName()); self::assertEquals('prj-customer', $clone->getCustomer()->getName());
} }
public function testIsVisibleAtDateTime()
{
$now = new \DateTime();
$customer = new Customer();
$sut = new Project();
$sut->setVisible(false);
self::assertFalse($sut->isVisibleAtDate($now));
$sut->setVisible(true);
self::assertTrue($sut->isVisibleAtDate($now));
$sut->setCustomer($customer);
self::assertTrue($sut->isVisibleAtDate($now));
$customer->setVisible(false);
self::assertFalse($sut->isVisibleAtDate($now));
$customer->setVisible(true);
self::assertTrue($sut->isVisibleAtDate($now));
$sut->setEnd(new \DateTime('+1 hour'));
self::assertTrue($sut->isVisibleAtDate($now));
$sut->setEnd($now);
self::assertTrue($sut->isVisibleAtDate($now));
$sut->setEnd(new \DateTime('-1 hour'));
self::assertFalse($sut->isVisibleAtDate($now));
}
} }