where('name', $name) ->where('id', '!=', $room_id) ->count(); if ($roomCount) { $valid = false; } return new ValidationResult($valid, $name); } /** * returns a list of rooms. * * @return Room[]|Collection */ function Rooms() { return Room::all()->sortBy('name'); } /** * Returns Room id array * * @return int[] */ function Room_ids() { return Room::query() ->select('id') ->pluck('id') ->toArray(); } /** * Delete a room * * @param Room $room */ function Room_delete(Room $room) { $room->delete(); engelsystem_log('Room deleted: ' . $room->name); } /** * Create a new room * * @param string $name Name of the room * @param string|null $map_url URL to a map tha can be displayed in an iframe * @param string|null $description * * @return null|int */ function Room_create(string $name, string $map_url = null, string $description = null) { $room = new Room(); $room->name = $name; $room->description = $description; $room->map_url = $map_url; $room->save(); engelsystem_log( 'Room created: ' . $name . ', map_url: ' . $map_url . ', description: ' . $description ); return $room->id; } /** * Update a room * * @param int $room_id The rooms id * @param string $name Name of the room * @param string|null $map_url URL to a map tha can be displayed in an iframe * @param string|null $description Markdown description */ function Room_update(int $room_id, string $name, string $map_url = null, string $description = null) { $room = Room::find($room_id); $room->name = $name; $room->description = $description ?: null; $room->map_url = $map_url ?: null; $room->save(); engelsystem_log( 'Room updated: ' . $name . ', map_url: ' . $map_url . ', description: ' . $description ); }