Completed
Pull Request — master (#362)
by Maxence
01:57
created

CircleCreation   A

Complexity

Total Complexity 3

Size/Duplication

Total Lines 52
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 5

Importance

Changes 0
Metric Value
wmc 3
lcom 1
cbo 5
dl 0
loc 52
rs 10
c 0
b 0
f 0

2 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 7 1
A manage() 0 13 2
1
<?php declare(strict_types=1);
2
3
4
/**
5
 * Circles - Bring cloud-users closer together.
6
 *
7
 * This file is licensed under the Affero General Public License version 3 or
8
 * later. See the COPYING file.
9
 *
10
 * @author Maxence Lange <[email protected]>
11
 * @copyright 2017
12
 * @license GNU AGPL version 3 or any later version
13
 *
14
 * This program is free software: you can redistribute it and/or modify
15
 * it under the terms of the GNU Affero General Public License as
16
 * published by the Free Software Foundation, either version 3 of the
17
 * License, or (at your option) any later version.
18
 *
19
 * This program is distributed in the hope that it will be useful,
20
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
21
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
22
 * GNU Affero General Public License for more details.
23
 *
24
 * You should have received a copy of the GNU Affero General Public License
25
 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
26
 *
27
 */
28
29
30
namespace OCA\Circles\GlobalScale;
31
32
33
use OCA\Circles\Db\CirclesRequest;
34
use OCA\Circles\Db\MembersRequest;
35
use OCA\Circles\Exceptions\CircleAlreadyExistsException;
36
use OCA\Circles\Exceptions\CircleTypeDisabledException;
37
use OCA\Circles\Exceptions\MemberAlreadyExistsException;
38
use OCA\Circles\Model\GlobalScale\GSEvent;
39
use OCA\Circles\Service\CirclesService;
40
use OCA\Circles\Service\EventsService;
41
42
43
/**
44
 * Class CircleCreation
45
 *
46
 * @package OCA\Circles\GlobalScale
47
 */
48
class CircleCreation implements IGlobalScaleEvent {
49
50
51
	/** @var CirclesRequest */
52
	private $circlesRequest;
53
54
	/** @var MembersRequest */
55
	private $membersRequest;
56
57
	/** @var EventsService */
58
	private $eventsService;
59
60
61
	/**
62
	 * CircleCreation constructor.
63
	 *
64
	 * @param CirclesRequest $circlesRequest
65
	 * @param MembersRequest $membersRequest
66
	 * @param EventsService $eventsService
67
	 */
68
	public function __construct(
69
		CirclesRequest $circlesRequest, MembersRequest $membersRequest, EventsService $eventsService
70
	) {
71
		$this->circlesRequest = $circlesRequest;
72
		$this->membersRequest = $membersRequest;
73
		$this->eventsService = $eventsService;
74
	}
75
76
77
	/**
78
	 * @param GSEvent $event
79
	 *
80
	 * @return bool
81
	 * @throws CircleAlreadyExistsException
82
	 * @throws CircleTypeDisabledException
83
	 * @throws MemberAlreadyExistsException
84
	 */
85
	public function manage(GSEvent $event): bool {
86
		if (!$event->hasCircle()) {
87
			return false;
88
		}
89
90
		$circle = $event->getCircle();
91
		$this->circlesRequest->createCircle($circle);
92
		$this->membersRequest->createMember($circle->getOwner());
93
94
		$this->eventsService->onCircleCreation($circle);
95
96
		return true;
97
	}
98
99
}
100
101