mirror of
https://github.com/Karaka-Management/oms-HumanResourceManagement.git
synced 2026-02-12 02:48:40 +00:00
prepare for timerecording module
This commit is contained in:
parent
114d01964b
commit
d55ccb853a
|
|
@ -9,17 +9,28 @@
|
||||||
"primary": true,
|
"primary": true,
|
||||||
"autoincrement": true
|
"autoincrement": true
|
||||||
},
|
},
|
||||||
"hr_staff_account": {
|
"hr_staff_profile": {
|
||||||
"name": "hr_staff_account",
|
"name": "hr_staff_profile",
|
||||||
"type": "INT",
|
"type": "INT",
|
||||||
"null": false,
|
"null": false,
|
||||||
"foreignTable": "account",
|
"foreignTable": "profile_account",
|
||||||
"foreignKey": "account_id"
|
"foreignKey": "profile_account_id"
|
||||||
},
|
},
|
||||||
"hr_staff_smiPHash": {
|
"hr_staff_smiPHash": {
|
||||||
"name": "hr_staff_smiPHash",
|
"name": "hr_staff_smiPHash",
|
||||||
"type": "VARCHAR(256)",
|
"type": "VARBINARY(255)",
|
||||||
"null": false
|
"null": false
|
||||||
|
},
|
||||||
|
"hr_staff_image": {
|
||||||
|
"name": "hr_staff_image",
|
||||||
|
"type": "INT",
|
||||||
|
"default": null,
|
||||||
|
"null": true,
|
||||||
|
"foreignTable": "media",
|
||||||
|
"foreignKey": "media_id",
|
||||||
|
"annotations": {
|
||||||
|
"gdpr": true
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
|
||||||
|
|
@ -19,7 +19,6 @@ use Modules\HumanResourceManagement\Models\EmployeeMapper;
|
||||||
use Modules\HumanResourceManagement\Models\EmployeeHistory;
|
use Modules\HumanResourceManagement\Models\EmployeeHistory;
|
||||||
use Modules\HumanResourceManagement\Models\EmployeeHistoryMapper;
|
use Modules\HumanResourceManagement\Models\EmployeeHistoryMapper;
|
||||||
|
|
||||||
use phpOMS\Localization\ISO639x1Enum;
|
|
||||||
use phpOMS\Message\NotificationLevel;
|
use phpOMS\Message\NotificationLevel;
|
||||||
use phpOMS\Message\RequestAbstract;
|
use phpOMS\Message\RequestAbstract;
|
||||||
use phpOMS\Message\ResponseAbstract;
|
use phpOMS\Message\ResponseAbstract;
|
||||||
|
|
@ -53,7 +52,7 @@ final class ApiController extends Controller
|
||||||
*/
|
*/
|
||||||
public function apiEmployeeCreate(RequestAbstract $request, ResponseAbstract $response, $data = null) : void
|
public function apiEmployeeCreate(RequestAbstract $request, ResponseAbstract $response, $data = null) : void
|
||||||
{
|
{
|
||||||
if ($request->getData('accounts') !== null) {
|
if ($request->getData('profiles') !== null) {
|
||||||
$this->apiEmployeeFromAccountCreate($request, $response, $data);
|
$this->apiEmployeeFromAccountCreate($request, $response, $data);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -87,7 +86,7 @@ final class ApiController extends Controller
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Validate employee from account create request
|
* Validate employee from profile create request
|
||||||
*
|
*
|
||||||
* @param RequestAbstract $request Request
|
* @param RequestAbstract $request Request
|
||||||
*
|
*
|
||||||
|
|
@ -98,7 +97,7 @@ final class ApiController extends Controller
|
||||||
private function validateEmployeeFromAccountCreate(RequestAbstract $request) : array
|
private function validateEmployeeFromAccountCreate(RequestAbstract $request) : array
|
||||||
{
|
{
|
||||||
$val = [];
|
$val = [];
|
||||||
if (($val['account'] = empty($request->getData('account')))) {
|
if (($val['profile'] = empty($request->getData('profiles')))) {
|
||||||
return $val;
|
return $val;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -106,7 +105,7 @@ final class ApiController extends Controller
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Method to create employee from account from request.
|
* Method to create employee from profile from request.
|
||||||
*
|
*
|
||||||
* @param RequestAbstract $request Request
|
* @param RequestAbstract $request Request
|
||||||
*
|
*
|
||||||
|
|
@ -116,7 +115,7 @@ final class ApiController extends Controller
|
||||||
*/
|
*/
|
||||||
private function createEmployeeFromAccountFromRequest(RequestAbstract $request) : array
|
private function createEmployeeFromAccountFromRequest(RequestAbstract $request) : array
|
||||||
{
|
{
|
||||||
$accounts = $request->getData('cc') ?? [];
|
$accounts = $request->getData('profiles') ?? [];
|
||||||
if (!\is_array($accounts)) {
|
if (!\is_array($accounts)) {
|
||||||
$accounts = [$accounts];
|
$accounts = [$accounts];
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -14,6 +14,7 @@ declare(strict_types=1);
|
||||||
|
|
||||||
namespace Modules\HumanResourceManagement\Models;
|
namespace Modules\HumanResourceManagement\Models;
|
||||||
|
|
||||||
|
use Modules\Media\Models\NullMedia;
|
||||||
use phpOMS\Contract\ArrayableInterface;
|
use phpOMS\Contract\ArrayableInterface;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -43,6 +44,14 @@ class Employee implements ArrayableInterface, \JsonSerializable
|
||||||
*/
|
*/
|
||||||
private $profile = null;
|
private $profile = null;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Employee image.
|
||||||
|
*
|
||||||
|
* @var null|int|Media
|
||||||
|
* @since 1.0.0
|
||||||
|
*/
|
||||||
|
private $image = null;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Employee department/position history.
|
* Employee department/position history.
|
||||||
*
|
*
|
||||||
|
|
@ -88,7 +97,7 @@ class Employee implements ArrayableInterface, \JsonSerializable
|
||||||
/**
|
/**
|
||||||
* Constructor.
|
* Constructor.
|
||||||
*
|
*
|
||||||
* @param null|Profile $profile Account profile to initialize this employee with
|
* @param null|int|Profile $profile Account profile to initialize this employee with
|
||||||
*
|
*
|
||||||
* @since 1.0.0
|
* @since 1.0.0
|
||||||
*/
|
*/
|
||||||
|
|
@ -99,9 +108,9 @@ class Employee implements ArrayableInterface, \JsonSerializable
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get account id.
|
* Get id.
|
||||||
*
|
*
|
||||||
* @return int Account id
|
* @return int Employee id
|
||||||
*
|
*
|
||||||
* @since 1.0.0
|
* @since 1.0.0
|
||||||
*/
|
*/
|
||||||
|
|
@ -122,6 +131,32 @@ class Employee implements ArrayableInterface, \JsonSerializable
|
||||||
return $this->profile;
|
return $this->profile;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get image.
|
||||||
|
*
|
||||||
|
* @return int|Media
|
||||||
|
*
|
||||||
|
* @since 1.0.0
|
||||||
|
*/
|
||||||
|
public function getImage()
|
||||||
|
{
|
||||||
|
return $this->image ?? new NullMedia();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set image.
|
||||||
|
*
|
||||||
|
* @param null|int|Media $image Employee image
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*
|
||||||
|
* @since 1.0.0
|
||||||
|
*/
|
||||||
|
public function setImage($image) : void
|
||||||
|
{
|
||||||
|
$this->image = $image;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Update semi private hash.
|
* Update semi private hash.
|
||||||
*
|
*
|
||||||
|
|
|
||||||
|
|
@ -33,20 +33,43 @@ use phpOMS\Contract\ArrayableInterface;
|
||||||
*/
|
*/
|
||||||
class EmployeeHistory implements ArrayableInterface, \JsonSerializable
|
class EmployeeHistory implements ArrayableInterface, \JsonSerializable
|
||||||
{
|
{
|
||||||
private $id = 0;
|
/**
|
||||||
|
* ID.
|
||||||
|
*
|
||||||
|
* @var int
|
||||||
|
* @since 1.0.0
|
||||||
|
*/
|
||||||
|
protected int $id = 0;
|
||||||
|
|
||||||
private $employee = null;
|
private $employee = null;
|
||||||
|
|
||||||
private $unit = null;
|
private $unit = 0;
|
||||||
|
|
||||||
private $department = null;
|
private $department = 0;
|
||||||
|
|
||||||
private $position = null;
|
private $position = 0;
|
||||||
|
|
||||||
private $start = null;
|
private $start = null;
|
||||||
|
|
||||||
private $end = null;
|
private $end = null;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Constructor.
|
||||||
|
*
|
||||||
|
* @since 1.0.0
|
||||||
|
*/
|
||||||
|
public function __construct()
|
||||||
|
{
|
||||||
|
$this->start = new \DateTime('now');
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get id.
|
||||||
|
*
|
||||||
|
* @return int Model id
|
||||||
|
*
|
||||||
|
* @since 1.0.0
|
||||||
|
*/
|
||||||
public function getId() : int
|
public function getId() : int
|
||||||
{
|
{
|
||||||
return $this->id;
|
return $this->id;
|
||||||
|
|
|
||||||
|
|
@ -37,8 +37,9 @@ final class EmployeeMapper extends DataMapperAbstract
|
||||||
*/
|
*/
|
||||||
protected static array $columns = [
|
protected static array $columns = [
|
||||||
'hr_staff_id' => ['name' => 'hr_staff_id', 'type' => 'int', 'internal' => 'id'],
|
'hr_staff_id' => ['name' => 'hr_staff_id', 'type' => 'int', 'internal' => 'id'],
|
||||||
'hr_staff_account' => ['name' => 'hr_staff_account', 'type' => 'int', 'internal' => 'account'],
|
'hr_staff_profile' => ['name' => 'hr_staff_profile', 'type' => 'int', 'internal' => 'profile'],
|
||||||
'hr_staff_smiPHash' => ['name' => 'hr_staff_smiPHash', 'type' => 'string', 'internal' => 'semiPrivateHash'],
|
'hr_staff_smiPHash' => ['name' => 'hr_staff_smiPHash', 'type' => 'string', 'internal' => 'semiPrivateHash'],
|
||||||
|
'hr_staff_image' => ['name' => 'hr_staff_image', 'type' => 'int', 'internal' => 'image', 'annotations' => ['gdpr' => true]],
|
||||||
];
|
];
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -48,9 +49,9 @@ final class EmployeeMapper extends DataMapperAbstract
|
||||||
* @since 1.0.0
|
* @since 1.0.0
|
||||||
*/
|
*/
|
||||||
protected static array $belongsTo = [
|
protected static array $belongsTo = [
|
||||||
'account' => [
|
'profile' => [
|
||||||
'mapper' => ProfileMapper::class,
|
'mapper' => ProfileMapper::class,
|
||||||
'src' => 'hr_staff_account',
|
'src' => 'hr_staff_profile',
|
||||||
],
|
],
|
||||||
];
|
];
|
||||||
|
|
||||||
|
|
@ -61,7 +62,7 @@ final class EmployeeMapper extends DataMapperAbstract
|
||||||
* @since 1.0.0
|
* @since 1.0.0
|
||||||
*/
|
*/
|
||||||
protected static array $hasMany = [
|
protected static array $hasMany = [
|
||||||
'company' => [
|
'companyHistory' => [
|
||||||
'mapper' => EmployeeHistoryMapper::class,
|
'mapper' => EmployeeHistoryMapper::class,
|
||||||
'table' => 'hr_staff_history',
|
'table' => 'hr_staff_history',
|
||||||
'dst' => 'hr_staff_history_staff',
|
'dst' => 'hr_staff_history_staff',
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
<?php declare(strict_types=1);
|
<?php
|
||||||
/**
|
/**
|
||||||
* Orange Management
|
* Orange Management
|
||||||
*
|
*
|
||||||
|
|
@ -10,6 +10,8 @@
|
||||||
* @version 1.0.0
|
* @version 1.0.0
|
||||||
* @link https://orange-management.org
|
* @link https://orange-management.org
|
||||||
*/
|
*/
|
||||||
|
declare(strict_types=1);
|
||||||
|
|
||||||
return ['HumanResourceManagement' => [
|
return ['HumanResourceManagement' => [
|
||||||
'Account' => 'Account',
|
'Account' => 'Account',
|
||||||
'Active' => 'Active',
|
'Active' => 'Active',
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
<?php declare(strict_types=1);
|
<?php
|
||||||
/**
|
/**
|
||||||
* Orange Management
|
* Orange Management
|
||||||
*
|
*
|
||||||
|
|
@ -10,6 +10,8 @@
|
||||||
* @version 1.0.0
|
* @version 1.0.0
|
||||||
* @link https://orange-management.org
|
* @link https://orange-management.org
|
||||||
*/
|
*/
|
||||||
|
declare(strict_types=1);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @var \phpOMS\Views\View $this
|
* @var \phpOMS\Views\View $this
|
||||||
*/
|
*/
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
<?php declare(strict_types=1);
|
<?php
|
||||||
/**
|
/**
|
||||||
* Orange Management
|
* Orange Management
|
||||||
*
|
*
|
||||||
|
|
@ -10,6 +10,8 @@
|
||||||
* @version 1.0.0
|
* @version 1.0.0
|
||||||
* @link https://orange-management.org
|
* @link https://orange-management.org
|
||||||
*/
|
*/
|
||||||
|
declare(strict_types=1);
|
||||||
|
|
||||||
|
|
||||||
use \Modules\HumanResourceManagement\Models\EmployeeActivityStatus;
|
use \Modules\HumanResourceManagement\Models\EmployeeActivityStatus;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,7 @@
|
||||||
<?php declare(strict_types=1);
|
<?php declare(strict_types=1);
|
||||||
|
|
||||||
|
use Modules\HumanResourceManagement\Models\NullEmployeeHistory;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Orange Management
|
* Orange Management
|
||||||
*
|
*
|
||||||
|
|
@ -21,27 +24,31 @@ echo $this->getData('nav')->render(); ?>
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-xs-12">
|
<div class="col-xs-12">
|
||||||
<div class="box wf-100">
|
<div class="box wf-100">
|
||||||
<table class="default">
|
<table id="employeeList" class="default">
|
||||||
<caption><?= $this->getHtml('Staff') ?><i class="fa fa-download floatRight download btn"></i></caption>
|
<caption><?= $this->getHtml('Staff') ?><i class="fa fa-download floatRight download btn"></i></caption>
|
||||||
<thead>
|
<thead>
|
||||||
<tr>
|
<tr>
|
||||||
<td><?= $this->getHtml('ID', '0', '0'); ?>
|
<td><?= $this->getHtml('ID', '0', '0'); ?><i class="sort-asc fa fa-chevron-up"></i><i class="sort-desc fa fa-chevron-down"></i>
|
||||||
<td class="wf-100"><?= $this->getHtml('Name') ?>
|
<td class="wf-100"><?= $this->getHtml('Name') ?><i class="sort-asc fa fa-chevron-up"></i><i class="sort-desc fa fa-chevron-down"></i>
|
||||||
<td><?= $this->getHtml('Unit') ?>
|
<td><?= $this->getHtml('Unit') ?><i class="sort-asc fa fa-chevron-up"></i><i class="sort-desc fa fa-chevron-down"></i>
|
||||||
<td><?= $this->getHtml('Position') ?>
|
<td><?= $this->getHtml('Position') ?><i class="sort-asc fa fa-chevron-up"></i><i class="sort-desc fa fa-chevron-down"></i>
|
||||||
<td><?= $this->getHtml('Department') ?>
|
<td><?= $this->getHtml('Department') ?><i class="sort-asc fa fa-chevron-up"></i><i class="sort-desc fa fa-chevron-down"></i>
|
||||||
<td><?= $this->getHtml('Status') ?>
|
<td><?= $this->getHtml('Status') ?><i class="sort-asc fa fa-chevron-up"></i><i class="sort-desc fa fa-chevron-down"></i>
|
||||||
<tfoot>
|
<tfoot>
|
||||||
<tr><td colspan="5">
|
<tr><td colspan="6">
|
||||||
<tbody>
|
<tbody>
|
||||||
<?php $c = 0; foreach ($employees as $key => $value) : ++$c;
|
<?php $c = 0; foreach ($employees as $key => $value) : ++$c;
|
||||||
$url = \phpOMS\Uri\UriFactory::build('{/prefix}humanresource/staff/profile?{?}&id=' . $value->getId()); ?>
|
$url = \phpOMS\Uri\UriFactory::build('{/prefix}humanresource/staff/profile?{?}&id=' . $value->getId()); ?>
|
||||||
<tr data-href="<?= $url; ?>">
|
<tr data-href="<?= $url; ?>">
|
||||||
<td data-label="<?= $this->getHtml('ID', '0', '0') ?>"><a href="<?= $url; ?>"><?= $this->printHtml($value->getId()); ?></a>
|
<td data-label="<?= $this->getHtml('ID', '0', '0') ?>"><a href="<?= $url; ?>"><?= $this->printHtml($value->getId()); ?></a>
|
||||||
<td data-label="<?= $this->getHtml('Name') ?>"><a href="<?= $url; ?>"><?= $this->printHtml($value->getAccount()->getName1()); ?></a>
|
<td data-label="<?= $this->getHtml('Name') ?>"><a href="<?= $url; ?>"><?= $this->printHtml($value->getProfile()->getAccount()->getName1()); ?></a>
|
||||||
|
<td><?= $value->getNewestHistory()->getUnit()->getName(); ?>
|
||||||
|
<td><?= $value->getNewestHistory()->getPosition()->getName(); ?>
|
||||||
|
<td><?= $value->getNewestHistory()->getDepartment()->getName(); ?>
|
||||||
|
<td><?= !($value->getNewestHistory() instanceof NullEmployeeHistory) ? $this->getHtml('Active') : $this->getHtml('Inactive'); ?>
|
||||||
<?php endforeach; ?>
|
<?php endforeach; ?>
|
||||||
<?php if ($c === 0) : ?>
|
<?php if ($c === 0) : ?>
|
||||||
<tr><td colspan="5" class="empty"><?= $this->getHtml('Empty', '0', '0'); ?>
|
<tr><td colspan="6" class="empty"><?= $this->getHtml('Empty', '0', '0'); ?>
|
||||||
<?php endif; ?>
|
<?php endif; ?>
|
||||||
</table>
|
</table>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
<?php declare(strict_types=1);
|
<?php
|
||||||
/**
|
/**
|
||||||
* Orange Management
|
* Orange Management
|
||||||
*
|
*
|
||||||
|
|
@ -10,6 +10,11 @@
|
||||||
* @version 1.0.0
|
* @version 1.0.0
|
||||||
* @link https://orange-management.org
|
* @link https://orange-management.org
|
||||||
*/
|
*/
|
||||||
|
declare(strict_types=1);
|
||||||
|
|
||||||
|
|
||||||
|
use Modules\Media\Models\NullMedia;
|
||||||
|
use phpOMS\Uri\UriFactory;
|
||||||
|
|
||||||
$employee = $this->getData('employee');
|
$employee = $this->getData('employee');
|
||||||
$history = $employee->getHistorY();
|
$history = $employee->getHistorY();
|
||||||
|
|
@ -17,96 +22,195 @@ $recentHistory = $employee->getNewestHistory();
|
||||||
|
|
||||||
echo $this->getData('nav')->render(); ?>
|
echo $this->getData('nav')->render(); ?>
|
||||||
|
|
||||||
<div class="row">
|
<div class="tabview tab-2">
|
||||||
<div class="col-xs-12 col-md-6">
|
<div class="box wf-100 col-xs-12">
|
||||||
<section itemscope itemtype="http://schema.org/Person" class="box wf-100">
|
<ul class="tab-links">
|
||||||
<header><h1><span itemprop="familyName"><?= $this->printHtml($employee->getAccount()->getName3()); ?></span>, <span itemprop="givenName"><?= $this->printHtml($employee->getAccount()->getName1()); ?></span></h1></header>
|
<li><label for="c-tab-1"><?= $this->getHtml('General'); ?></label></li>
|
||||||
<div class="inner">
|
<li><label for="c-tab-2"><?= $this->getHtml('Clocking'); ?></label></li>
|
||||||
<!-- @formatter:off -->
|
<li><label for="c-tab-3"><?= $this->getHtml('Documents'); ?></label></li>
|
||||||
<table class="list">
|
<li><label for="c-tab-4"><?= $this->getHtml('Contracts'); ?></label></li>
|
||||||
<tr>
|
<li><label for="c-tab-5"><?= $this->getHtml('Remarks'); ?></label></li>
|
||||||
<th><?= $this->getHtml('Position') ?>
|
<li><label for="c-tab-6"><?= $this->getHtml('Evaluations'); ?></label></li>
|
||||||
<td itemprop="jobTitle"><?= $this->printHtml($recentHistory->getPosition()->getName()); ?>
|
<li><label for="c-tab-7"><?= $this->getHtml('Education'); ?></label></li>
|
||||||
<tr>
|
<li><label for="c-tab-8"><?= $this->getHtml('Work'); ?></label></li>
|
||||||
<th><?= $this->getHtml('Department') ?>
|
</ul>
|
||||||
<td itemprop="jobTitle"><?= $this->printHtml($recentHistory->getDepartment()->getName()); ?>
|
</div>
|
||||||
<tr>
|
<div class="tab-content">
|
||||||
<th><?= $this->getHtml('Unit') ?>
|
<input type="radio" id="c-tab-1" name="tabular-2" checked>
|
||||||
<td itemprop="jobTitle"><?= $this->printHtml($recentHistory->getUnit()->getName()); ?>
|
<div class="tab">
|
||||||
<tr>
|
<div class="row">
|
||||||
<th><?= $this->getHtml('Birthday') ?>
|
<div class="col-xs-12 col-md-6">
|
||||||
<td itemprop="birthDate">06.09.1934
|
<section itemscope itemtype="http://schema.org/Person" class="box wf-100">
|
||||||
<tr>
|
<header><h1><span itemprop="familyName"><?= $this->printHtml($employee->getProfile()->getAccount()->getName2()); ?></span>, <span itemprop="givenName"><?= $this->printHtml($employee->getProfile()->getAccount()->getName1()); ?></span></h1></header>
|
||||||
<th><?= $this->getHtml('Email') ?>
|
<div class="inner">
|
||||||
<td itemprop="email"><a href="mailto:>donald.duck@email.com<"><?= $this->printHtml($employee->getAccount()->getEmail()); ?></a>
|
<!-- @formatter:off -->
|
||||||
<tr>
|
<span class="rf">
|
||||||
<th>Address
|
<img class="m-profile rf"
|
||||||
<td>
|
alt="<?= $this->getHtml('ProfileImage'); ?>"
|
||||||
<tr>
|
itemprop="logo"
|
||||||
<th class="vT">Private
|
data-lazyload="<?=
|
||||||
<td itemprop="address">SMALLSYS INC<br>795 E DRAGRAM<br>TUCSON AZ 85705<br>USA
|
$employee->getImage() instanceof NullMedia ?
|
||||||
<tr>
|
$employee->getProfile()->getImage() instanceof NullMedia ?
|
||||||
<th class="vT">Work
|
UriFactory::build('Web/Backend/img/user_default_' . \mt_rand(1, 6) .'.png') :
|
||||||
<td itemprop="address">SMALLSYS INC<br>795 E DRAGRAM<br>TUCSON AZ 85705<br>USA
|
UriFactory::build('{/prefix}' . $employee->getProfile()->getImage()->getPath()) :
|
||||||
<tr>
|
UriFactory::build('{/prefix}' . $employee->getImage()->getPath()); ?>"
|
||||||
<th><?= $this->getHtml('Phone') ?>
|
>
|
||||||
<td>
|
</span>
|
||||||
<tr>
|
<table class="list">
|
||||||
<th>Private
|
<tr>
|
||||||
<td itemprop="telephone">+01 12345-4567
|
<th><?= $this->getHtml('Position') ?>
|
||||||
<tr>
|
<td itemprop="jobTitle"><?= $this->printHtml($recentHistory->getPosition()->getName()); ?>
|
||||||
<th>Mobile
|
<tr>
|
||||||
<td itemprop="telephone">+01 12345-4567
|
<th><?= $this->getHtml('Department') ?>
|
||||||
<tr>
|
<td itemprop="jobTitle"><?= $this->printHtml($recentHistory->getDepartment()->getName()); ?>
|
||||||
<th>Work
|
<tr>
|
||||||
<td itemprop="telephone">+01 12345-4567
|
<th><?= $this->getHtml('Unit') ?>
|
||||||
<tr>
|
<td itemprop="jobTitle"><?= $this->printHtml($recentHistory->getUnit()->getName()); ?>
|
||||||
<th><?= $this->getHtml('Status') ?>
|
<tr>
|
||||||
<td><span class="tag green"><?= $this->printHtml($employee->getAccount()->getStatus()); ?></span>
|
<th><?= $this->getHtml('Birthday') ?>
|
||||||
|
<td itemprop="birthDate">06.09.1934
|
||||||
|
<tr>
|
||||||
|
<th><?= $this->getHtml('Email') ?>
|
||||||
|
<td itemprop="email"><a href="mailto:<?= $this->printHtml($employee->getProfile()->getAccount()->getEmail()); ?>"><?= $this->printHtml($employee->getProfile()->getAccount()->getEmail()); ?></a>
|
||||||
|
<tr>
|
||||||
|
<th>Address
|
||||||
|
<td>
|
||||||
|
<tr>
|
||||||
|
<th class="vT">Private
|
||||||
|
<td itemprop="address">SMALLSYS INC<br>795 E DRAGRAM<br>TUCSON AZ 85705<br>USA
|
||||||
|
<tr>
|
||||||
|
<th class="vT">Work
|
||||||
|
<td itemprop="address">SMALLSYS INC<br>795 E DRAGRAM<br>TUCSON AZ 85705<br>USA
|
||||||
|
<tr>
|
||||||
|
<th><?= $this->getHtml('Phone') ?>
|
||||||
|
<td>
|
||||||
|
<tr>
|
||||||
|
<th>Private
|
||||||
|
<td itemprop="telephone">+01 12345-4567
|
||||||
|
<tr>
|
||||||
|
<th>Mobile
|
||||||
|
<td itemprop="telephone">+01 12345-4567
|
||||||
|
<tr>
|
||||||
|
<th>Work
|
||||||
|
<td itemprop="telephone">+01 12345-4567
|
||||||
|
<tr>
|
||||||
|
<th><?= $this->getHtml('Status') ?>
|
||||||
|
<td><span class="tag green"><?= !($recentHistory instanceof NullEmployeeHistory) ? $this->getHtml('Active') : $this->getHtml('Inactive'); ?></span>
|
||||||
|
</table>
|
||||||
|
<!-- @formatter:on -->
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-xs-12">
|
||||||
|
<div class="box wf-100 x-overflow">
|
||||||
|
<table id="historyList" class="default">
|
||||||
|
<caption><?= $this->getHtml('History') ?><i class="fa fa-download floatRight download btn"></i></caption>
|
||||||
|
<thead>
|
||||||
|
<td><?= $this->getHtml('Start') ?><i class="sort-asc fa fa-chevron-up"></i><i class="sort-desc fa fa-chevron-down"></i>
|
||||||
|
<td><?= $this->getHtml('End') ?><i class="sort-asc fa fa-chevron-up"></i><i class="sort-desc fa fa-chevron-down"></i>
|
||||||
|
<td><?= $this->getHtml('Unit') ?><i class="sort-asc fa fa-chevron-up"></i><i class="sort-desc fa fa-chevron-down"></i>
|
||||||
|
<td><?= $this->getHtml('Department') ?><i class="sort-asc fa fa-chevron-up"></i><i class="sort-desc fa fa-chevron-down"></i>
|
||||||
|
<td><?= $this->getHtml('Position') ?><i class="sort-asc fa fa-chevron-up"></i><i class="sort-desc fa fa-chevron-down"></i>
|
||||||
|
<tfoot>
|
||||||
|
<tbody>
|
||||||
|
<?php foreach ($history as $hist) : ?>
|
||||||
|
<tr><td><?= $hist->getStart()->format('Y-m-d'); ?>
|
||||||
|
<td><?= $hist->getEnd() === null ? '' : $hist->getEnd()->format('Y-m-d'); ?>
|
||||||
|
<td><?= $this->printHtml($hist->getUnit()->getName()); ?>
|
||||||
|
<td><?= $this->printHtml($hist->getDepartment()->getName()); ?>
|
||||||
|
<td><?= $this->printHtml($hist->getPosition()->getName()); ?>
|
||||||
|
<?php endforeach; ?>
|
||||||
</table>
|
</table>
|
||||||
<!-- @formatter:on -->
|
</div>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</section>
|
</div>
|
||||||
</div>
|
<input type="radio" id="c-tab-2" name="tabular-2">
|
||||||
|
<div class="tab">
|
||||||
<div class="col-xs-12 col-md-6">
|
<div class="row">
|
||||||
<section class="box wf-100">
|
<div class="col-xs-12">
|
||||||
<header><h1><?= $this->getHtml('Clocking') ?></h1></header>
|
<section class="box wf-100">
|
||||||
<div class="inner">
|
<header><h1><?= $this->getHtml('Clocking') ?></h1></header>
|
||||||
|
<div class="inner">
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</section>
|
</div>
|
||||||
</div>
|
<input type="radio" id="c-tab-3" name="tabular-2">
|
||||||
</div>
|
<div class="tab">
|
||||||
|
<div class="row">
|
||||||
<div class="row">
|
<div class="col-xs-12">
|
||||||
<div class="col-xs-12 col-md-6">
|
<section class="box wf-100">
|
||||||
<section class="box wf-100">
|
<header><h1><?= $this->getHtml('Clocking') ?></h1></header>
|
||||||
<header><h1><?= $this->getHtml('Clocking') ?></h1></header>
|
<div class="inner">
|
||||||
<div class="inner">
|
</div>
|
||||||
|
</section>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<input type="radio" id="c-tab-4" name="tabular-2">
|
||||||
|
<div class="tab">
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-xs-12">
|
||||||
|
<section class="box wf-100">
|
||||||
|
<header><h1><?= $this->getHtml('Clocking') ?></h1></header>
|
||||||
|
<div class="inner">
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<input type="radio" id="c-tab-5" name="tabular-2">
|
||||||
|
<div class="tab">
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-xs-12">
|
||||||
|
<section class="box wf-100">
|
||||||
|
<header><h1><?= $this->getHtml('Clocking') ?></h1></header>
|
||||||
|
<div class="inner">
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<input type="radio" id="c-tab-6" name="tabular-2">
|
||||||
|
<div class="tab">
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-xs-12">
|
||||||
|
<section class="box wf-100">
|
||||||
|
<header><h1><?= $this->getHtml('Clocking') ?></h1></header>
|
||||||
|
<div class="inner">
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<input type="radio" id="c-tab-7" name="tabular-2">
|
||||||
|
<div class="tab">
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-xs-12">
|
||||||
|
<section class="box wf-100">
|
||||||
|
<header><h1><?= $this->getHtml('Clocking') ?></h1></header>
|
||||||
|
<div class="inner">
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<input type="radio" id="c-tab-8" name="tabular-2">
|
||||||
|
<div class="tab">
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-xs-12">
|
||||||
|
<section class="box wf-100">
|
||||||
|
<header><h1><?= $this->getHtml('Clocking') ?></h1></header>
|
||||||
|
<div class="inner">
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</section>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="col-xs-12 col-md-6">
|
|
||||||
<div class="box wf-100 x-overflow">
|
|
||||||
<table id="taskList" class="default">
|
|
||||||
<caption><?= $this->getHtml('History') ?><i class="fa fa-download floatRight download btn"></i></caption>
|
|
||||||
<thead>
|
|
||||||
<td><?= $this->getHtml('Start') ?><i class="sort-asc fa fa-chevron-up"></i><i class="sort-desc fa fa-chevron-down"></i>
|
|
||||||
<td><?= $this->getHtml('End') ?><i class="sort-asc fa fa-chevron-up"></i><i class="sort-desc fa fa-chevron-down"></i>
|
|
||||||
<td><?= $this->getHtml('Unit') ?><i class="sort-asc fa fa-chevron-up"></i><i class="sort-desc fa fa-chevron-down"></i>
|
|
||||||
<td><?= $this->getHtml('Department') ?><i class="sort-asc fa fa-chevron-up"></i><i class="sort-desc fa fa-chevron-down"></i>
|
|
||||||
<td><?= $this->getHtml('Position') ?><i class="sort-asc fa fa-chevron-up"></i><i class="sort-desc fa fa-chevron-down"></i>
|
|
||||||
<tfoot>
|
|
||||||
<tbody>
|
|
||||||
<?php foreach ($history as $hist) : ?>
|
|
||||||
<tr><td><?= $hist->getStart()->format('Y-m-d'); ?>
|
|
||||||
<td><?= $hist->getEnd() === null ? '' : $hist->getEnd()->format('Y-m-d'); ?>
|
|
||||||
<td><?= $this->printHtml($hist->getUnit()->getName()); ?>
|
|
||||||
<td><?= $this->printHtml($hist->getDepartment()->getName()); ?>
|
|
||||||
<td><?= $this->printHtml($hist->getPosition()->getName()); ?>
|
|
||||||
<?php endforeach; ?>
|
|
||||||
</table>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
@ -18,10 +18,12 @@
|
||||||
"directory": "HumanResourceManagement",
|
"directory": "HumanResourceManagement",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"Admin": "1.0.0",
|
"Admin": "1.0.0",
|
||||||
"Organization": "1.0.0"
|
"Organization": "1.0.0",
|
||||||
|
"Media": "1.0.0"
|
||||||
},
|
},
|
||||||
"providing": {
|
"providing": {
|
||||||
"Navigation": "*"
|
"Navigation": "*",
|
||||||
|
"Media": "1.0.0"
|
||||||
},
|
},
|
||||||
"load": [
|
"load": [
|
||||||
{
|
{
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user