Completed
Push — master ( 6da1d6...e8f94b )
by Alexandr
06:12
created

ErrorContainerTrait::getErrorsArray()   D

Complexity

Conditions 10
Paths 5

Size

Total Lines 31
Code Lines 21

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 18
CRAP Score 10.0145

Importance

Changes 0
Metric Value
dl 0
loc 31
ccs 18
cts 19
cp 0.9474
rs 4.8196
c 0
b 0
f 0
cc 10
eloc 21
nc 5
nop 1
crap 10.0145

How to fix   Complexity   

Long Method

Small methods make your code easier to understand, in particular if combined with a good name. Besides, if your method is small, finding a good name is usually much easier.

For example, if you find yourself adding comments to a method's body, this is usually a good sign to extract the commented part to a new method, and use the comment as a starting point when coming up with a good name for this new method.

Commonly applied refactorings include:

1
<?php
2
/**
3
 * Date: 01.12.15
4
 *
5
 * @author Portey Vasil <[email protected]>
6
 */
7
8
namespace Youshido\GraphQL\Validator\ErrorContainer;
9
10
11
use Youshido\GraphQL\Exception\Interfaces\DatableExceptionInterface;
12
use Youshido\GraphQL\Exception\Interfaces\LocationableExceptionInterface;
13
14
trait ErrorContainerTrait
15
{
16
17
    /** @var \Exception[] */
18
    protected $errors = [];
19
20 42
    public function addError(\Exception $exception)
21
    {
22 42
        $this->errors[] = $exception;
23
24 42
        return $this;
25
    }
26
27 90
    public function hasErrors()
28
    {
29 90
        return !empty($this->errors);
30
    }
31
32 1
    public function getErrors()
33
    {
34 1
        return $this->errors;
35
    }
36
37 1
    public function mergeErrors(ErrorContainerInterface $errorContainer)
38
    {
39 1
        if ($errorContainer->hasErrors()) {
40 1
            foreach ($errorContainer->getErrors() as $error) {
41 1
                $this->addError($error);
42
            }
43
        }
44
45 1
        return $this;
46
    }
47
48 42
    public function getErrorsArray($inGraphQLStyle = true)
49
    {
50 42
        $errors = [];
51
52 42
        foreach ($this->errors as $error) {
53 42
            if ($inGraphQLStyle) {
54 21
                if ($error instanceof DatableExceptionInterface) {
55 1
                    $errors[] = array_merge(
56 1
                        ['message' => $error->getMessage()],
57 1
                        $error->getData() ?: [],
58 1
                        $error->getCode() ? ['code' => $error->getCode()] : []
59
                    );
60
                } elseif ($error instanceof LocationableExceptionInterface) {
61 18
                    $errors[] = array_merge(
62 18
                        ['message' => $error->getMessage()],
63 18
                        $error->getLocation() ? ['locations' => [$error->getLocation()->toArray()]] : [],
64 18
                        $error->getCode() ? ['code' => $error->getCode()] : []
65
                    );
66
                } else {
67 4
                    $errors[] = array_merge(
68 4
                        ['message' => $error->getMessage()],
69 21
                        $error->getCode() ? ['code' => $error->getCode()] : []
70
                    );
71
                }
72
            } else {
73 42
                $errors[] = $error->getMessage();
74
            }
75
        }
76
77 42
        return $errors;
78
    }
79
80 115
    public function clearErrors()
81
    {
82 115
        $this->errors = [];
83
84 115
        return $this;
85
    }
86
87
}