2013-12-29 15:08:33 +01:00
|
|
|
<?php
|
2017-12-25 23:12:52 +01:00
|
|
|
|
2020-09-06 23:50:36 +02:00
|
|
|
use Engelsystem\Models\Room;
|
2017-12-10 18:56:40 +01:00
|
|
|
use Engelsystem\ValidationResult;
|
2020-09-06 23:50:36 +02:00
|
|
|
use Illuminate\Support\Collection;
|
2017-12-10 18:56:40 +01:00
|
|
|
|
|
|
|
/**
|
|
|
|
* Validate a name for a room.
|
|
|
|
*
|
2017-12-25 23:12:52 +01:00
|
|
|
* @param string $name The new name
|
|
|
|
* @param int $room_id The room id
|
2017-12-10 18:56:40 +01:00
|
|
|
* @return ValidationResult
|
|
|
|
*/
|
2020-09-06 23:50:36 +02:00
|
|
|
function Room_validate_name(string $name, int $room_id)
|
2017-12-10 18:56:40 +01:00
|
|
|
{
|
|
|
|
$valid = true;
|
|
|
|
if (empty($name)) {
|
|
|
|
$valid = false;
|
|
|
|
}
|
2017-12-25 23:12:52 +01:00
|
|
|
|
2020-09-06 23:50:36 +02:00
|
|
|
$roomCount = Room::query()
|
|
|
|
->where('name', $name)
|
|
|
|
->where('id', '!=', $room_id)
|
|
|
|
->count();
|
|
|
|
if ($roomCount) {
|
2017-12-10 18:56:40 +01:00
|
|
|
$valid = false;
|
|
|
|
}
|
2020-09-06 23:50:36 +02:00
|
|
|
|
2017-12-10 18:56:40 +01:00
|
|
|
return new ValidationResult($valid, $name);
|
|
|
|
}
|
2017-01-21 13:58:53 +01:00
|
|
|
|
2016-10-03 18:32:25 +02:00
|
|
|
/**
|
|
|
|
* returns a list of rooms.
|
2017-01-02 15:43:36 +01:00
|
|
|
*
|
2020-09-06 23:50:36 +02:00
|
|
|
* @return Room[]|Collection
|
2016-10-03 18:32:25 +02:00
|
|
|
*/
|
2017-12-10 15:02:37 +01:00
|
|
|
function Rooms()
|
2017-01-02 03:57:23 +01:00
|
|
|
{
|
2020-12-26 02:35:49 +01:00
|
|
|
return Room::orderBy('name')->get();
|
2016-10-03 18:32:25 +02:00
|
|
|
}
|
|
|
|
|
2017-11-24 12:01:19 +01:00
|
|
|
/**
|
|
|
|
* Returns Room id array
|
|
|
|
*
|
2020-09-06 23:50:36 +02:00
|
|
|
* @return int[]
|
2017-11-24 12:01:19 +01:00
|
|
|
*/
|
|
|
|
function Room_ids()
|
|
|
|
{
|
2020-09-06 23:50:36 +02:00
|
|
|
return Room::query()
|
|
|
|
->select('id')
|
|
|
|
->pluck('id')
|
|
|
|
->toArray();
|
2017-11-24 12:01:19 +01:00
|
|
|
}
|
|
|
|
|
2013-12-29 15:08:33 +01:00
|
|
|
/**
|
2015-05-14 17:20:46 +02:00
|
|
|
* Delete a room
|
2016-10-03 18:32:25 +02:00
|
|
|
*
|
2020-09-06 23:50:36 +02:00
|
|
|
* @param Room $room
|
2013-12-29 15:08:33 +01:00
|
|
|
*/
|
2020-09-06 23:50:36 +02:00
|
|
|
function Room_delete(Room $room)
|
2017-01-02 03:57:23 +01:00
|
|
|
{
|
2020-09-06 23:50:36 +02:00
|
|
|
$room->delete();
|
|
|
|
engelsystem_log('Room deleted: ' . $room->name);
|
2017-12-10 18:56:40 +01:00
|
|
|
}
|
|
|
|
|
2015-05-14 17:20:46 +02:00
|
|
|
/**
|
|
|
|
* Create a new room
|
|
|
|
*
|
2020-09-06 23:50:36 +02:00
|
|
|
* @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
|
2015-05-14 17:20:46 +02:00
|
|
|
*/
|
2020-09-06 23:50:36 +02:00
|
|
|
function Room_create(string $name, string $map_url = null, string $description = null)
|
2017-01-02 03:57:23 +01:00
|
|
|
{
|
2020-09-06 23:50:36 +02:00
|
|
|
$room = new Room();
|
|
|
|
$room->name = $name;
|
|
|
|
$room->description = $description;
|
|
|
|
$room->map_url = $map_url;
|
|
|
|
$room->save();
|
2017-12-25 23:12:52 +01:00
|
|
|
|
2017-12-10 18:56:40 +01:00
|
|
|
engelsystem_log(
|
|
|
|
'Room created: ' . $name
|
|
|
|
. ', map_url: ' . $map_url
|
|
|
|
. ', description: ' . $description
|
2017-01-03 03:22:48 +01:00
|
|
|
);
|
2017-12-25 23:12:52 +01:00
|
|
|
|
2020-09-06 23:50:36 +02:00
|
|
|
return $room->id;
|
2017-12-10 18:56:40 +01:00
|
|
|
}
|
2017-01-21 13:58:53 +01:00
|
|
|
|
2017-12-10 18:56:40 +01:00
|
|
|
/**
|
2019-11-27 23:43:21 +01:00
|
|
|
* Update a room
|
2017-12-10 18:56:40 +01:00
|
|
|
*
|
2020-09-06 23:50:36 +02:00
|
|
|
* @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
|
2017-12-10 18:56:40 +01:00
|
|
|
*/
|
2020-09-06 23:50:36 +02:00
|
|
|
function Room_update(int $room_id, string $name, string $map_url = null, string $description = null)
|
2017-12-10 18:56:40 +01:00
|
|
|
{
|
2020-09-06 23:50:36 +02:00
|
|
|
$room = Room::find($room_id);
|
|
|
|
$room->name = $name;
|
|
|
|
$room->description = $description ?: null;
|
|
|
|
$room->map_url = $map_url ?: null;
|
|
|
|
$room->save();
|
2017-12-25 23:12:52 +01:00
|
|
|
|
2017-12-10 18:56:40 +01:00
|
|
|
engelsystem_log(
|
2017-12-25 23:12:52 +01:00
|
|
|
'Room updated: ' . $name .
|
|
|
|
', map_url: ' . $map_url .
|
2017-12-10 18:56:40 +01:00
|
|
|
', description: ' . $description
|
|
|
|
);
|
2013-12-29 15:08:33 +01:00
|
|
|
}
|