diff options
Diffstat (limited to 'includes/model')
-rw-r--r-- | includes/model/NeededAngelTypes_model.php | 35 | ||||
-rw-r--r-- | includes/model/ShiftEntry_model.php | 17 | ||||
-rw-r--r-- | includes/model/Shifts_model.php | 24 |
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 |