Completed
Pull Request — master (#551)
by Maxence
01:55
created

MemberRequest::delete()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 10

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 10
rs 9.9332
c 0
b 0
f 0
cc 1
nc 1
nop 1
1
<?php
2
3
declare(strict_types=1);
4
5
6
/**
7
 * Circles - Bring cloud-users closer together.
8
 *
9
 * This file is licensed under the Affero General Public License version 3 or
10
 * later. See the COPYING file.
11
 *
12
 * @author Maxence Lange <[email protected]>
13
 * @copyright 2021
14
 * @license GNU AGPL version 3 or any later version
15
 *
16
 * This program is free software: you can redistribute it and/or modify
17
 * it under the terms of the GNU Affero General Public License as
18
 * published by the Free Software Foundation, either version 3 of the
19
 * License, or (at your option) any later version.
20
 *
21
 * This program is distributed in the hope that it will be useful,
22
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
23
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
24
 * GNU Affero General Public License for more details.
25
 *
26
 * You should have received a copy of the GNU Affero General Public License
27
 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
28
 *
29
 */
30
31
32
namespace OCA\Circles\Db;
33
34
35
use OCA\Circles\Exceptions\InvalidIdException;
36
use OCA\Circles\Exceptions\MemberNotFoundException;
37
use OCA\Circles\Model\Circle;
38
use OCA\Circles\Model\FederatedUser;
39
use OCA\Circles\Model\Member;
40
41
42
/**
43
 * Class MemberRequest
44
 *
45
 * @package OCA\Circles\Db
46
 */
47
class MemberRequest extends MemberRequestBuilder {
48
49
50
	/**
51
	 * @param Member $member
52
	 *
53
	 * @throws InvalidIdException
54
	 */
55
	public function save(Member $member): void {
56
		// TODO: check singleId is not empty
57
//		$this->confirmValidIds([$member->getCircleId(), $member->getSingleId(), $member->getId()]);
58
		$this->confirmValidIds([$member->getCircleId(), $member->getId()]);
59
60
		$qb = $this->getMemberInsertSql();
61
		$qb->setValue('circle_id', $qb->createNamedParameter($member->getCircleId()))
62
		   ->setValue('single_id', $qb->createNamedParameter($member->getSingleId()))
63
		   ->setValue('member_id', $qb->createNamedParameter($member->getId()))
64
		   ->setValue('user_id', $qb->createNamedParameter($member->getUserId()))
65
		   ->setValue('user_type', $qb->createNamedParameter($member->getUserType()))
66
		   ->setValue('cached_name', $qb->createNamedParameter($member->getCachedName()))
67
		   ->setValue('cached_update', $qb->createNamedParameter($this->timezoneService->getUTCDate()))
68
		   ->setValue('instance', $qb->createNamedParameter($qb->getInstance($member)))
69
		   ->setValue('level', $qb->createNamedParameter($member->getLevel()))
70
		   ->setValue('status', $qb->createNamedParameter($member->getStatus()))
71
		   ->setValue('contact_id', $qb->createNamedParameter($member->getContactId()))
72
		   ->setValue('note', $qb->createNamedParameter($member->getNote()));
73
74
		$qb->execute();
75
	}
76
77
78
	/**
79
	 * @param Member $member
80
	 */
81
	public function delete(Member $member) {
82
		$qb = $this->getMemberDeleteSql();
83
		$qb->limitToCircleId($member->getCircleId());
84
		$qb->limitToUserId($member->getUserId());
85
		$qb->limitToUserType($member->getUserType());
86
		$qb->limitToInstance($qb->getInstance($member));
87
//		$qb->limitToSingleId($federatedUser->getSingleId());
88
89
		$qb->execute();
90
	}
91
92
93
	/**
94
	 * @param Member $member
95
	 */
96
	public function updateLevel(Member $member): void {
97
		$qb = $this->getMemberUpdateSql();
98
		$qb->set('level', $qb->createNamedParameter($member->getLevel()));
99
100
		$qb->limitToMemberId($member->getId());
101
		$qb->limitToCircleId($member->getCircleId());
102
		$qb->limitToUserId($member->getUserId());
103
		$qb->limitToUserType($member->getUserType());
104
		$qb->limitToInstance($qb->getInstance($member));
105
		//		$qb->limitToSingleId($member->getSingleId());
106
107
		$qb->execute();
108
	}
109
110
111
	/**
112
	 * @param string $circleId
113
	 *
114
	 * @return Circle[]
115
	 */
116
	public function getMembers(string $circleId): array {
117
		$qb = $this->getMemberSelectSql();
118
		$qb->limitToCircleId($circleId);
119
120
		return $this->getItemsFromRequest($qb);
121
	}
122
123
124
	/**
125
	 * @param string $memberId
126
	 * @param FederatedUser|null $initiator
127
	 *
128
	 * @return Member
129
	 * @throws MemberNotFoundException
130
	 */
131
	public function getMember(string $memberId, ?FederatedUser $initiator = null): Member {
132
		$qb = $this->getMemberSelectSql();
133
		$qb->limitToMemberId($memberId);
134
135
		if (!is_null($initiator)) {
136
			$qb->leftJoinCircle($initiator);
137
		}
138
139
140
		return $this->getItemFromRequest($qb);
141
	}
142
143
144
	/**
145
	 * @param Member $member
146
	 * @param FederatedUser|null $initiator
147
	 *
148
	 * @return Member
149
	 * @throws MemberNotFoundException
150
	 */
151
	public function searchMember(Member $member, ?FederatedUser $initiator = null): Member {
152
		$qb = $this->getMemberSelectSql();
153
		$qb->limitToCircleId($member->getCircleId());
154
		$qb->limitToUserId($member->getUserId());
155
		$qb->limitToUserType($member->getUserType());
156
		$qb->limitToInstance($qb->getInstance($member));
157
//		$qb->limitToSingleId($federatedUser->getSingleId());
158
159
		if (!is_null($initiator)) {
160
			$qb->leftJoinCircle($initiator);
161
		}
162
163
		return $this->getItemFromRequest($qb);
164
	}
165
166
}
167
168