Completed
Push — master ( c20ba1...70ca3b )
by Mario
03:39
created

ProjectService::deleteMultipleProjects()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 3
Code Lines 1

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 0
CRAP Score 2

Importance

Changes 1
Bugs 0 Features 0
Metric Value
c 1
b 0
f 0
dl 0
loc 3
ccs 0
cts 2
cp 0
rs 10
cc 1
eloc 1
nc 1
nop 1
crap 2
1
<?php
2
3
namespace Marek\Toggable\Service\Project;
4
5
use InvalidArgumentException;
6
use Marek\Toggable\API\Http\Request\Project\CreateProject;
7
use Marek\Toggable\API\Http\Request\Project\DeleteProject;
8
use Marek\Toggable\API\Http\Request\Project\GetProject;
9
use Marek\Toggable\API\Http\Request\Project\UpdateProject;
10
use Marek\Toggable\API\Http\Response\Project\Project as ProjectResponse;
11
use Marek\Toggable\API\Toggl\Values\Project\Project;
12
use Marek\Toggable\Service\AbstractService;
13
14
/**
15
 * Class ProjectService
16
 * @package Marek\Toggable\Service\Project
17
 */
18
class ProjectService extends AbstractService implements \Marek\Toggable\API\Toggl\ProjectServiceInterface
19
{
20
    /**
21
     * @inheritDoc
22
     */
23 2
    public function getProjectData($projectId)
24
    {
25 2
        $request = new GetProject(
26
            array(
27 2
                'projectId' => $this->validate($projectId),
28
            )
29 1
        );
30
31 1
        return $this->delegateHydrateAndReturnResponse($request);
32
    }
33
34
    /**
35
     * @inheritDoc
36
     */
37 1
    public function createProject(\Marek\Toggable\API\Toggl\Values\Project\Project $project)
38
    {
39 1
        $request = new CreateProject(
40
            array(
41 1
                'data' => $this->extractDataFromObject($project),
42
            )
43 1
        );
44
45 1
        return $this->delegateHydrateAndReturnResponse($request);
46
    }
47
48
    /**
49
     * @inheritDoc
50
     */
51 1
    public function updateProject(\Marek\Toggable\API\Toggl\Values\Project\Project $project)
52
    {
53 1
        $request = new UpdateProject(
54
            array(
55 1
                'data' => $this->extractDataFromObject($project),
56
            )
57 1
        );
58
59 1
        return $this->delegateHydrateAndReturnResponse($request);
60
    }
61
62
    /**
63
     * @inheritDoc
64
     */
65 2
    public function deleteProject($projectId)
66
    {
67 2
        $request = new DeleteProject(
68
            array(
69 2
                'projectId' => $this->validate($projectId),
70
            )
71 1
        );
72
73 1
        return $this->delegate($request);
74
    }
75
76
    /**
77
     * @inheritDoc
78
     */
79
    public function getProjectUsers($projectId) {
80
        // TODO: Implement getProjectUsers() method.
81
    }
82
83
    /**
84
     * @inheritDoc
85
     */
86
    public function getProjectTasks($projectId) {
87
        // TODO: Implement getProjectTasks() method.
88
    }
89
90
    /**
91
     * @inheritDoc
92
     */
93
    public function deleteMultipleProjects(array $projectIds) {
94
        // TODO: Implement deleteMultipleProjects() method.
95
    }
96
97
    /**
98
     * @inheritDoc
99
     */
100 3
    protected function delegateHydrateAndReturnResponse(\Marek\Toggable\API\Http\Request\RequestInterface $request)
101
    {
102 3
        $response = $this->delegate($request);
103
104 3
        return new ProjectResponse(
105
            array(
106 3
                'project' => $this->hydrateDataFromArrayToObject($response, new Project()),
107
            )
108 3
        );
109
    }
110
}
111