25 protected \ILIAS\BookingManager\InternalDomainService
$domain;
35 int $a_booking_pool_id
40 throw new ilException(
"User $a_user_id does not exist.");
43 throw new ilException(
"Booking Pool $a_booking_pool_id does not exist.");
46 $this->
lng = $DIC->language();
47 $this->db = $DIC->database();
48 $this->
user = $DIC->user();
49 $this->domain = $DIC->bookingManager()->internal()->domain();
51 $this->participant_id = $a_user_id;
52 $this->booking_pool_id = $a_booking_pool_id;
59 $this->is_new =
false;
65 $query =
'SELECT participant_id FROM booking_member' .
66 ' WHERE user_id = ' . $this->db->quote($this->participant_id,
'integer') .
67 ' AND booking_pool_id = ' . $this->db->quote($this->booking_pool_id,
'integer');
69 $set = $this->db->query($query);
70 $row = $this->db->fetchAssoc($set);
74 return (
int) $row[
'participant_id'];
77 protected function save(): void
79 $assigner_id = $this->
user->getId();
80 $next_id = $this->db->nextId(
'booking_member');
82 $query =
'INSERT INTO booking_member' .
83 ' (participant_id, user_id, booking_pool_id, assigner_user_id)' .
84 ' VALUES (' . $this->db->quote($next_id,
'integer') .
85 ',' . $this->db->quote($this->participant_id,
'integer') .
86 ',' . $this->db->quote($this->booking_pool_id,
'integer') .
87 ',' . $this->db->quote($assigner_id,
'integer') .
')';
89 $this->db->manipulate($query);
106 $pool_id = $booking_object->getPoolId();
108 $overall_limit = (
int) $pool->getOverallLimit();
114 foreach ($members as $member_id) {
118 if ($overall_limit === 0 || ($overall_limit > 0 && $total_reservations < $overall_limit)) {
120 $name = $user_name[
'lastname'] .
", " . $user_name[
'firstname'];
121 $index = $a_bp_object_id .
"_" . $member_id;
123 if (!isset(
$res[$index])) {
124 $res[$index] = array(
125 "user_id" => $member_id,
126 "object_title" => array($booking_object->getTitle()),
129 } elseif (!in_array($booking_object->getTitle(),
$res[$index][
'object_title'],
true)) {
130 $res[$index][
'object_title'][] = $booking_object->getTitle();
140 ?array $a_filter =
null,
141 ?
int $a_object_id =
null 145 $ilDB = $DIC->database();
146 $domain = $DIC->bookingManager()->internal()->domain();
150 $query =
'SELECT bm.user_id, bm.booking_pool_id, br.object_id, bo.title, br.status' .
151 ' FROM booking_member bm' .
152 ' LEFT JOIN booking_reservation br ON (bm.user_id = br.user_id)' .
153 ' LEFT JOIN booking_object bo ON (br.object_id = bo.booking_object_id AND bo.pool_id = ' .
$ilDB->quote($a_booking_pool,
'integer') .
')';
155 $where = array(
'bm.booking_pool_id =' .
$ilDB->quote($a_booking_pool,
'integer'));
157 $where[] =
'br.object_id = ' .
$ilDB->quote($a_object_id,
'integer');
159 if ($a_filter[
'title'] ??
false) {
160 $where[] =
'(' .
$ilDB->like(
'title',
'text',
'%' . $a_filter[
'title'] .
'%') .
161 ' OR ' .
$ilDB->like(
'description',
'text',
'%' . $a_filter[
'title'] .
'%') .
')';
163 if ($a_filter[
'user_id'] ??
false) {
164 $where[] =
'bm.user_id = ' .
$ilDB->quote($a_filter[
'user_id'],
'integer');
167 $query .=
' WHERE ' . implode(
' AND ', $where);
169 $set =
$ilDB->query($query);
171 while ($row =
$ilDB->fetchAssoc($set)) {
172 $status = $row[
'status'];
178 if (!$domain->profile()->exists((
int) $row[
'user_id'])) {
183 $name = $user_name[
'lastname'] .
", " . $user_name[
'firstname'];
184 $index = $a_booking_pool .
"_" . $row[
'user_id'];
187 if (!isset(
$res[$index])) {
188 $res[$index] = array(
189 "object_title" => array(),
194 $res[$index][
'object_title'] = array($row[
'title']);
195 $res[$index][
'obj_count'] = 1;
196 $res[$index][
'object_ids'][] = $row[
'object_id'];
199 $res[$index][
'object_title'][] = $row[
'title'];
200 if (!isset(
$res[$index][
'obj_count'])) {
201 $res[$index][
'obj_count'] = 0;
203 $res[$index][
'obj_count'] += 1;
204 $res[$index][
'object_ids'][] = $row[
'object_id'];
206 $res[$index][
'user_id'] = $row[
'user_id'];
209 foreach (
$res as $index => $val) {
210 if (isset($row[
'object_id'])) {
211 $res[$index][
'object_ids'][] = $row[
'object_id'];
222 int $a_booking_pool_id
225 $ilDB = $DIC->database();
226 $sql =
'SELECT * FROM booking_member WHERE booking_pool_id = ' .
$ilDB->quote($a_booking_pool_id,
'integer');
228 $set =
$ilDB->query($sql);
231 while ($row =
$ilDB->fetchAssoc($set)) {
232 $res[] = $row[
'user_id'];
247 $ilDB = $DIC->database();
251 $sql =
"SELECT ud.usr_id,ud.lastname,ud.firstname,ud.login" .
252 " FROM usr_data ud " .
253 " RIGHT JOIN booking_member m ON (ud.usr_id = m.user_id)" .
255 " AND m.booking_pool_id = " .
$ilDB->quote($a_pool_id,
"integer") .
256 " ORDER BY ud.lastname,ud.firstname";
258 $set =
$ilDB->query($sql);
259 while ($row =
$ilDB->fetchAssoc($set)) {
260 $res[$row[
"usr_id"]] = $row[
"lastname"] .
", " . $row[
"firstname"] .
261 " (" . $row[
"login"] .
")";
271 int $a_booking_object_id,
272 int $a_participant_id
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
static getBookingPoolParticipants(int $a_booking_pool_id)
Get all participants for a booking pool.
isParticipantAssigned(int $a_booking_object_id, int $a_participant_id)
Returns true if the participant has a reservation for this object.
static getObjectReservationForUser(int $a_object_id, int $a_user_id)
static _lookupName(int $a_user_id)
lookup user name
ILIAS BookingManager InternalDomainService $domain
static getList(int $a_booking_pool, ?array $a_filter=null, ?int $a_object_id=null)
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
static getUserFilter(int $a_pool_id)
Get user data from db for an specific pool id.
while($session_entry=$r->fetchRow(ilDBConstants::FETCHMODE_ASSOC)) return null
static _exists(int $id, bool $reference=false, ?string $type=null)
checks if an object exists in object_data
__construct(int $a_user_id, int $a_booking_pool_id)
static getMembersWithoutReservation(int $a_object_id)
static getAssignableParticipants(int $a_bp_object_id)
Get participants who can not have a reservation for this booking pool object id.
static isBookingPoolLimitReachedByUser(int $a_user_id, int $a_pool_id)