diff --git a/app/Http/Controllers/Apis/Protected/Summit/Strategies/events/RetrieveSummitEventsStrategy.php b/app/Http/Controllers/Apis/Protected/Summit/Strategies/events/RetrieveSummitEventsStrategy.php index 2d38408a..1fd23be3 100644 --- a/app/Http/Controllers/Apis/Protected/Summit/Strategies/events/RetrieveSummitEventsStrategy.php +++ b/app/Http/Controllers/Apis/Protected/Summit/Strategies/events/RetrieveSummitEventsStrategy.php @@ -36,6 +36,7 @@ abstract class RetrieveSummitEventsStrategy $page = intval(Input::get('page')); $per_page = intval(Input::get('per_page')); } + return [$page, $per_page]; } @@ -94,6 +95,7 @@ abstract class RetrieveSummitEventsStrategy 'end_date', 'id', 'created', + 'track', ]); } return $order; diff --git a/app/Repositories/Summit/DoctrineSummitEventRepository.php b/app/Repositories/Summit/DoctrineSummitEventRepository.php index 5a4570b8..365ce67d 100644 --- a/app/Repositories/Summit/DoctrineSummitEventRepository.php +++ b/app/Repositories/Summit/DoctrineSummitEventRepository.php @@ -13,7 +13,6 @@ **/ use App\Models\Foundation\Main\IGroup; use Doctrine\ORM\Tools\Pagination\Paginator; -use models\main\Group; use models\summit\ISummitEventRepository; use models\summit\SummitEvent; use App\Repositories\SilverStripeDoctrineRepository; @@ -28,7 +27,6 @@ use utils\PagingResponse; use Doctrine\ORM\Query\Expr\Join; use utils\DoctrineLeftJoinFilterMapping; use models\summit\SummitGroupEvent; -use models\summit\Presentation; /** * Class DoctrineSummitEventRepository * @package App\Repositories\Summit @@ -175,6 +173,8 @@ final class DoctrineSummitEventRepository 'start_date' => 'e.start_date', 'end_date' => 'e.end_date', 'created' => 'e.created', + 'track' => 'cc.title', + 'location' => 'l.name', ]; } @@ -195,7 +195,10 @@ final class DoctrineSummitEventRepository $query = $this->getEntityManager()->createQueryBuilder() ->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)){ $filter->apply2Query($query, $this->getFilterMappings()); @@ -210,8 +213,6 @@ final class DoctrineSummitEventRepository } 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.selected_presentations', "ssp", Join::LEFT_JOIN); $query = $query->leftJoin('ssp.list', "sspl", Join::LEFT_JOIN); @@ -291,6 +292,7 @@ final class DoctrineSummitEventRepository ->select("e") ->from($class, "e") ->leftJoin("e.location", 'l', Join::LEFT_JOIN) + ->leftJoin("e.category", 'cc', Join::LEFT_JOIN) ->where("l.id is null"); if(!is_null($filter)){ @@ -306,7 +308,6 @@ final class DoctrineSummitEventRepository } 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.selected_presentations', "ssp", 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); } - $can_view_private_events = self::isCurrentMemberOnGroup(IGroup::SummitAdministrators); if(!$can_view_private_events){ diff --git a/tests/OAuth2SummitEventsApiTest.php b/tests/OAuth2SummitEventsApiTest.php index 2fdf1a52..0508b39a 100644 --- a/tests/OAuth2SummitEventsApiTest.php +++ b/tests/OAuth2SummitEventsApiTest.php @@ -887,6 +887,39 @@ final class OAuth2SummitEventsApiTest extends ProtectedApiTest $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() {