added filter for globalActivities in project collection (#3565)
This commit is contained in:
@@ -96,6 +96,7 @@ class ProjectController extends BaseApiController
|
|||||||
* @Rest\QueryParam(name="start", requirements=@Constraints\DateTime(format="Y-m-d\TH:i:s"), strict=true, nullable=true, description="Only projects that started before this date will be included. Allowed format: HTML5 (default: now, if end is also empty)")
|
* @Rest\QueryParam(name="start", requirements=@Constraints\DateTime(format="Y-m-d\TH:i:s"), strict=true, nullable=true, description="Only projects that started before this date will be included. Allowed format: HTML5 (default: now, if end is also empty)")
|
||||||
* @Rest\QueryParam(name="end", requirements=@Constraints\DateTime(format="Y-m-d\TH:i:s"), strict=true, nullable=true, description="Only projects that ended after this date will be included. Allowed format: HTML5 (default: now, if start is also empty)")
|
* @Rest\QueryParam(name="end", requirements=@Constraints\DateTime(format="Y-m-d\TH:i:s"), strict=true, nullable=true, description="Only projects that ended after this date will be included. Allowed format: HTML5 (default: now, if start is also empty)")
|
||||||
* @Rest\QueryParam(name="ignoreDates", requirements="1", strict=true, nullable=true, description="If set, start and end are completely ignored. Allowed values: 1 (default: off)")
|
* @Rest\QueryParam(name="ignoreDates", requirements="1", strict=true, nullable=true, description="If set, start and end are completely ignored. Allowed values: 1 (default: off)")
|
||||||
|
* @Rest\QueryParam(name="globalActivities", requirements="0|1", strict=true, nullable=true, description="If given, filters projects by their 'global activity' support. Allowed values: 1 (supports global activities) and 0 (without global activities) (default: all)")
|
||||||
* @Rest\QueryParam(name="order", requirements="ASC|DESC", strict=true, nullable=true, description="The result order. Allowed values: ASC, DESC (default: ASC)")
|
* @Rest\QueryParam(name="order", requirements="ASC|DESC", strict=true, nullable=true, description="The result order. Allowed values: ASC, DESC (default: ASC)")
|
||||||
* @Rest\QueryParam(name="orderBy", requirements="id|name|customer", strict=true, nullable=true, description="The field by which results will be ordered. Allowed values: id, name, customer (default: name)")
|
* @Rest\QueryParam(name="orderBy", requirements="id|name|customer", strict=true, nullable=true, description="The field by which results will be ordered. Allowed values: id, name, customer (default: name)")
|
||||||
* @Rest\QueryParam(name="term", description="Free search term")
|
* @Rest\QueryParam(name="term", description="Free search term")
|
||||||
@@ -134,6 +135,10 @@ class ProjectController extends BaseApiController
|
|||||||
$query->setVisibility($visible);
|
$query->setVisibility($visible);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (null !== ($globalActivities = $paramFetcher->get('globalActivities'))) {
|
||||||
|
$query->setGlobalActivities((bool) $globalActivities);
|
||||||
|
}
|
||||||
|
|
||||||
$ignoreDates = false;
|
$ignoreDates = false;
|
||||||
if (null !== $paramFetcher->get('ignoreDates')) {
|
if (null !== $paramFetcher->get('ignoreDates')) {
|
||||||
$ignoreDates = \intval($paramFetcher->get('ignoreDates')) === 1;
|
$ignoreDates = \intval($paramFetcher->get('ignoreDates')) === 1;
|
||||||
|
|||||||
@@ -367,6 +367,11 @@ class ProjectRepository extends EntityRepository
|
|||||||
->setParameter('customer', $query->getCustomers());
|
->setParameter('customer', $query->getCustomers());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ($query->getGlobalActivities() !== null) {
|
||||||
|
$qb->andWhere($qb->expr()->eq('p.globalActivities', ':globalActivities'))
|
||||||
|
->setParameter('globalActivities', $query->getGlobalActivities(), Types::BOOLEAN);
|
||||||
|
}
|
||||||
|
|
||||||
// this is far from being perfect, possible enhancements:
|
// this is far from being perfect, possible enhancements:
|
||||||
// there could also be a range selection to be able to select all projects that were active between from and to
|
// there could also be a range selection to be able to select all projects that were active between from and to
|
||||||
// begin = null and end = null
|
// begin = null and end = null
|
||||||
|
|||||||
@@ -34,6 +34,10 @@ class ProjectQuery extends BaseQuery implements VisibilityInterface
|
|||||||
* @var \DateTime|null
|
* @var \DateTime|null
|
||||||
*/
|
*/
|
||||||
private $projectEnd;
|
private $projectEnd;
|
||||||
|
/**
|
||||||
|
* @var null|bool
|
||||||
|
*/
|
||||||
|
private $globalActivities = null;
|
||||||
|
|
||||||
public function __construct()
|
public function __construct()
|
||||||
{
|
{
|
||||||
@@ -43,6 +47,7 @@ class ProjectQuery extends BaseQuery implements VisibilityInterface
|
|||||||
'projectStart' => null,
|
'projectStart' => null,
|
||||||
'projectEnd' => null,
|
'projectEnd' => null,
|
||||||
'visibility' => VisibilityInterface::SHOW_VISIBLE,
|
'visibility' => VisibilityInterface::SHOW_VISIBLE,
|
||||||
|
'globalActivities' => null,
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -126,4 +131,14 @@ class ProjectQuery extends BaseQuery implements VisibilityInterface
|
|||||||
|
|
||||||
return $this;
|
return $this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function getGlobalActivities(): ?bool
|
||||||
|
{
|
||||||
|
return $this->globalActivities;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function setGlobalActivities(?bool $globalActivities): void
|
||||||
|
{
|
||||||
|
$this->globalActivities = $globalActivities;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -31,6 +31,7 @@ class ProjectQueryTest extends BaseQueryTest
|
|||||||
|
|
||||||
self::assertNull($sut->getProjectStart());
|
self::assertNull($sut->getProjectStart());
|
||||||
self::assertNull($sut->getProjectEnd());
|
self::assertNull($sut->getProjectEnd());
|
||||||
|
self::assertNull($sut->getGlobalActivities());
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testSetter()
|
public function testSetter()
|
||||||
@@ -44,5 +45,11 @@ class ProjectQueryTest extends BaseQueryTest
|
|||||||
$end = new \DateTime('-1 day');
|
$end = new \DateTime('-1 day');
|
||||||
$sut->setProjectEnd($end);
|
$sut->setProjectEnd($end);
|
||||||
self::assertSame($end, $sut->getProjectEnd());
|
self::assertSame($end, $sut->getProjectEnd());
|
||||||
|
|
||||||
|
$sut->setGlobalActivities(false);
|
||||||
|
self::assertFalse($sut->getGlobalActivities());
|
||||||
|
|
||||||
|
$sut->setGlobalActivities(true);
|
||||||
|
self::assertTrue($sut->getGlobalActivities());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user