Latest updates from IceHrmPro
This commit is contained in:
101
core/src/Employees/Admin/Api/EmployeeUtil.php
Normal file
101
core/src/Employees/Admin/Api/EmployeeUtil.php
Normal file
@@ -0,0 +1,101 @@
|
||||
<?php
|
||||
namespace Employees\Admin\Api;
|
||||
|
||||
use Classes\BaseService;
|
||||
|
||||
class EmployeeUtil
|
||||
{
|
||||
public function getEmployeeDataField($employeeId, $startDate, $endDate, $field)
|
||||
{
|
||||
$employee = BaseService::getInstance()->getElement(
|
||||
'Employee',
|
||||
$employeeId,
|
||||
$this->getMapping(),
|
||||
true
|
||||
);
|
||||
return [
|
||||
'string',
|
||||
$employee->$field
|
||||
];
|
||||
}
|
||||
|
||||
public function getMapping()
|
||||
{
|
||||
$mapping = <<<JSON
|
||||
{
|
||||
"nationality":[
|
||||
"Nationality",
|
||||
"id",
|
||||
"name"
|
||||
],
|
||||
"ethnicity":[
|
||||
"Ethnicity",
|
||||
"id",
|
||||
"name"
|
||||
],
|
||||
"immigration_status":[
|
||||
"ImmigrationStatus",
|
||||
"id",
|
||||
"name"
|
||||
],
|
||||
"employment_status":[
|
||||
"EmploymentStatus",
|
||||
"id",
|
||||
"name"
|
||||
],
|
||||
"job_title":[
|
||||
"JobTitle",
|
||||
"id",
|
||||
"name"
|
||||
],
|
||||
"pay_grade":[
|
||||
"PayGrade",
|
||||
"id",
|
||||
"name"
|
||||
],
|
||||
"country":[
|
||||
"Country",
|
||||
"code",
|
||||
"name"
|
||||
],
|
||||
"province":[
|
||||
"Province",
|
||||
"id",
|
||||
"name"
|
||||
],
|
||||
"department":[
|
||||
"CompanyStructure",
|
||||
"id",
|
||||
"title"
|
||||
],
|
||||
"supervisor":[
|
||||
"Employee",
|
||||
"id",
|
||||
"first_name+last_name"
|
||||
],
|
||||
"indirect_supervisors":[
|
||||
"Employee",
|
||||
"id",
|
||||
"first_name+last_name"
|
||||
],
|
||||
"approver1":[
|
||||
"Employee",
|
||||
"id",
|
||||
"first_name+last_name"
|
||||
],
|
||||
"approver2":[
|
||||
"Employee",
|
||||
"id",
|
||||
"first_name+last_name"
|
||||
],
|
||||
"approver3":[
|
||||
"Employee",
|
||||
"id",
|
||||
"first_name+last_name"
|
||||
]
|
||||
}
|
||||
JSON;
|
||||
|
||||
return $mapping;
|
||||
}
|
||||
}
|
||||
@@ -25,6 +25,7 @@ use Salary\Common\Model\EmployeeSalary;
|
||||
use TimeSheets\Common\Model\EmployeeTimeEntry;
|
||||
use TimeSheets\Common\Model\EmployeeTimeSheet;
|
||||
use Travel\Common\Model\EmployeeTravelRecord;
|
||||
use Utils\LogManager;
|
||||
|
||||
class EmployeesActionManager extends SubActionManager
|
||||
{
|
||||
@@ -63,7 +64,6 @@ class EmployeesActionManager extends SubActionManager
|
||||
|
||||
$employee->termination_date = null;
|
||||
$employee->status = 'Active';
|
||||
|
||||
$ok = $employee->Save();
|
||||
if (!$ok) {
|
||||
return new IceResponse(IceResponse::ERROR, "Error occurred while activating employee");
|
||||
@@ -113,7 +113,13 @@ class EmployeesActionManager extends SubActionManager
|
||||
|
||||
$data->timesheets = $this->getEmployeeData($employee->id, new EmployeeTimeSheet());
|
||||
$data->timesheetEntries = $this->getEmployeeData($employee->id, new EmployeeTimeEntry());
|
||||
$data->attendance = $this->getEmployeeData($employee->id, new Attendance());
|
||||
|
||||
$attendnace = $this->getEmployeeData($employee->id, new Attendance());
|
||||
$data->attendance = array_map(function ($item) {
|
||||
$item->image_in = '';
|
||||
$item->image_out = '';
|
||||
}, $attendnace);
|
||||
|
||||
if (class_exists('\Documents\Common\Model\EmployeeDocument')) {
|
||||
$data->documents = $this->getEmployeeData($employee->id, new \Documents\Common\Model\EmployeeDocument());
|
||||
}
|
||||
@@ -131,12 +137,14 @@ class EmployeesActionManager extends SubActionManager
|
||||
|
||||
$ok = $archived->Save();
|
||||
if (!$ok) {
|
||||
LogManager::getInstance()->error('Error occurred while archiving employee :'.$archived->ErrorMsg());
|
||||
return new IceResponse(IceResponse::ERROR, "Error occurred while archiving employee");
|
||||
}
|
||||
|
||||
|
||||
$ok = $employee->Delete();
|
||||
if (!$ok) {
|
||||
LogManager::getInstance()->error('Error occurred while deleting employee :'.$employee->ErrorMsg());
|
||||
return new IceResponse(IceResponse::ERROR, "Error occurred while deleting employee");
|
||||
}
|
||||
|
||||
|
||||
@@ -9,6 +9,7 @@
|
||||
namespace Employees\Admin\Api;
|
||||
|
||||
use Classes\AbstractModuleManager;
|
||||
use Classes\Macaw;
|
||||
use Classes\UIManager;
|
||||
use Employees\Common\Model\Employee;
|
||||
use Employees\Rest\EmployeeRestEndPoint;
|
||||
@@ -26,32 +27,32 @@ class EmployeesAdminManager extends AbstractModuleManager
|
||||
|
||||
public function setupRestEndPoints()
|
||||
{
|
||||
\Classes\Macaw::get(REST_API_PATH.'employees/me', function () {
|
||||
Macaw::get(REST_API_PATH.'employees/me', function () {
|
||||
$empRestEndPoint = new EmployeeRestEndPoint();
|
||||
$empRestEndPoint->process('get', 'me');
|
||||
});
|
||||
|
||||
\Classes\Macaw::get(REST_API_PATH.'employees/(:num)', function ($pathParams) {
|
||||
Macaw::get(REST_API_PATH.'employees/(:num)', function ($pathParams) {
|
||||
$empRestEndPoint = new EmployeeRestEndPoint();
|
||||
$empRestEndPoint->process('get', $pathParams);
|
||||
});
|
||||
|
||||
\Classes\Macaw::get(REST_API_PATH.'employees', function () {
|
||||
Macaw::get(REST_API_PATH.'employees', function () {
|
||||
$empRestEndPoint = new EmployeeRestEndPoint();
|
||||
$empRestEndPoint->process('listAll');
|
||||
});
|
||||
|
||||
\Classes\Macaw::post(REST_API_PATH.'employees', function () {
|
||||
Macaw::post(REST_API_PATH.'employees', function () {
|
||||
$empRestEndPoint = new EmployeeRestEndPoint();
|
||||
$empRestEndPoint->process('post');
|
||||
});
|
||||
|
||||
\Classes\Macaw::put(REST_API_PATH.'employees/(:num)', function ($pathParams) {
|
||||
Macaw::put(REST_API_PATH.'employees/(:num)', function ($pathParams) {
|
||||
$empRestEndPoint = new EmployeeRestEndPoint();
|
||||
$empRestEndPoint->process('put', $pathParams);
|
||||
});
|
||||
|
||||
\Classes\Macaw::delete(REST_API_PATH.'employees/(:num)', function ($pathParams) {
|
||||
Macaw::delete(REST_API_PATH.'employees/(:num)', function ($pathParams) {
|
||||
$empRestEndPoint = new EmployeeRestEndPoint();
|
||||
$empRestEndPoint->process('delete', $pathParams);
|
||||
});
|
||||
@@ -86,16 +87,26 @@ class EmployeesAdminManager extends AbstractModuleManager
|
||||
public function initQuickAccessMenu()
|
||||
{
|
||||
UIManager::getInstance()->addQuickAccessMenuItem(
|
||||
"View Employees",
|
||||
"fa-users",
|
||||
CLIENT_BASE_URL."?g=admin&n=employees&m=admin_Employees",
|
||||
array("Admin","Manager")
|
||||
'View Employees',
|
||||
'fa-users',
|
||||
CLIENT_BASE_URL.'?g=admin&n=employees&m=admin_Employees',
|
||||
array('Admin','Manager')
|
||||
);
|
||||
UIManager::getInstance()->addQuickAccessMenuItem(
|
||||
"Add a New Employee",
|
||||
"fa-edit",
|
||||
CLIENT_BASE_URL."?g=admin&n=employees&m=admin_Employees&action=new",
|
||||
array("Admin")
|
||||
'Add a New Employee',
|
||||
'fa-edit',
|
||||
CLIENT_BASE_URL.'?g=admin&n=employees&m=admin_Employees&action=new',
|
||||
array('Admin')
|
||||
);
|
||||
}
|
||||
|
||||
public function initCalculationHooks()
|
||||
{
|
||||
$this->addCalculationHook(
|
||||
'EmployeeData_getFieldValue',
|
||||
'Get Employee Data',
|
||||
EmployeeUtil::class,
|
||||
'getEmployeeDataField'
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
<?php
|
||||
namespace Employees\Common\Model;
|
||||
|
||||
use Classes\ModuleAccess;
|
||||
use Model\BaseModel;
|
||||
|
||||
class ArchivedEmployee extends BaseModel
|
||||
@@ -31,5 +32,12 @@ class ArchivedEmployee extends BaseModel
|
||||
return "id";
|
||||
}
|
||||
|
||||
public function getModuleAccess()
|
||||
{
|
||||
return [
|
||||
new ModuleAccess('employees', 'admin'),
|
||||
];
|
||||
}
|
||||
|
||||
public $table = 'ArchivedEmployees';
|
||||
}
|
||||
|
||||
@@ -4,6 +4,7 @@ namespace Employees\Common\Model;
|
||||
use Classes\BaseService;
|
||||
use Classes\FileService;
|
||||
use Classes\IceResponse;
|
||||
use Classes\ModuleAccess;
|
||||
use Company\Common\Model\CompanyStructure;
|
||||
use Metadata\Common\Model\Country;
|
||||
use Model\BaseModel;
|
||||
@@ -235,5 +236,13 @@ class Employee extends BaseModel
|
||||
return $country->id;
|
||||
}
|
||||
|
||||
public function getModuleAccess()
|
||||
{
|
||||
return [
|
||||
new ModuleAccess('employees', 'admin'),
|
||||
new ModuleAccess('employees', 'user'),
|
||||
];
|
||||
}
|
||||
|
||||
public $table = 'Employees';
|
||||
}
|
||||
|
||||
@@ -8,6 +8,7 @@
|
||||
|
||||
namespace Employees\Common\Model;
|
||||
|
||||
use Classes\ModuleAccess;
|
||||
use Model\BaseModel;
|
||||
|
||||
class EmployeeApproval extends BaseModel
|
||||
@@ -29,4 +30,12 @@ class EmployeeApproval extends BaseModel
|
||||
{
|
||||
return array();
|
||||
}
|
||||
|
||||
public function getModuleAccess()
|
||||
{
|
||||
return [
|
||||
new ModuleAccess('employees', 'admin'),
|
||||
new ModuleAccess('employees', 'user'),
|
||||
];
|
||||
}
|
||||
}
|
||||
|
||||
@@ -8,6 +8,7 @@
|
||||
|
||||
namespace Employees\Common\Model;
|
||||
|
||||
use Classes\ModuleAccess;
|
||||
use Model\BaseModel;
|
||||
|
||||
class EmploymentStatus extends BaseModel
|
||||
@@ -24,4 +25,12 @@ class EmploymentStatus extends BaseModel
|
||||
{
|
||||
return array("get","element","save");
|
||||
}
|
||||
|
||||
public function getModuleAccess()
|
||||
{
|
||||
return [
|
||||
new ModuleAccess('employees', 'admin'),
|
||||
new ModuleAccess('employees', 'user'),
|
||||
];
|
||||
}
|
||||
}
|
||||
|
||||
@@ -24,12 +24,35 @@ class EmployeeRestEndPoint extends RestEndPoint
|
||||
{
|
||||
$query = new DataQuery('Employee');
|
||||
|
||||
$mapping = <<<JSON
|
||||
{
|
||||
"job_title": [ "JobTitle", "id", "name" ],
|
||||
"country": [ "Country", "code", "name" ],
|
||||
"province": [ "Province", "id", "name" ],
|
||||
"department": [ "CompanyStructure", "id", "title" ],
|
||||
"supervisor": [ "Employee", "id", "first_name+last_name" ]
|
||||
}
|
||||
JSON;
|
||||
$query->setFieldMapping($mapping);
|
||||
|
||||
$limit = self::DEFAULT_LIMIT;
|
||||
if (isset($_GET['limit']) && intval($_GET['limit']) > 0) {
|
||||
$limit = intval($_GET['limit']);
|
||||
}
|
||||
$query->setLength($limit);
|
||||
|
||||
if (!empty($_GET['filters'])) {
|
||||
$query->setFilters($_GET['filters']);
|
||||
}
|
||||
|
||||
if (isset($_GET['sortField']) && !empty($_GET['sortField'])) {
|
||||
$query->setSortColumn($_GET['sortField']);
|
||||
$query->setSortingEnabled(true);
|
||||
$query->setSortOrder(
|
||||
empty($_GET['sortOrder']) || $_GET['sortOrder'] === 'ascend' ? 'ASC' : 'DESC'
|
||||
);
|
||||
}
|
||||
|
||||
if ($user->user_level !== 'Admin') {
|
||||
$query->setIsSubOrdinates(true);
|
||||
}
|
||||
@@ -55,27 +78,36 @@ class EmployeeRestEndPoint extends RestEndPoint
|
||||
return new IceResponse(IceResponse::ERROR, "Permission denied", 403);
|
||||
}
|
||||
|
||||
$mapping = [
|
||||
"nationality" => ["Nationality","id","name"],
|
||||
"ethnicity" => ["Ethnicity","id","name"],
|
||||
"immigration_status" => ["ImmigrationStatus","id","name"],
|
||||
"employment_status" => ["EmploymentStatus","id","name"],
|
||||
"job_title" => ["JobTitle","id","name"],
|
||||
"pay_grade" => ["PayGrade","id","name"],
|
||||
"country" => ["Country","code","name"],
|
||||
"province" => ["Province","id","name"],
|
||||
"department" => ["CompanyStructure","id","title"],
|
||||
"supervisor" => [self::ELEMENT_NAME,"id","first_name+last_name"],
|
||||
];
|
||||
// https://csvjson.com/json_beautifier
|
||||
|
||||
|
||||
$mapping = <<<JSON
|
||||
{
|
||||
"nationality": [ "Nationality", "id", "name" ],
|
||||
"ethnicity": [ "Ethnicity", "id", "name" ],
|
||||
"immigration_status": [ "ImmigrationStatus", "id", "name" ],
|
||||
"employment_status": [ "EmploymentStatus", "id", "name" ],
|
||||
"job_title": [ "JobTitle", "id", "name" ],
|
||||
"pay_grade": [ "PayGrade", "id", "name" ],
|
||||
"country": [ "Country", "code", "name" ],
|
||||
"province": [ "Province", "id", "name" ],
|
||||
"department": [ "CompanyStructure", "id", "title" ],
|
||||
"supervisor": [ "Employee", "id", "first_name+last_name" ],
|
||||
"indirect_supervisors": [ "Employee", "id", "first_name+last_name" ],
|
||||
"approver1": [ "Employee", "id", "first_name+last_name" ],
|
||||
"approver2": [ "Employee", "id", "first_name+last_name" ],
|
||||
"approver3": [ "Employee", "id", "first_name+last_name" ]
|
||||
}
|
||||
JSON;
|
||||
|
||||
$emp = BaseService::getInstance()->getElement(
|
||||
self::ELEMENT_NAME,
|
||||
$parameter,
|
||||
json_encode($mapping),
|
||||
null,
|
||||
true
|
||||
);
|
||||
|
||||
$emp = $this->enrichElement($emp, $mapping);
|
||||
$emp = $this->enrichElement($emp, json_decode($mapping, true));
|
||||
//Get User for the employee
|
||||
$user = new User();
|
||||
$user->Load('employee = ?', [$emp->id]);
|
||||
|
||||
@@ -11,11 +11,13 @@ namespace Employees\User\Api;
|
||||
use Classes\BaseService;
|
||||
use Classes\FileService;
|
||||
use Classes\IceResponse;
|
||||
use Classes\PasswordManager;
|
||||
use Classes\SettingsManager;
|
||||
use Classes\SubActionManager;
|
||||
use Company\Common\Model\CompanyStructure;
|
||||
use Employees\Common\Model\Employee;
|
||||
use Users\Common\Model\User;
|
||||
use Utils\LogManager;
|
||||
|
||||
class EmployeesActionManager extends SubActionManager
|
||||
{
|
||||
@@ -104,6 +106,7 @@ class EmployeesActionManager extends SubActionManager
|
||||
try {
|
||||
$employee = BaseService::getInstance()->customFieldManager->enrichObjectCustomFields('Employee', $employee);
|
||||
} catch (\Exception $e) {
|
||||
LogManager::getInstance()->notifyException($e);
|
||||
}
|
||||
|
||||
if (empty($employee->id)) {
|
||||
@@ -143,11 +146,18 @@ class EmployeesActionManager extends SubActionManager
|
||||
if (empty($user->id)) {
|
||||
return new IceResponse(IceResponse::ERROR, "Error occurred while changing password");
|
||||
}
|
||||
$user->password = md5($req->pwd);
|
||||
|
||||
$passwordStrengthResponse = PasswordManager::isQualifiedPassword($req->pwd);
|
||||
if ($passwordStrengthResponse->getStatus() === IceResponse::ERROR) {
|
||||
return $passwordStrengthResponse;
|
||||
}
|
||||
|
||||
$user->password = PasswordManager::createPasswordHash($req->pwd);
|
||||
$ok = $user->Save();
|
||||
if (!$ok) {
|
||||
return new IceResponse(IceResponse::ERROR, $user->ErrorMsg());
|
||||
}
|
||||
|
||||
return new IceResponse(IceResponse::SUCCESS, $user);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user