Completed
Push — feature/ra-location-api ( fc399d...3ac647 )
by A.
04:35
created

RaLocationController::getAction()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 9
Code Lines 5

Duplication

Lines 0
Ratio 0 %

Importance

Changes 2
Bugs 0 Features 2
Metric Value
c 2
b 0
f 2
dl 0
loc 9
rs 9.6666
cc 1
eloc 5
nc 1
nop 1
1
<?php
2
3
/**
4
 * Copyright 2016 SURFnet B.V.
5
 *
6
 * Licensed under the Apache License, Version 2.0 (the "License");
7
 * you may not use this file except in compliance with the License.
8
 * You may obtain a copy of the License at
9
 *
10
 *     http://www.apache.org/licenses/LICENSE-2.0
11
 *
12
 * Unless required by applicable law or agreed to in writing, software
13
 * distributed under the License is distributed on an "AS IS" BASIS,
14
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
 * See the License for the specific language governing permissions and
16
 * limitations under the License.
17
 */
18
19
namespace Surfnet\StepupMiddleware\ApiBundle\Controller;
20
21
use Surfnet\Stepup\Configuration\Value\Institution;
22
use Surfnet\Stepup\Configuration\Value\RaLocationId;
23
use Surfnet\StepupMiddleware\ApiBundle\Configuration\Query\RaLocationQuery;
24
use Surfnet\StepupMiddleware\ApiBundle\Configuration\Service\RaLocationService;
25
use Surfnet\StepupMiddleware\ApiBundle\Response\JsonCollectionResponse;
26
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
27
use Symfony\Component\HttpFoundation\JsonResponse;
28
use Symfony\Component\HttpFoundation\Request;
29
30
final class RaLocationController extends Controller
31
{
32
    public function searchAction(Request $request, Institution $institution)
33
    {
34
        $this->denyAccessUnlessGranted(['ROLE_RA', 'ROLE_SS']);
35
36
        $query                 = new RaLocationQuery();
37
        $query->institution    = $institution;
38
        $query->orderBy        = $request->get('orderBy', $query->orderBy);
39
        $query->orderDirection = $request->get('orderDirection', $query->orderDirection);
40
41
        $raLocations = $this->getRaLocationService()->search($query);
42
        $count       = count($raLocations);
43
44
        return new JsonCollectionResponse($count, 1, $count, $raLocations);
0 ignored issues
show
Bug introduced by
It seems like $raLocations defined by $this->getRaLocationService()->search($query) on line 41 can also be of type null; however, Surfnet\StepupMiddleware...Response::__construct() does only seem to accept array, maybe add an additional type check?

If a method or function can return multiple different values and unless you are sure that you only can receive a single value in this context, we recommend to add an additional type check:

/**
 * @return array|string
 */
function returnsDifferentValues($x) {
    if ($x) {
        return 'foo';
    }

    return array();
}

$x = returnsDifferentValues($y);
if (is_array($x)) {
    // $x is an array.
}

If this a common case that PHP Analyzer should handle natively, please let us know by opening an issue.

Loading history...
45
    }
46
47
    public function getAction(Request $request)
48
    {
49
        $this->denyAccessUnlessGranted(['ROLE_RA', 'ROLE_SS']);
50
51
        $raLocationId = new RaLocationId($request->get('raLocationId'));
52
        $raLocation   = $this->getRaLocationService()->findByRaLocationId($raLocationId);
53
54
        return new JsonResponse($raLocation);
55
    }
56
57
    /**
58
     * @return RaLocationService
59
     */
60
    private function getRaLocationService()
61
    {
62
        return $this->container->get('surfnet_stepup_middleware_api.service.ra_location');
63
    }
64
}
65