/** * @param int $pageNumber * @param int $pageSize * @param BlackoutFilter $filter * @param UserSession $user * @return BlackoutItemView[]|PageableData */ public function LoadFiltered($pageNumber, $pageSize, $filter, $user) { $blackoutFilter = $filter->GetFilter(); if (!$user->IsAdmin) { $groups = $this->userRepository->LoadGroups($user->UserId, array(RoleLevel::RESOURCE_ADMIN, RoleLevel::SCHEDULE_ADMIN)); $groupIds = array(); foreach ($groups as $group) { $groupIds[] = $group->GroupId; } $adminFilter = new SqlFilterIn(new SqlFilterColumn('r', ColumnNames::RESOURCE_ADMIN_GROUP_ID), $groupIds); $adminFilter->_Or(new SqlFilterIn(new SqlFilterColumn(TableNames::SCHEDULES, ColumnNames::SCHEDULE_ADMIN_GROUP_ID), $groupIds)); $blackoutFilter->_And($adminFilter); } return $this->reservationViewRepository->GetBlackoutList($pageNumber, $pageSize, null, null, $blackoutFilter); }