From f4f7a5a2354f050ca8eeb2ca8484150f8d881f40 Mon Sep 17 00:00:00 2001 From: Dennis Eichhorn Date: Sun, 29 Nov 2015 21:57:18 +0100 Subject: [PATCH] Init --- Admin/Install/Navigation.php | 38 ++++++ Admin/Install/nav.install.json | 82 +++++++++++++ Admin/Installer.php | 148 ++++++++++++++++++++++ Controller.php | 149 +++++++++++++++++++++++ Models/Department.php | 0 Models/DepartmentList.php | 107 ++++++++++++++++ Models/Employee.php | 124 +++++++++++++++++++ Models/PositionType.php | 48 ++++++++ Models/StaffList.php | 107 ++++++++++++++++ README.md | 1 + Theme/backend/department-create.tpl.php | 0 Theme/backend/department-list.tpl.php | 0 Theme/backend/department-single.tpl.php | 0 Theme/backend/planning-dashboard.tpl.php | 98 +++++++++++++++ Theme/backend/position-create.tpl.php | 0 Theme/backend/position-list.tpl.php | 0 Theme/backend/position-single.tpl.php | 0 Theme/backend/staff-create.tpl.php | 16 +++ Theme/backend/staff-list.tpl.php | 54 ++++++++ Theme/backend/staff-single.tpl.php | 16 +++ Theme/lang/backend.en.lang.php | 27 ++++ Theme/lang/nav.backend.en.lang.php | 27 ++++ img/module_teaser_small.png | Bin 0 -> 49511 bytes info.json | 51 ++++++++ 24 files changed, 1093 insertions(+) create mode 100644 Admin/Install/Navigation.php create mode 100644 Admin/Install/nav.install.json create mode 100644 Admin/Installer.php create mode 100644 Controller.php create mode 100644 Models/Department.php create mode 100644 Models/DepartmentList.php create mode 100644 Models/Employee.php create mode 100644 Models/PositionType.php create mode 100644 Models/StaffList.php create mode 100644 README.md create mode 100644 Theme/backend/department-create.tpl.php create mode 100644 Theme/backend/department-list.tpl.php create mode 100644 Theme/backend/department-single.tpl.php create mode 100644 Theme/backend/planning-dashboard.tpl.php create mode 100644 Theme/backend/position-create.tpl.php create mode 100644 Theme/backend/position-list.tpl.php create mode 100644 Theme/backend/position-single.tpl.php create mode 100644 Theme/backend/staff-create.tpl.php create mode 100644 Theme/backend/staff-list.tpl.php create mode 100644 Theme/backend/staff-single.tpl.php create mode 100644 Theme/lang/backend.en.lang.php create mode 100644 Theme/lang/nav.backend.en.lang.php create mode 100644 img/module_teaser_small.png create mode 100644 info.json diff --git a/Admin/Install/Navigation.php b/Admin/Install/Navigation.php new file mode 100644 index 0000000..984db25 --- /dev/null +++ b/Admin/Install/Navigation.php @@ -0,0 +1,38 @@ + + * @author Dennis Eichhorn + * @copyright 2013 Dennis Eichhorn + * @license OMS License 1.0 + * @version 1.0.0 + * @link http://orange-management.com + */ +namespace Modules\HumanResourceManagement\Admin\Install; + +/** + * Navigation class. + * + * @category Modules + * @package Modules\Admin + * @author OMS Development Team + * @author Dennis Eichhorn + * @license OMS License 1.0 + * @link http://orange-management.com + * @since 1.0.0 + */ +class Navigation +{ + public static function install($dbPool) + { + $navData = json_decode(file_get_contents(__DIR__ . '/nav.install.json'), true); + + $class = '\\Modules\\Navigation\\Admin\\Installer'; + $class::installExternal($dbPool, $navData); + } +} diff --git a/Admin/Install/nav.install.json b/Admin/Install/nav.install.json new file mode 100644 index 0000000..eefd435 --- /dev/null +++ b/Admin/Install/nav.install.json @@ -0,0 +1,82 @@ +[ + { + "id": 1002401001, + "pid": "754a08ddf8bcb1cf22f310f09206dd783d42f7dd", + "type": 2, + "subtype": 0, + "name": "HumanResourceManagement", + "uri": null, + "target": "self", + "icon": "fa fa-user", + "order": 90, + "from": "HumanResourceManagement", + "permission": null, + "parent": 0, + "children": [ + { + "id": 1002402001, + "pid": "754a08ddf8bcb1cf22f310f09206dd783d42f7dd", + "type": 2, + "subtype": 1, + "name": "Employees", + "uri": "/{/lang}/backend/hr/staff/list", + "target": "self", + "icon": null, + "order": 1, + "from": "HumanResourceManagement", + "permission": null, + "parent": 1002401001, + "children": [ + { + "id": 1002402101, + "pid": "29a67db2902a784f66b5e896efd84b0004be2087", + "type": 3, + "subtype": 1, + "name": "List", + "uri": "/{/lang}/backend/hr/staff/list", + "target": "self", + "icon": null, + "order": 1, + "from": "HumanResourceManagement", + "permission": null, + "parent": 1002402001, + "children": [ + ] + }, + { + "id": 1002402201, + "pid": "29a67db2902a784f66b5e896efd84b0004be2087", + "type": 3, + "subtype": 1, + "name": "Create", + "uri": "/{/lang}/backend/hr/staff/create", + "target": "self", + "icon": null, + "order": 5, + "from": "HumanResourceManagement", + "permission": null, + "parent": 1002402001, + "children": [ + ] + } + ] + }, + { + "id": 1002403001, + "pid": "29a67db2902a784f66b5e896efd84b0004be2087", + "type": 2, + "subtype": 1, + "name": "Departments", + "uri": "/{/lang}/backend/hr/department/list", + "target": "self", + "icon": null, + "order": 1, + "from": "HumanResourceManagement", + "permission": null, + "parent": 1002401001, + "children": [ + ] + } + ] + } +] diff --git a/Admin/Installer.php b/Admin/Installer.php new file mode 100644 index 0000000..02931d2 --- /dev/null +++ b/Admin/Installer.php @@ -0,0 +1,148 @@ + + * @author Dennis Eichhorn + * @copyright 2013 Dennis Eichhorn + * @license OMS License 1.0 + * @version 1.0.0 + * @link http://orange-management.com + */ +namespace Modules\HumanResourceManagement\Admin; + +use phpOMS\DataStorage\Database\DatabaseType; +use phpOMS\DataStorage\Database\Pool; +use phpOMS\Module\InstallerAbstract; + +/** + * Human Resources install class. + * + * @category Modules + * @package Modules\HumanResourceManagement + * @author OMS Development Team + * @author Dennis Eichhorn + * @license OMS License 1.0 + * @link http://orange-management.com + * @since 1.0.0 + */ +class Installer extends InstallerAbstract +{ + + /** + * {@inheritdoc} + */ + public static function install(Pool $dbPool, array $info) + { + parent::install($dbPool, $info); + + switch ($dbPool->get('core')->getType()) { + case DatabaseType::MYSQL: + $dbPool->get('core')->con->prepare( + 'CREATE TABLE if NOT EXISTS `' . $dbPool->get('core')->prefix . 'hr_staff` ( + `hr_staff_id` int(11) NOT NULL AUTO_INCREMENT, + `hr_staff_status` tinyint(2) DEFAULT NULL, + `hr_staff_account` int(11) DEFAULT NULL, + PRIMARY KEY (`hr_staff_id`), + KEY `hr_staff_account` (`hr_staff_account`) + )ENGINE=InnoDB DEFAULT CHARSET=utf8;' + )->execute(); + + $dbPool->get('core')->con->prepare( + 'ALTER TABLE `' . $dbPool->get('core')->prefix . 'hr_staff` + ADD CONSTRAINT `' . $dbPool->get('core')->prefix . 'hr_staff_ibfk_1` FOREIGN KEY (`hr_staff_account`) REFERENCES `' . $dbPool->get('core')->prefix . 'account` (`account_id`);' + )->execute(); + + $dbPool->get('core')->con->prepare( + 'CREATE TABLE if NOT EXISTS `' . $dbPool->get('core')->prefix . 'hr_staff_history` ( + `hr_staff_history_id` int(11) NOT NULL AUTO_INCREMENT, + `hr_staff_history_staff` int(11) DEFAULT NULL, + `hr_staff_history_position` int(11) DEFAULT NULL, + `hr_staff_history_department` int(11) DEFAULT NULL, + `hr_staff_history_start` datetime DEFAULT NULL, + `hr_staff_history_end` datetime DEFAULT NULL, + PRIMARY KEY (`hr_staff_history_id`), + KEY `hr_staff_history_staff` (`hr_staff_history_staff`) + )ENGINE=InnoDB DEFAULT CHARSET=utf8;' + )->execute(); + + $dbPool->get('core')->con->prepare( + 'ALTER TABLE `' . $dbPool->get('core')->prefix . 'hr_staff_history` + ADD CONSTRAINT `' . $dbPool->get('core')->prefix . 'hr_staff_history_ibfk_1` FOREIGN KEY (`hr_staff_history_staff`) REFERENCES `' . $dbPool->get('core')->prefix . 'hr_staff` (`hr_staff_id`);' + )->execute(); + + $dbPool->get('core')->con->prepare( + 'CREATE TABLE if NOT EXISTS `' . $dbPool->get('core')->prefix . 'hr_staff_contract` ( + `hr_staff_contract_id` int(11) NOT NULL AUTO_INCREMENT, + `hr_staff_contract_stype` tinyint(1) DEFAULT NULL, + `hr_staff_contract_salary` decimal(8,2) DEFAULT NULL, + `hr_staff_contract_cformingbenefits` decimal(8,2) DEFAULT NULL, + `hr_staff_contract_working_hours` int(11) DEFAULT NULL, + `hr_staff_contract_vacation` tinyint(3) DEFAULT NULL, + `hr_staff_contract_vtype` tinyint(3) DEFAULT NULL, + `hr_staff_contract_personal_time` tinyint(3) DEFAULT NULL, + `hr_staff_contract_start` datetime DEFAULT NULL, + `hr_staff_contract_end` datetime DEFAULT NULL, + `hr_staff_contract_employee` int(11) DEFAULT NULL, + PRIMARY KEY (`hr_staff_contract_id`), + KEY `hr_staff_contract_employee` (`hr_staff_contract_employee`) + )ENGINE=InnoDB DEFAULT CHARSET=utf8;' + )->execute(); + + $dbPool->get('core')->con->prepare( + 'ALTER TABLE `' . $dbPool->get('core')->prefix . 'hr_staff_contract` + ADD CONSTRAINT `' . $dbPool->get('core')->prefix . 'hr_staff_contract_ibfk_1` FOREIGN KEY (`hr_staff_contract_employee`) REFERENCES `' . $dbPool->get('core')->prefix . 'hr_staff` (`hr_staff_id`);' + )->execute(); + + $dbPool->get('core')->con->prepare( + 'CREATE TABLE if NOT EXISTS `' . $dbPool->get('core')->prefix . 'hr_planning_shift` ( + `HRPlanningShiftID` int(11) NOT NULL AUTO_INCREMENT, + `amount` int(11) DEFAULT NULL, + `position` int(11) DEFAULT NULL, + `department` int(11) DEFAULT NULL, + `start` datetime DEFAULT NULL, + `end` datetime DEFAULT NULL, + PRIMARY KEY (`HRPlanningShiftID`), + KEY `department` (`department`) + )ENGINE=InnoDB DEFAULT CHARSET=utf8;' + )->execute(); + + $dbPool->get('core')->con->prepare( + 'ALTER TABLE `' . $dbPool->get('core')->prefix . 'hr_planning_shift` + ADD CONSTRAINT `' . $dbPool->get('core')->prefix . 'hr_planning_shift_ibfk_1` FOREIGN KEY (`department`) REFERENCES `' . $dbPool->get('core')->prefix . 'business_department` (`business_department_id`);' + )->execute(); + + $dbPool->get('core')->con->prepare( + 'CREATE TABLE if NOT EXISTS `' . $dbPool->get('core')->prefix . 'hr_planning_staff` ( + `HRPlanningStaffID` int(11) NOT NULL AUTO_INCREMENT, + `person` int(11) DEFAULT NULL, + `start` datetime DEFAULT NULL, + `end` datetime DEFAULT NULL, + `status` tinyint(1) NOT NULL, + `type` tinyint(1) NOT NULL, + `repeat` tinyint(1) NOT NULL, + `rep_interval` tinyint(3) NOT NULL, + `rep_monday` tinyint(1) NOT NULL, + `rep_tuesday` tinyint(1) NOT NULL, + `rep_wednesday` tinyint(1) NOT NULL, + `rep_thursday` tinyint(1) NOT NULL, + `rep_friday` tinyint(1) NOT NULL, + `rep_saturday` tinyint(1) NOT NULL, + `rep_sunday` tinyint(1) NOT NULL, + PRIMARY KEY (`HRPlanningStaffID`), + KEY `person` (`person`) + )ENGINE=InnoDB DEFAULT CHARSET=utf8;' + )->execute(); + + $dbPool->get('core')->con->prepare( + 'ALTER TABLE `' . $dbPool->get('core')->prefix . 'hr_planning_staff` + ADD CONSTRAINT `' . $dbPool->get('core')->prefix . 'hr_planning_staff_ibfk_1` FOREIGN KEY (`person`) REFERENCES `' . $dbPool->get('core')->prefix . 'account` (`account_id`);' + )->execute(); + break; + } + } +} diff --git a/Controller.php b/Controller.php new file mode 100644 index 0000000..17a206d --- /dev/null +++ b/Controller.php @@ -0,0 +1,149 @@ + + * @author Dennis Eichhorn + * @copyright 2013 Dennis Eichhorn + * @license OMS License 1.0 + * @version 1.0.0 + * @link http://orange-management.com + */ +namespace Modules\HumanResourceManagement; + +use Modules\Navigation\Models\Navigation; +use Modules\Navigation\Views\NavigationView; +use phpOMS\Contract\RenderableInterface; +use phpOMS\Message\RequestAbstract; +use phpOMS\Message\RequestDestination; +use phpOMS\Message\ResponseAbstract; +use phpOMS\Module\ModuleAbstract; +use phpOMS\Module\WebInterface; +use phpOMS\Views\View; +use phpOMS\Views\ViewLayout; + +/** + * Human Resources controller class. + * + * @category Modules + * @package Modules\HumanResourceManagement + * @author OMS Development Team + * @author Dennis Eichhorn + * @license OMS License 1.0 + * @link http://orange-management.com + * @since 1.0.0 + */ +class Controller extends ModuleAbstract implements WebInterface +{ + + /** + * Module name. + * + * @var \string + * @since 1.0.0 + */ + protected static $module = 'HumanResourceManagement'; + + /** + * Localization files. + * + * @var \string + * @since 1.0.0 + */ + protected static $localization = [ + RequestDestination::BACKEND => ['backend'], + ]; + + /** + * Providing. + * + * @var \string + * @since 1.0.0 + */ + protected static $providing = [ + 'Content', + ]; + + /** + * Dependencies. + * + * @var \string + * @since 1.0.0 + */ + protected static $dependencies = []; + + /** + * Routing elements. + * + * @var array + * @since 1.0.0 + */ + protected static $routes = [ + '^.*/backend/hr/staff/list.*$' => [['dest' => '\Modules\HumanResourceManagement\Controller:viewHrList', 'method' => 'GET', 'type' => ViewLayout::MAIN],], + '^.*/backend/hr/department/list.*$' => [['dest' => '\Modules\HumanResourceManagement\Controller:viewHrDepartmentList', 'method' => 'GET', 'type' => ViewLayout::MAIN],], + ]; + + /** + * @param RequestAbstract $request Request + * @param ResponseAbstract $response Response + * @param mixed $data Generic data + * + * @return RenderableInterface + * + * @since 1.0.0 + * @author Dennis Eichhorn + */ + public function viewHrList(RequestAbstract $request, ResponseAbstract $response, $data = null) : RenderableInterface + { + $view = new View($this->app, $request, $response); + $view->setTemplate('/Modules/HumanResourceManagement/Theme/backend/staff-list'); + $view->addData('nav', $this->createNavigation(1002402001, $request, $response)); + + return $view; + } + + /** + * @param RequestAbstract $request Request + * @param ResponseAbstract $response Response + * @param mixed $data Generic data + * + * @return RenderableInterface + * + * @since 1.0.0 + * @author Dennis Eichhorn + */ + public function viewHrDepartmentList(RequestAbstract $request, ResponseAbstract $response, $data = null) : RenderableInterface + { + $view = new View($this->app, $request, $response); + $view->setTemplate('/Modules/HumanResourceManagement/Theme/backend/department-list'); + $view->addData('nav', $this->createNavigation(1003001001, $request, $response)); + + return $view; + } + + /** + * @param int $pageId Page/parent Id for navigation + * @param RequestAbstract $request Request + * @param ResponseAbstract $response Response + * + * @return RenderableInterface + * + * @since 1.0.0 + * @author Dennis Eichhorn + */ + private function createNavigation(\int $pageId, RequestAbstract $request, ResponseAbstract $response) + { + $nav = Navigation::getInstance($request, $this->app->dbPool); + $navView = new NavigationView($this->app, $request, $response); + $navView->setTemplate('/Modules/Navigation/Theme/backend/mid'); + $navView->setNav($nav->getNav()); + $navView->setLanguage($request->getL11n()->language); + $navView->setParent($pageId); + + return $navView; + } +} diff --git a/Models/Department.php b/Models/Department.php new file mode 100644 index 0000000..e69de29 diff --git a/Models/DepartmentList.php b/Models/DepartmentList.php new file mode 100644 index 0000000..9ccf442 --- /dev/null +++ b/Models/DepartmentList.php @@ -0,0 +1,107 @@ + + * @author Dennis Eichhorn + * @copyright 2013 Dennis Eichhorn + * @license OMS License 1.0 + * @version 1.0.0 + * @link http://orange-management.com + */ +namespace Modules\HumanResources\Models; + +use phpOMS\DataStorage\Database\DatabaseType; + +/** + * Department list class. + * + * @category Modules + * @package HumanResources + * @author OMS Development Team + * @author Dennis Eichhorn + * @license OMS License 1.0 + * @link http://orange-management.com + * @since 1.0.0 + */ +class DepartmentList +{ + + /** + * Database instance. + * + * @var \phpOMS\DataStorage\Database\Database + * @since 1.0.0 + */ + private $dbPool = null; + + /** + * Constructor. + * + * @param \phpOMS\DataStorage\Database\Pool $dbPool Database pool instance + * + * @since 1.0.0 + * @author Dennis Eichhorn + */ + public function __construct($dbPool) + { + $this->dbPool = $dbPool; + } + + /** + * Get all departments. + * + * This function gets all accounts in a range + * + * @param array $filter Filter for search results + * @param \int $offset Offset for first account + * @param \int $limit Limit for results + * + * @return array + * + * @since 1.0.0 + * @author Dennis Eichhorn + */ + public function getList($filter = null, $offset = 0, $limit = 100) + { + $result = null; + + switch ($this->dbPool->get('core')->getType()) { + case DatabaseType::MYSQL: + $search = $this->dbPool->get('core')->generate_sql_filter($filter, true); + + $sth = $this->dbPool->get('core')->con->prepare('SELECT + `' . $this->dbPool->get('core')->prefix . 'hr_department`.* + FROM + `' . $this->dbPool->get('core')->prefix . 'hr_department` ' + . $search . 'LIMIT ' . $offset . ',' . $limit); + $sth->execute(); + + $result['list'] = $sth->fetchAll(); + + $sth = $this->dbPool->get('core')->con->prepare('SELECT FOUND_ROWS();'); + $sth->execute(); + + $result['count'] = $sth->fetchAll()[0][0]; + break; + } + + return $result; + } + + /** + * Get task stats. + * + * @return array + * + * @since 1.0.0 + * @author Dennis Eichhorn + */ + public function getStats() + { + } +} diff --git a/Models/Employee.php b/Models/Employee.php new file mode 100644 index 0000000..aa0c9f2 --- /dev/null +++ b/Models/Employee.php @@ -0,0 +1,124 @@ + + * @author Dennis Eichhorn + * @copyright 2013 Dennis Eichhorn + * @license OMS License 1.0 + * @version 1.0.0 + * @link http://orange-management.com + */ +namespace Modules\HumanResources\Models; + +use phpOMS\Models\User\User; +use phpOMS\Pattern\Multition; + +/** + * Employee class. + * + * @category HumanResources + * @package Framework + * @author OMS Development Team + * @author Dennis Eichhorn + * @license OMS License 1.0 + * @link http://orange-management.com + * @since 1.0.0 + */ +class Employee implements Multition +{ + + /** + * Employee ID. + * + * @var \int + * @since 1.0.0 + */ + private $id = null; + + /** + * User. + * + * @var User + * @since 1.0.0 + */ + private $user = null; + + private static $instances = []; + + public function __construct($id) + { + } + + public function getInstance($id) + { + if (!isset(self::$instances[$id])) { + self::$instances[$id] = new self($id); + } + + return self::$instances[$id]; + } + + /** + * {@inheritdoc} + */ + public function init($id) + { + } + + /** + * {@inheritdoc} + */ + public function __clone() + { + } + + public function setUser($id) + { + $this->user = new User($id); + } + + /** + * {@inheritdoc} + */ + public function serialize() + { + // TODO: Implement serialize() method. + } + + /** + * {@inheritdoc} + */ + public function unserialize($serialized) + { + // TODO: Implement unserialize() method. + } + + /** + * {@inheritdoc} + */ + public function delete() + { + // TODO: Implement delete() method. + } + + /** + * {@inheritdoc} + */ + public function create() + { + // TODO: Implement create() method. + } + + /** + * {@inheritdoc} + */ + public function update() + { + // TODO: Implement update() method. + } +} diff --git a/Models/PositionType.php b/Models/PositionType.php new file mode 100644 index 0000000..b63a984 --- /dev/null +++ b/Models/PositionType.php @@ -0,0 +1,48 @@ + + * @author Dennis Eichhorn + * @copyright 2013 Dennis Eichhorn + * @license OMS License 1.0 + * @version 1.0.0 + * @link http://orange-management.com + */ +namespace Modules\HumanResources\Models; + +use phpOMS\Datatypes\Enum; + +/** + * Position type enum. + * + * @category Module + * @package Modules\HumanResources + * @author OMS Development Team + * @author Dennis Eichhorn + * @license OMS License 1.0 + * @link http://orange-management.com + * @since 1.0.0 + */ +abstract class PositionType extends Enum +{ + const INTERN = 0; + + const APPRENTICE = 1; + + const JUNIOR = 2; + + const REGULAR = 3; + + const SENIOR = 4; + + const ASSISTANT = 5; + + const TEAMLEADER = 6; + + const HEAD = 7; +} diff --git a/Models/StaffList.php b/Models/StaffList.php new file mode 100644 index 0000000..fbe77ed --- /dev/null +++ b/Models/StaffList.php @@ -0,0 +1,107 @@ + + * @author Dennis Eichhorn + * @copyright 2013 Dennis Eichhorn + * @license OMS License 1.0 + * @version 1.0.0 + * @link http://orange-management.com + */ +namespace Modules\HumanResources\Models; + +use phpOMS\DataStorage\Database\DatabaseType; + +/** + * Staff list class. + * + * @category Modules + * @package HumanResources + * @author OMS Development Team + * @author Dennis Eichhorn + * @license OMS License 1.0 + * @link http://orange-management.com + * @since 1.0.0 + */ +class StaffList +{ + + /** + * Database instance. + * + * @var \phpOMS\DataStorage\Database\Database + * @since 1.0.0 + */ + private $dbPool = null; + + /** + * Constructor. + * + * @param \phpOMS\DataStorage\Database\Pool $dbPool Database pool instance + * + * @since 1.0.0 + * @author Dennis Eichhorn + */ + public function __construct($dbPool) + { + $this->dbPool = $dbPool; + } + + /** + * Get all staff members. + * + * This function gets all accounts in a range + * + * @param array $filter Filter for search results + * @param \int $offset Offset for first account + * @param \int $limit Limit for results + * + * @return array + * + * @since 1.0.0 + * @author Dennis Eichhorn + */ + public function getList($filter = null, $offset = 0, $limit = 100) + { + $result = null; + + switch ($this->dbPool->get('core')->getType()) { + case DatabaseType::MYSQL: + $search = $this->dbPool->get('core')->generate_sql_filter($filter, true); + + $sth = $this->dbPool->get('core')->con->prepare('SELECT + `' . $this->dbPool->get('core')->prefix . 'hr_staff`.* + FROM + `' . $this->dbPool->get('core')->prefix . 'hr_staff` ' + . $search . 'LIMIT ' . $offset . ',' . $limit); + $sth->execute(); + + $result['list'] = $sth->fetchAll(); + + $sth = $this->dbPool->get('core')->con->prepare('SELECT FOUND_ROWS();'); + $sth->execute(); + + $result['count'] = $sth->fetchAll()[0][0]; + break; + } + + return $result; + } + + /** + * Get task stats. + * + * @return array + * + * @since 1.0.0 + * @author Dennis Eichhorn + */ + public function getStats() + { + } +} diff --git a/README.md b/README.md new file mode 100644 index 0000000..6e0c2ca --- /dev/null +++ b/README.md @@ -0,0 +1 @@ +# Human Resources # diff --git a/Theme/backend/department-create.tpl.php b/Theme/backend/department-create.tpl.php new file mode 100644 index 0000000..e69de29 diff --git a/Theme/backend/department-list.tpl.php b/Theme/backend/department-list.tpl.php new file mode 100644 index 0000000..e69de29 diff --git a/Theme/backend/department-single.tpl.php b/Theme/backend/department-single.tpl.php new file mode 100644 index 0000000..e69de29 diff --git a/Theme/backend/planning-dashboard.tpl.php b/Theme/backend/planning-dashboard.tpl.php new file mode 100644 index 0000000..ae63f7e --- /dev/null +++ b/Theme/backend/planning-dashboard.tpl.php @@ -0,0 +1,98 @@ +
+

