Completed
Push — master ( 0c2aa0...b1edbb )
by Michiel
03:00 queued 10s
created

RaLocationController::searchAction()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 14

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 14
rs 9.7998
c 0
b 0
f 0
cc 1
nc 1
nop 2
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
    /**
33
     * @return RaLocationService
34
     */
35
    private $raLocationService;
36
37
    public function __construct(RaLocationService $raLocationService)
38
    {
39
        $this->raLocationService = $raLocationService;
40
    }
41
42
    public function searchAction(Request $request, Institution $institution)
43
    {
44
        $this->denyAccessUnlessGranted(['ROLE_RA', 'ROLE_SS']);
45
46
        $query                 = new RaLocationQuery();
47
        $query->institution    = $institution;
48
        $query->orderBy        = $request->get('orderBy', $query->orderBy);
49
        $query->orderDirection = $request->get('orderDirection', $query->orderDirection);
50
51
        $raLocations = $this->raLocationService->search($query);
52
        $count       = count($raLocations);
53
54
        return new JsonCollectionResponse($count, 1, $count, $raLocations);
0 ignored issues
show
Bug introduced by
It seems like $raLocations defined by $this->raLocationService->search($query) on line 51 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...
55
    }
56
57
    public function getAction(Request $request)
58
    {
59
        $this->denyAccessUnlessGranted(['ROLE_RA', 'ROLE_SS']);
60
61
        $raLocationId = new RaLocationId($request->get('raLocationId'));
62
        $raLocation   = $this->raLocationService->findByRaLocationId($raLocationId);
63
64
        return new JsonResponse($raLocation);
65
    }
66
}
67