Fixed track chairs filter condition on get presentations

Change-Id: I53537a4a3e42665e6592d97c3d5d28646e6810ac
Signed-off-by: smarcet <smarcet@gmail.com>
This commit is contained in:
smarcet 2021-04-08 20:55:06 -03:00
parent 263840990a
commit 51153b726f
3 changed files with 29 additions and 5 deletions

View File

@ -402,9 +402,10 @@ final class OAuth2SummitSelectionPlansApiController extends OAuth2ProtectedContr
if(!is_null($current_member)) {
$filter->addFilterCondition(FilterElement::makeEqual('current_member_id', $current_member->getId()));
}
// filter by tracks
$track_id_filters = $filter->getFilter("track_id");
if(!is_null($track_id_filters)){
if(!is_null($track_id_filters) && count($track_id_filters) > 0){
// if exists , check if we have persmissions
foreach ($track_id_filters as $filterElement){
$value = $filterElement->getValue();
if(!is_array($value)){
@ -420,6 +421,13 @@ final class OAuth2SummitSelectionPlansApiController extends OAuth2ProtectedContr
}
}
}
else {
// if not , only filter by track allowed
$track_chair = $summit->getTrackChairByMember($current_member);
if(!is_null($track_chair)){
$filter->addFilterCondition(FilterElement::makeEqual("track_id", $track_chair->getCategoriesIds(), "AND"));
}
}
}
return $filter;
},
@ -548,9 +556,10 @@ final class OAuth2SummitSelectionPlansApiController extends OAuth2ProtectedContr
$filter->addFilterCondition(FilterElement::makeEqual('current_member_id', $current_member->getId()));
}
// filter by tracks
$track_id_filters = $filter->getFilter("track_id");
if(!is_null($track_id_filters)){
if(!is_null($track_id_filters) && count($track_id_filters) > 0){
// if exists , check if we have persmissions
foreach ($track_id_filters as $filterElement){
$value = $filterElement->getValue();
if(!is_array($value)){
@ -566,6 +575,13 @@ final class OAuth2SummitSelectionPlansApiController extends OAuth2ProtectedContr
}
}
}
else {
// if not , only filter by track allowed
$track_chair = $summit->getTrackChairByMember($current_member);
if(!is_null($track_chair)){
$filter->addFilterCondition(FilterElement::makeEqual("track_id", $track_chair->getCategoriesIds(), "AND"));
}
}
}
return $filter;
},

View File

@ -150,4 +150,12 @@ class SummitTrackChair extends SilverstripeBaseModel
public function clearMember():void{
$this->member = null;
}
public function getCategoriesIds():array{
$res = [];
foreach ($this->categories as $c){
$res[] = $c->getId();
}
return $res;
}
}

View File

@ -909,7 +909,7 @@ final class OAuth2SelectionPlansApiTest extends ProtectedApiTest
'filter' => [
'status==Received',
'is_chair_visible==1',
sprintf('track_id==%s', self::$defaultTrack->getId()),
// sprintf('track_id==%s', self::$defaultTrack->getId()),
],
];