Refactor project structure

This commit is contained in:
Thilina Hasantha
2018-04-29 17:46:42 +02:00
parent 889baf124c
commit e3a7e18d9c
5513 changed files with 32 additions and 27 deletions

View File

@@ -0,0 +1,55 @@
<?php
/**
* Created by PhpStorm.
* User: Thilina
* Date: 8/19/17
* Time: 5:56 PM
*/
namespace Projects\Admin\Api;
use Classes\AbstractModuleManager;
use Classes\UIManager;
use Projects\Common\Model\Project;
class ProjectsAdminManager extends AbstractModuleManager
{
public function initializeUserClasses()
{
}
public function initializeFieldMappings()
{
}
public function initializeDatabaseErrorMappings()
{
$this->addDatabaseErrorMapping("key 'EmployeeProjectsKey'", "Employee already added to this project");
}
public function setupModuleClassDefinitions()
{
$this->addModelClass('Client');
$this->addModelClass('Project');
}
public function getDashboardItemData()
{
$data = array();
$project = new Project();
$data['numberOfProjects'] = $project->Count("status = 'Active'");
return $data;
}
public function initQuickAccessMenu()
{
UIManager::getInstance()->addQuickAccessMenuItem(
"Manage Client/Projects",
"fa-list-alt",
CLIENT_BASE_URL."?g=admin&n=projects&m=admin_Admin",
array("Admin","Manager")
);
}
}

View File

@@ -0,0 +1,30 @@
<?php
/**
* Created by PhpStorm.
* User: Thilina
* Date: 8/19/17
* Time: 5:53 PM
*/
namespace Projects\Common\Model;
use Model\BaseModel;
class Client extends BaseModel
{
public $table = 'Clients';
public function getAdminAccess()
{
return array("get","element","save","delete");
}
public function getManagerAccess()
{
return array("get","element","save","delete");
}
public function getUserAccess()
{
return array();
}
}

View File

@@ -0,0 +1,53 @@
<?php
/**
* Created by PhpStorm.
* User: Thilina
* Date: 8/19/17
* Time: 5:58 PM
*/
namespace Projects\Common\Model;
use Classes\IceResponse;
use Model\BaseModel;
class EmployeeProject extends BaseModel
{
public $table = 'EmployeeProjects';
public function getAdminAccess()
{
return array("get","element","save","delete");
}
public function getManagerAccess()
{
return array("get","element","save","delete");
}
public function getUserAccess()
{
return array("get");
}
public function getUserOnlyMeAccess()
{
return array("element","save","delete");
}
public function executePreSaveActions($obj)
{
if (empty($obj->status)) {
$obj->status = "Current";
}
return new IceResponse(IceResponse::SUCCESS, $obj);
}
public function executePreUpdateActions($obj)
{
if (empty($obj->status)) {
$obj->status = "Current";
}
return new IceResponse(IceResponse::SUCCESS, $obj);
}
}

View File

@@ -0,0 +1,85 @@
<?php
/**
* Created by PhpStorm.
* User: Thilina
* Date: 8/19/17
* Time: 5:54 PM
*/
namespace Projects\Common\Model;
use Classes\BaseService;
use Classes\SettingsManager;
use Model\BaseModel;
class Project extends BaseModel
{
public $table = 'Projects';
public function getAdminAccess()
{
return array("get","element","save","delete");
}
public function getManagerAccess()
{
return array("get","element","save","delete");
}
public function getUserAccess()
{
return array("get","element");
}
public function getAllProjects()
{
$employeeProjects = [];
$project = new Project();
$projects = $project->Find("status = ?", 'Active');
foreach ($projects as $project) {
$client = new Client();
$client->Load("id = ?", array($project->client));
$project->name = $project->name." (".$client->name.")";
$employeeProjects[] = $project;
}
return $employeeProjects;
}
public function getEmployeeProjects()
{
$allowAllProjects = SettingsManager::getInstance()->getSetting(
"Projects: Make All Projects Available to Employees"
);
$employeeProjects = array();
if ($allowAllProjects == 0) {
$employeeProjectsTemp = new EmployeeProject();
$employeeProjectsTemp = $employeeProjectsTemp->Find(
"employee = ?",
array(BaseService::getInstance()->getCurrentProfileId())
);
foreach ($employeeProjectsTemp as $p) {
$project = new Project();
$project->Load("id = ?", array($p->project));
if ($project->status == 'Active') {
$client = new Client();
$client->Load("id = ?", array($project->client));
$project->name = $project->name." (".$client->name.")";
$employeeProjects[] = $project;
}
}
} else {
$project = new Project();
$projects = $project->Find("status = ?", array('Active'));
foreach ($projects as $project) {
$client = new Client();
$client->Load("id = ?", array($project->client));
$project->name = $project->name." (".$client->name.")";
$employeeProjects[] = $project;
}
}
return $employeeProjects;
}
}

View File

@@ -0,0 +1,36 @@
<?php
/**
* Created by PhpStorm.
* User: Thilina
* Date: 8/19/17
* Time: 6:03 PM
*/
namespace Projects\User\Api;
use Classes\AbstractModuleManager;
class ProjectsModulesManager extends AbstractModuleManager
{
public function initializeUserClasses()
{
if (defined('MODULE_TYPE') && MODULE_TYPE != 'admin') {
$this->addUserClass("EmployeeProject");
}
}
public function initializeFieldMappings()
{
}
public function initializeDatabaseErrorMappings()
{
}
public function setupModuleClassDefinitions()
{
$this->addModelClass('EmployeeProject');
}
}