Completed
Push — master ( 189bb6...0d32b3 )
by Matthew
03:08
created

AlertStatisticsEndpoint::readHistorySummary()   A

Complexity

Conditions 2
Paths 2

Size

Total Lines 12
Code Lines 6

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 1
Metric Value
c 1
b 0
f 1
dl 0
loc 12
rs 9.4286
cc 2
eloc 6
nc 2
nop 1
1
<?php
2
3
namespace Ps2alerts\Api\Controller\Statistics;
4
5
use League\Route\Http\JsonResponse as Response;
6
use Ps2alerts\Api\Controller\EndpointBaseController;
7
use Ps2alerts\Api\Loader\Statistics\AlertStatisticsLoader;
8
use Symfony\Component\HttpFoundation\Request;
9
10
class AlertStatisticsEndpoint extends EndpointBaseController
11
{
12
    /**
13
     * Construct
14
     *
15
     * @param \Ps2alerts\Api\Loader\Statistics\AlertStatisticsLoader $loader
16
     */
17
    public function __construct(AlertStatisticsLoader $loader)
18
    {
19
        $this->loader = $loader;
20
    }
21
22
    /**
23
     * Gets total alerts based on provided parameters
24
     *
25
     * @param  \Symfony\Component\HttpFoundation\Request $request
26
     *
27
     * @return \League\Route\Http\JsonResponse
28
     */
29
    public function readTotals(Request $request)
30
    {
31
        $post = $request->request->all();
32
33
        $this->getLogDriver()->addDebug(json_encode($post));
34
35
        $return = $this->loader->readTotals($post);
0 ignored issues
show
Bug introduced by
The method readTotals does only exist in Ps2alerts\Api\Loader\Sta...s\AlertStatisticsLoader, but not in Ps2alerts\Api\Loader\Ale...\PlayerStatisticsLoader.

It seems like the method you are trying to call exists only in some of the possible types.

Let’s take a look at an example:

class A
{
    public function foo() { }
}

class B extends A
{
    public function bar() { }
}

/**
 * @param A|B $x
 */
function someFunction($x)
{
    $x->foo(); // This call is fine as the method exists in A and B.
    $x->bar(); // This method only exists in B and might cause an error.
}

Available Fixes

  1. Add an additional type-check:

    /**
     * @param A|B $x
     */
    function someFunction($x)
    {
        $x->foo();
    
        if ($x instanceof B) {
            $x->bar();
        }
    }
    
  2. Only allow a single type to be passed if the variable comes from a parameter:

    function someFunction(B $x) { /** ... */ }
    
Loading history...
36
37
        if (empty($return)) {
38
            return new Response\NoContent();
39
        }
40
41
        return new Response\Ok($return);
42
    }
43
44
    /**
45
     * Retrieves the zones totals
46
     *
47
     * @param  \Symfony\Component\HttpFoundation\Request $request
48
     *
49
     * @return \League\Route\Http\JsonResponse
50
     */
51
    public function readZoneTotals(Request $request)
0 ignored issues
show
Unused Code introduced by
The parameter $request is not used and could be removed.

This check looks from parameters that have been defined for a function or method, but which are not used in the method body.

Loading history...
52
    {
53
        $return = $this->loader->readZoneTotals();
0 ignored issues
show
Bug introduced by
The method readZoneTotals does only exist in Ps2alerts\Api\Loader\Sta...s\AlertStatisticsLoader, but not in Ps2alerts\Api\Loader\Ale...\PlayerStatisticsLoader.

It seems like the method you are trying to call exists only in some of the possible types.

Let’s take a look at an example:

class A
{
    public function foo() { }
}

class B extends A
{
    public function bar() { }
}

/**
 * @param A|B $x
 */
function someFunction($x)
{
    $x->foo(); // This call is fine as the method exists in A and B.
    $x->bar(); // This method only exists in B and might cause an error.
}

Available Fixes

  1. Add an additional type-check:

    /**
     * @param A|B $x
     */
    function someFunction($x)
    {
        $x->foo();
    
        if ($x instanceof B) {
            $x->bar();
        }
    }
    
  2. Only allow a single type to be passed if the variable comes from a parameter:

    function someFunction(B $x) { /** ... */ }
    
Loading history...
54
55
        if (empty($return)) {
56
            return new Response\NoContent();
57
        }
58
59
        return new Response\Ok($return);
60
    }
61
62
    /**
63
     * Retrieves the victory summary (daily or monthly)
64
     *
65
     * @param  \Symfony\Component\HttpFoundation\Request $request
66
     *
67
     * @return \League\Route\Http\JsonResponse
68
     */
69
    public function readHistorySummary(Request $request)
70
    {
71
        $post = $request->request->all();
72
73
        $return = $this->loader->readHistorySummary($post);
0 ignored issues
show
Bug introduced by
The method readHistorySummary does only exist in Ps2alerts\Api\Loader\Sta...s\AlertStatisticsLoader, but not in Ps2alerts\Api\Loader\Ale...\PlayerStatisticsLoader.

It seems like the method you are trying to call exists only in some of the possible types.

Let’s take a look at an example:

class A
{
    public function foo() { }
}

class B extends A
{
    public function bar() { }
}

/**
 * @param A|B $x
 */
function someFunction($x)
{
    $x->foo(); // This call is fine as the method exists in A and B.
    $x->bar(); // This method only exists in B and might cause an error.
}

Available Fixes

  1. Add an additional type-check:

    /**
     * @param A|B $x
     */
    function someFunction($x)
    {
        $x->foo();
    
        if ($x instanceof B) {
            $x->bar();
        }
    }
    
  2. Only allow a single type to be passed if the variable comes from a parameter:

    function someFunction(B $x) { /** ... */ }
    
Loading history...
74
75
        if (empty($return)) {
76
            return new Response\NoContent();
77
        }
78
79
        return new Response\Ok($return);
80
    }
81
}
82