app->accountManager->get($request->getAccount())->getL11n()->lang['HumanResourceManagement']['Vacation'] ?>

+ +
+
+ +
+ + + + + + + +
+ asldkf +
+ asldkf +
+ asldkf +
+ asldkf +
+ asldkf +
+ + +
+
+ +
+

app->accountManager->get($request->getAccount())->getL11n()->lang['HumanResourceManagement']['Shifts'] ?>

+ +
+
+ +
+ + + + + + + +
+ asldkf +
+ asldkf +
+ asldkf +
+ asldkf +
+ asldkf +
+ + +
+
+ +
+

app->accountManager->get($request->getAccount())->getL11n()->lang['HumanResourceManagement']['Personnel'] ?>

+ +
+
+ +
+ + + + + + + +
+ asldkf +
+ asldkf +
+ asldkf +
+ asldkf +
+ asldkf +
+ + +
+
diff --git a/Theme/backend/position-create.tpl.php b/Theme/backend/position-create.tpl.php new file mode 100644 index 0000000..e69de29 diff --git a/Theme/backend/position-list.tpl.php b/Theme/backend/position-list.tpl.php new file mode 100644 index 0000000..e69de29 diff --git a/Theme/backend/position-single.tpl.php b/Theme/backend/position-single.tpl.php new file mode 100644 index 0000000..e69de29 diff --git a/Theme/backend/staff-create.tpl.php b/Theme/backend/staff-create.tpl.php new file mode 100644 index 0000000..ac22ab8 --- /dev/null +++ b/Theme/backend/staff-create.tpl.php @@ -0,0 +1,16 @@ + + * @author Dennis Eichhorn + * @copyright 2013 Dennis Eichhorn + * @license OMS License 1.0 + * @version 1.0.0 + * @link http://orange-management.com + */ +echo $this->getData('nav')->render(); ?> diff --git a/Theme/backend/staff-list.tpl.php b/Theme/backend/staff-list.tpl.php new file mode 100644 index 0000000..601945b --- /dev/null +++ b/Theme/backend/staff-list.tpl.php @@ -0,0 +1,54 @@ + + * @author Dennis Eichhorn + * @copyright 2013 Dennis Eichhorn + * @license OMS License 1.0 + * @version 1.0.0 + * @link http://orange-management.com + */ +/** + * @var \phpOMS\Views\View $this + */ + +$footerView = new \Web\Views\Lists\PaginationView($this->app, $this->request, $this->response); +$footerView->setTemplate('/Web/Templates/Lists/Footer/PaginationBig'); + +$footerView->setPages(1 / 25); +$footerView->setPage(1); +$footerView->setResults(1); + +echo $this->getData('nav')->render(); ?> + +
+ + + + + + + $value) : $c++; + $url = \phpOMS\Uri\UriFactory::build('/{/lang}/backend/admin/group/settings?id=' . $value->getId()); ?> + +
l11n->lang['HumanResourceManagement']['Staff']; ?>
l11n->lang[0]['ID']; ?> + l11n->lang['HumanResourceManagement']['Name']; ?> + l11n->lang['HumanResourceManagement']['Department']; ?> + l11n->lang['HumanResourceManagement']['Status']; ?> +
render(); ?> +
getId(); ?> + getName(); ?> + + + + + +
l11n->lang[0]['Empty']; ?> + +
+
diff --git a/Theme/backend/staff-single.tpl.php b/Theme/backend/staff-single.tpl.php new file mode 100644 index 0000000..ac22ab8 --- /dev/null +++ b/Theme/backend/staff-single.tpl.php @@ -0,0 +1,16 @@ + + * @author Dennis Eichhorn + * @copyright 2013 Dennis Eichhorn + * @license OMS License 1.0 + * @version 1.0.0 + * @link http://orange-management.com + */ +echo $this->getData('nav')->render(); ?> diff --git a/Theme/lang/backend.en.lang.php b/Theme/lang/backend.en.lang.php new file mode 100644 index 0000000..6c5918f --- /dev/null +++ b/Theme/lang/backend.en.lang.php @@ -0,0 +1,27 @@ + + * @author Dennis Eichhorn + * @copyright 2013 Dennis Eichhorn + * @license OMS License 1.0 + * @version 1.0.0 + * @link http://orange-management.com + */ +$MODLANG['HumanResourceManagement'] = [ + 'Department' => 'Department', + 'Departments' => 'Departments', + 'Employees' => 'Employees', + 'Name' => 'Name', + 'Parent' => 'Parent', + 'Personnel' => 'Personnel', + 'Shifts' => 'Shifts', + 'Staff' => 'Staff', + 'Status' => 'Status', + 'Vacation' => 'Vacation', +]; diff --git a/Theme/lang/nav.backend.en.lang.php b/Theme/lang/nav.backend.en.lang.php new file mode 100644 index 0000000..572764c --- /dev/null +++ b/Theme/lang/nav.backend.en.lang.php @@ -0,0 +1,27 @@ + + * @author Dennis Eichhorn + * @copyright 2013 Dennis Eichhorn + * @license OMS License 1.0 + * @version 1.0.0 + * @link http://orange-management.com + */ +$MODLANG['Navigation'] = [ + 'Departments' => 'Departments', + 'Employees' => 'Employees', + 'HumanResources' => 'Human Resources', + 'HumanResourceManagement' => 'Human Resources', + 'List' => 'List', + 'Planning' => 'Planning', + 'Positions' => 'Positions', + 'Shifts' => 'Shifts', + 'Staff' => 'Staff', + 'Structure' => 'Structure', +]; diff --git a/img/module_teaser_small.png b/img/module_teaser_small.png new file mode 100644 index 0000000000000000000000000000000000000000..f56e6ff1a61ca4a08413260cacbe116605782baa GIT binary patch literal 49511 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