hide expired projects in team-projects widget (#2432)
This commit is contained in:
@@ -529,6 +529,21 @@ class Project implements EntityWithMetaFields
|
||||
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
|
||||
*/
|
||||
|
||||
@@ -46,12 +46,13 @@ class UserTeamProjects extends SimpleWidget implements AuthorizedWidget, UserWid
|
||||
/** @var User $user */
|
||||
$user = $options['user'];
|
||||
$projects = [];
|
||||
$now = new \DateTime('now', new \DateTimeZone($user->getTimezone()));
|
||||
|
||||
/** @var Team $team */
|
||||
foreach ($user->getTeams() as $team) {
|
||||
/** @var Project $project */
|
||||
foreach ($team->getProjects() as $project) {
|
||||
if (!$project->isVisible() || !$project->getCustomer()->isVisible()) {
|
||||
if (!$project->isVisibleAtDate($now)) {
|
||||
continue;
|
||||
}
|
||||
$projects[$project->getId()] = $project;
|
||||
|
||||
@@ -48,6 +48,7 @@ class ProjectTest extends TestCase
|
||||
self::assertNull($sut->getMetaField('foo'));
|
||||
self::assertInstanceOf(Collection::class, $sut->getTeams());
|
||||
self::assertEquals(0, $sut->getTeams()->count());
|
||||
self::assertTrue($sut->isVisibleAtDate(new \DateTime()));
|
||||
}
|
||||
|
||||
public function testSetterAndGetter()
|
||||
@@ -230,4 +231,29 @@ class ProjectTest extends TestCase
|
||||
self::assertEquals('DE-0123456789', $clone->getCustomer()->getVatId());
|
||||
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));
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user