hide expired projects in team-projects widget (#2432)
This commit is contained in:
@@ -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
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
@@ -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));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user