Completed
Push — master ( 841b8f...21824c )
by Sergey
03:37
created

Api::getOrganizationByName()   A

Complexity

Conditions 3
Paths 3

Size

Total Lines 12
Code Lines 6

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
c 1
b 0
f 0
dl 0
loc 12
rs 9.4285
cc 3
eloc 6
nc 3
nop 1
1
<?php
2
3
namespace seregazhuk\Favro\Api;
4
5
use seregazhuk\Favro\Api\Endpoints\Cards;
6
use seregazhuk\Favro\Api\Endpoints\Tasks;
7
use seregazhuk\Favro\Api\Endpoints\Users;
8
use seregazhuk\Favro\Api\Endpoints\Columns;
9
use seregazhuk\Favro\Api\Endpoints\Widgets;
10
use seregazhuk\Favro\Api\Endpoints\Endpoint;
11
use seregazhuk\Favro\Api\Endpoints\Collections;
12
use seregazhuk\Favro\Api\Endpoints\Organizations;
13
use seregazhuk\Favro\Api\Endpoints\EndpointsContainer;
14
15
/**
16
 * Class Api
17
 *
18
 * @property Organizations $organizations
19
 * @property Users $users
20
 * @property Collections $collections
21
 * @property Widgets $widgets
22
 * @property Columns $columns
23
 * @property Cards $cards
24
 * @property Tasks $tasks
25
 */
26
class Api
27
{
28
    /**
29
     * @var EndpointsContainer
30
     */
31
    protected $endpointsContainer;
32
33
    /**
34
     * @var string
35
     */
36
    protected $organizationId;
37
38
    public function __construct(EndpointsContainer $endpointsContainer)
39
    {
40
        $this->endpointsContainer = $endpointsContainer;
41
    }
42
43
    /**
44
     * Magic method to access different endpoints.
45
     *
46
     * @param string $endpoint
47
     *
48
     * @return Endpoint
49
     */
50
    public function __get($endpoint)
51
    {
52
        $endpoint = $this->endpointsContainer->resolve($endpoint);
53
54
        if (method_exists($endpoint, 'setOrganizationId')) {
55
            $endpoint->setOrganizationId($this->organizationId);
56
        }
57
58
        return $endpoint;
59
    }
60
61
    /**
62
     * @param $organizationName
63
     * @return $this
64
     */
65
    public function setOrganization($organizationName)
66
    {
67
        if($organization = $this->getOrganizationByName($organizationName)) {
68
            $this->setOrganizationId($organization['organizationId']);
69
        }
70
71
        return $this;
72
    }
73
74
    /**
75
     * @param int $organizationId
76
     * @return $this
77
     */
78
    public function setOrganizationId($organizationId)
79
    {
80
        $this->organizationId = $organizationId;
0 ignored issues
show
Documentation Bug introduced by
The property $organizationId was declared of type string, but $organizationId is of type integer. Maybe add a type cast?

This check looks for assignments to scalar types that may be of the wrong type.

To ensure the code behaves as expected, it may be a good idea to add an explicit type cast.

$answer = 42;

$correct = false;

$correct = (bool) $answer;
Loading history...
81
82
        return $this;
83
    }
84
85
86
    /**
87
     * @return string
88
     */
89
    public function getOrganizationId()
90
    {
91
        return $this->organizationId;
92
    }
93
94
    /**
95
     * @param $organization
96
     * @return bool|array
97
     */
98
    protected function getOrganizationByName($organization)
99
    {
100
        $organizations = $this->organizations->getAll();
101
102
        foreach ($organizations['entities'] as $entity) {
103
            if ($entity['name'] == $organization) {
104
                return $organization;
105
            }
106
        }
107
108
        return false;
109
    }
110
}