adeed more order fields

[+|-] location ( location.name)
[+|-] track ( track.title)

Change-Id: I1a4e507b56d958c36327aa5fc8584705ac03bd17
This commit is contained in:
smarcet 2019-05-14 17:10:47 -03:00
parent 87e99197ed
commit 6b528c34a4
3 changed files with 42 additions and 7 deletions

View File

@ -36,6 +36,7 @@ abstract class RetrieveSummitEventsStrategy
$page = intval(Input::get('page')); $page = intval(Input::get('page'));
$per_page = intval(Input::get('per_page')); $per_page = intval(Input::get('per_page'));
} }
return [$page, $per_page]; return [$page, $per_page];
} }
@ -94,6 +95,7 @@ abstract class RetrieveSummitEventsStrategy
'end_date', 'end_date',
'id', 'id',
'created', 'created',
'track',
]); ]);
} }
return $order; return $order;

View File

@ -13,7 +13,6 @@
**/ **/
use App\Models\Foundation\Main\IGroup; use App\Models\Foundation\Main\IGroup;
use Doctrine\ORM\Tools\Pagination\Paginator; use Doctrine\ORM\Tools\Pagination\Paginator;
use models\main\Group;
use models\summit\ISummitEventRepository; use models\summit\ISummitEventRepository;
use models\summit\SummitEvent; use models\summit\SummitEvent;
use App\Repositories\SilverStripeDoctrineRepository; use App\Repositories\SilverStripeDoctrineRepository;
@ -28,7 +27,6 @@ use utils\PagingResponse;
use Doctrine\ORM\Query\Expr\Join; use Doctrine\ORM\Query\Expr\Join;
use utils\DoctrineLeftJoinFilterMapping; use utils\DoctrineLeftJoinFilterMapping;
use models\summit\SummitGroupEvent; use models\summit\SummitGroupEvent;
use models\summit\Presentation;
/** /**
* Class DoctrineSummitEventRepository * Class DoctrineSummitEventRepository
* @package App\Repositories\Summit * @package App\Repositories\Summit
@ -175,6 +173,8 @@ final class DoctrineSummitEventRepository
'start_date' => 'e.start_date', 'start_date' => 'e.start_date',
'end_date' => 'e.end_date', 'end_date' => 'e.end_date',
'created' => 'e.created', 'created' => 'e.created',
'track' => 'cc.title',
'location' => 'l.name',
]; ];
} }
@ -195,7 +195,10 @@ final class DoctrineSummitEventRepository
$query = $this->getEntityManager()->createQueryBuilder() $query = $this->getEntityManager()->createQueryBuilder()
->select("e") ->select("e")
->from($class, "e")->leftJoin("e.location", 'l', Join::LEFT_JOIN); ->from($class, "e")
->leftJoin("e.location", 'l', Join::LEFT_JOIN)
->leftJoin("e.category", 'cc', Join::LEFT_JOIN)
;
if(!is_null($filter)){ if(!is_null($filter)){
$filter->apply2Query($query, $this->getFilterMappings()); $filter->apply2Query($query, $this->getFilterMappings());
@ -210,8 +213,6 @@ final class DoctrineSummitEventRepository
} }
if($class == \models\summit\Presentation::class) { if($class == \models\summit\Presentation::class) {
$query = $query->innerJoin("e.category", "cc", Join::WITH);
$query = $query->leftJoin("e.location", "loc", Join::WITH);
$query = $query->leftJoin("e.speakers", "sp", Join::WITH); $query = $query->leftJoin("e.speakers", "sp", Join::WITH);
$query = $query->leftJoin('e.selected_presentations', "ssp", Join::LEFT_JOIN); $query = $query->leftJoin('e.selected_presentations', "ssp", Join::LEFT_JOIN);
$query = $query->leftJoin('ssp.list', "sspl", Join::LEFT_JOIN); $query = $query->leftJoin('ssp.list', "sspl", Join::LEFT_JOIN);
@ -291,6 +292,7 @@ final class DoctrineSummitEventRepository
->select("e") ->select("e")
->from($class, "e") ->from($class, "e")
->leftJoin("e.location", 'l', Join::LEFT_JOIN) ->leftJoin("e.location", 'l', Join::LEFT_JOIN)
->leftJoin("e.category", 'cc', Join::LEFT_JOIN)
->where("l.id is null"); ->where("l.id is null");
if(!is_null($filter)){ if(!is_null($filter)){
@ -306,7 +308,6 @@ final class DoctrineSummitEventRepository
} }
if($class == \models\summit\Presentation::class) { if($class == \models\summit\Presentation::class) {
$query = $query->innerJoin("e.category", "cc", Join::WITH);
$query = $query->leftJoin("e.speakers", "sp", Join::WITH); $query = $query->leftJoin("e.speakers", "sp", Join::WITH);
$query = $query->leftJoin('e.selected_presentations', "ssp", Join::LEFT_JOIN); $query = $query->leftJoin('e.selected_presentations', "ssp", Join::LEFT_JOIN);
$query = $query->leftJoin('ssp.list', "sspl", Join::LEFT_JOIN); $query = $query->leftJoin('ssp.list', "sspl", Join::LEFT_JOIN);
@ -315,7 +316,6 @@ final class DoctrineSummitEventRepository
$query = $query->leftJoin('sp.registration_request', "sprr", Join::LEFT_JOIN); $query = $query->leftJoin('sp.registration_request', "sprr", Join::LEFT_JOIN);
} }
$can_view_private_events = self::isCurrentMemberOnGroup(IGroup::SummitAdministrators); $can_view_private_events = self::isCurrentMemberOnGroup(IGroup::SummitAdministrators);
if(!$can_view_private_events){ if(!$can_view_private_events){

View File

@ -887,6 +887,39 @@ final class OAuth2SummitEventsApiTest extends ProtectedApiTest
$this->assertTrue(!is_null($events)); $this->assertTrue(!is_null($events));
} }
public function testGetUnpublishedEventBySummitOrderByTrack($summit_id=26)
{
$params = [
'id' => $summit_id,
'order' => '+track',
'expand' => 'speakers',
];
$headers = [
"HTTP_Authorization" => " Bearer " . $this->access_token,
"CONTENT_TYPE" => "application/json"
];
$response = $this->action
(
"GET",
"OAuth2SummitEventsApiController@getUnpublishedEvents",
$params,
[],
[],
[],
$headers
);
$content = $response->getContent();
$this->assertResponseStatus(200);
$events = json_decode($content);
$this->assertTrue(!is_null($events));
}
public function testGetAllScheduledEventsUsingOrder() public function testGetAllScheduledEventsUsingOrder()
{ {