Latest updates from IceHrmPro

This commit is contained in:
Thilina Pituwala
2020-05-20 18:47:29 +02:00
parent 60c92d7935
commit 7453a58aad
18012 changed files with 2089245 additions and 10173 deletions

View 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;
}
}

View File

@@ -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");
}

View File

@@ -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'
);
}
}

View File

@@ -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';
}

View File

@@ -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';
}

View File

@@ -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'),
];
}
}

View File

@@ -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'),
];
}
}

View File

@@ -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]);

View File

@@ -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);
}
}