summaryrefslogtreecommitdiff
path: root/includes/controller/shifttypes_controller.php
diff options
context:
space:
mode:
Diffstat (limited to 'includes/controller/shifttypes_controller.php')
-rw-r--r--includes/controller/shifttypes_controller.php167
1 files changed, 167 insertions, 0 deletions
diff --git a/includes/controller/shifttypes_controller.php b/includes/controller/shifttypes_controller.php
new file mode 100644
index 00000000..443ce470
--- /dev/null
+++ b/includes/controller/shifttypes_controller.php
@@ -0,0 +1,167 @@
+<?php
+
+function shifttype_link($shifttype) {
+ return page_link_to('shifttypes') . '&action=view&shifttype_id=' . $shifttype['id'];
+}
+
+/**
+ * Delete a shifttype.
+ */
+function shifttype_delete_controller() {
+ if (! isset($_REQUEST['shifttype_id']))
+ redirect(page_link_to('shifttypes'));
+ $shifttype = ShiftType($_REQUEST['shifttype_id']);
+ if ($shifttype === false)
+ engelsystem_error('Unable to load shifttype.');
+ if ($shifttype == null)
+ redirect(page_link_to('shifttypes'));
+
+ if (isset($_REQUEST['confirmed'])) {
+ $result = ShiftType_delete($shifttype['id']);
+ if ($result === false)
+ engelsystem_error('Unable to delete shifttype.');
+
+ engelsystem_log('Deleted shifttype ' . $shifttype['name']);
+ success(sprintf(_('Shifttype %s deleted.'), $shifttype['name']));
+ redirect(page_link_to('shifttypes'));
+ }
+
+ return array(
+ sprintf(_("Delete shifttype %s"), $shifttype['name']),
+ ShiftType_delete_view($shifttype)
+ );
+}
+
+/**
+ * Edit or create shift type.
+ */
+function shifttype_edit_controller() {
+ $shifttype_id = null;
+ $name = "";
+ $angeltype_id = null;
+ $description = "";
+
+ $angeltypes = AngelTypes();
+ if ($angeltypes === false)
+ engelsystem_error("Unable to load angel types.");
+
+ if (isset($_REQUEST['shifttype_id'])) {
+ $shifttype = ShiftType($_REQUEST['shifttype_id']);
+ if ($shifttype === false)
+ engelsystem_error('Unable to load shifttype.');
+ if ($shifttype == null) {
+ error(_('Shifttype not found.'));
+ redirect(page_link_to('shifttypes'));
+ }
+ $shifttype_id = $shifttype['id'];
+ $name = $shifttype['name'];
+ $angeltype_id = $shifttype['angeltype_id'];
+ $description = $shifttype['description'];
+ }
+
+ if (isset($_REQUEST['submit'])) {
+ $ok = true;
+
+ if (isset($_REQUEST['name']) && $_REQUEST['name'] != '')
+ $name = strip_request_item('name');
+ else {
+ $ok = false;
+ error(_('Please enter a name.'));
+ }
+
+ if (isset($_REQUEST['angeltype_id']) && preg_match("/^[0-9]+$/", $_REQUEST['angeltype_id']))
+ $angeltype_id = $_REQUEST['angeltype_id'];
+ else
+ $angeltype_id = null;
+
+ if (isset($_REQUEST['description']))
+ $description = strip_request_item_nl('description');
+
+ if ($ok) {
+ if ($shifttype_id) {
+ $result = ShiftType_update($shifttype_id, $name, $angeltype_id, $description);
+ if ($result === false)
+ engelsystem_error('Unable to update shifttype.');
+ engelsystem_log('Updated shifttype ' . $name);
+ success(_('Updated shifttype.'));
+ } else {
+ $shifttype_id = ShiftType_create($name, $angeltype_id, $description);
+ if ($shifttype_id === false)
+ engelsystem_error('Unable to create shifttype.');
+ engelsystem_log('Created shifttype ' . $name);
+ success(_('Created shifttype.'));
+ }
+ redirect(page_link_to('shifttypes') . '&action=view&shifttype_id=' . $shifttype_id);
+ }
+ }
+
+ return [
+ shifttypes_title(),
+ ShiftType_edit_view($name, $angeltype_id, $angeltypes, $description, $shifttype_id)
+ ];
+}
+
+function shifttype_controller() {
+ if (! isset($_REQUEST['shifttype_id']))
+ redirect(page_link_to('shifttypes'));
+ $shifttype = ShiftType($_REQUEST['shifttype_id']);
+ if ($shifttype === false)
+ engelsystem_error('Unable to load shifttype.');
+ if ($shifttype == null)
+ redirect(page_link_to('shifttypes'));
+
+ $angeltype = null;
+ if ($shifttype['angeltype_id'] != null) {
+ $angeltype = AngelType($shifttype['angeltype_id']);
+ if ($angeltype === false)
+ engelsystem_error('Unable to load angeltype.');
+ }
+
+ return [
+ $shifttype['name'],
+ ShiftType_view($shifttype, $angeltype)
+ ];
+}
+
+/**
+ * List all shift types.
+ */
+function shifttypes_list_controller() {
+ $shifttypes = ShiftTypes();
+ if ($shifttypes === false)
+ engelsystem_error("Unable to load shifttypes.");
+
+ return [
+ shifttypes_title(),
+ ShiftTypes_list_view($shifttypes)
+ ];
+}
+
+/**
+ * Text for shift type related links.
+ */
+function shifttypes_title() {
+ return _("Shifttypes");
+}
+
+/**
+ * Route shift type actions
+ */
+function shifttypes_controller() {
+ if (! isset($_REQUEST['action']))
+ $_REQUEST['action'] = 'list';
+
+ switch ($_REQUEST['action']) {
+ default:
+ case 'list':
+ return shifttypes_list_controller();
+ case 'view':
+ return shifttype_controller();
+ case 'edit':
+ return shifttype_edit_controller();
+ case 'delete':
+ return shifttype_delete_controller();
+ }
+}
+
+?> \ No newline at end of file