summaryrefslogtreecommitdiff
path: root/includes/model
diff options
context:
space:
mode:
authorPhilip Häusler <msquare@notrademark.de>2013-12-09 17:10:07 +0100
committerPhilip Häusler <msquare@notrademark.de>2013-12-09 17:10:07 +0100
commitad5899f02876e9c2e81804d6d3a58988fae8c3db (patch)
tree76f21c9544bb5e2af5cb4d3772c9949f5d694b00 /includes/model
parent9a1ffdf198c74466b86129568fb78a677dc56025 (diff)
api export for all shifts
Diffstat (limited to 'includes/model')
-rw-r--r--includes/model/NeededAngelTypes_model.php35
-rw-r--r--includes/model/ShiftEntry_model.php17
-rw-r--r--includes/model/Shifts_model.php24
3 files changed, 76 insertions, 0 deletions
diff --git a/includes/model/NeededAngelTypes_model.php b/includes/model/NeededAngelTypes_model.php
new file mode 100644
index 00000000..85890f2d
--- /dev/null
+++ b/includes/model/NeededAngelTypes_model.php
@@ -0,0 +1,35 @@
+<?php
+
+/**
+ * Returns all needed angeltypes and already taken needs.
+ *
+ * @param Shift $shift
+ */
+function NeededAngelTypes_by_shift($shift) {
+ $needed_angeltypes_source = sql_select("
+ SELECT `NeededAngelTypes`.*, `AngelTypes`.`name`, `AngelTypes`.`restricted`
+ FROM `NeededAngelTypes`
+ JOIN `AngelTypes` ON `AngelTypes`.`id` = `NeededAngelTypes`.`angel_type_id`
+ WHERE `shift_id`=" . sql_escape($shift['SID']) . "
+ OR `room_id`=" . sql_escape($shift['RID']) . "
+ ORDER BY `room_id` DESC
+ ");
+ if ($needed_angeltypes === false)
+ return false;
+
+ $needed_angeltypes = array();
+ foreach ($needed_angeltypes_source as $angeltype)
+ $needed_angeltypes[$angeltype['id']] = $angeltype;
+
+ foreach ($needed_angeltypes as &$angeltype) {
+ $shift_entries = ShiftEntries_by_shift_and_angeltype($shift['SID'], $angeltype['id']);
+ if ($shift_entries === false)
+ return false;
+
+ $angeltype['taken'] = count($shift_entries);
+ }
+
+ return $needed_angeltypes;
+}
+
+?> \ No newline at end of file
diff --git a/includes/model/ShiftEntry_model.php b/includes/model/ShiftEntry_model.php
new file mode 100644
index 00000000..79652c9b
--- /dev/null
+++ b/includes/model/ShiftEntry_model.php
@@ -0,0 +1,17 @@
+<?php
+
+/**
+ * Returns all shift entries in given shift for given angeltype.
+ * @param int $shift_id
+ * @param int $angeltype_id
+ */
+function ShiftEntries_by_shift_and_angeltype($shift_id, $angeltype_id) {
+ return sql_select("
+ SELECT *
+ FROM `ShiftEntries`
+ WHERE `SID`=" . sql_escape($shift_id) . "
+ AND `TID`=" . sql_escape($angeltype_id) . "
+ ");
+}
+
+?> \ No newline at end of file
diff --git a/includes/model/Shifts_model.php b/includes/model/Shifts_model.php
new file mode 100644
index 00000000..84d14c7a
--- /dev/null
+++ b/includes/model/Shifts_model.php
@@ -0,0 +1,24 @@
+<?php
+
+/**
+ * Returns all shifts with needed angeltypes and count of subscribed jobs.
+ */
+function Shifts() {
+ $shifts_source = sql_select("
+ SELECT `Shifts`.*, `Room`.`RID`, `Room`.`Name` as `room_name`
+ FROM `Shifts`
+ JOIN `Room` ON `Room`.`RID` = `Shifts`.`RID`
+ ");
+ if ($shifts_source === false)
+ return false;
+
+ foreach ($shifts_source as &$shift) {
+ $needed_angeltypes = NeededAngelTypes_by_shift($shift);
+ if ($needed_angeltypes === false)
+ return false;
+
+ $shift['angeltypes'] = $needed_angeltypes;
+ }
+}
+
+?> \ No newline at end of file