432 lines
13 KiB
PHP
432 lines
13 KiB
PHP
<?php
|
|
declare(strict_types = 1);
|
|
|
|
require_once dirname(__FILE__, 5) . '/test/lib/test.class.php';
|
|
|
|
class stakeholderModelTest extends baseTest
|
|
{
|
|
protected $moduleName = 'stakeholder';
|
|
protected $className = 'model';
|
|
|
|
/**
|
|
* 创建一个干系人。
|
|
* Create a stakeholder.
|
|
*
|
|
* @param array $params
|
|
* @access public
|
|
* @return array|object
|
|
*/
|
|
public function createTest(array $params= array()): array|object
|
|
{
|
|
$defaultFields = array('from' => '', 'key' => 0, 'user' => '', 'name' => '', 'phone' => '', 'qq' => '', 'weixin' => '', 'objectType' => 'project', 'objectID' => 0,
|
|
'email' => '', 'company' => 0, 'nature' => '', 'analysis' => '', 'strategy' => '', 'newUser' => '', 'newCompany' => '', 'companyName' => '', '');
|
|
|
|
$data = new stdclass();
|
|
foreach($defaultFields as $field => $defaultValue) $data->{$field} = $defaultValue;
|
|
foreach($params as $key => $value) $data->{$key} = $value;
|
|
|
|
$stakeholderID = $this->instance->create($data);
|
|
|
|
if(dao::isError()) return dao::getError();
|
|
return $this->instance->dao->select('*')->from(TABLE_STAKEHOLDER)->where('id')->eq($stakeholderID)->fetch();
|
|
}
|
|
|
|
/**
|
|
* 批量创建项目的干系人。
|
|
* Batch create stakeholders for a project.
|
|
*
|
|
* @param int $projectID
|
|
* @param array $account
|
|
* @access public
|
|
* @return array
|
|
*/
|
|
public function batchCreateTest(int $projectID, array $accounts = array()): array
|
|
{
|
|
$stakeholderList = $this->instance->batchCreate($projectID, $accounts);
|
|
|
|
if(dao::isError()) return dao::getError();
|
|
return $stakeholderList;
|
|
}
|
|
|
|
/**
|
|
* 编辑一个干系人。
|
|
* Edit a stakeholder.
|
|
*
|
|
* @param int $stakeholderID
|
|
* @param array $params
|
|
* @access public
|
|
* @return array|bool
|
|
*/
|
|
public function editTest($stakeholderID, $params = array()): array|bool
|
|
{
|
|
$postData = new stdclass();
|
|
$defaultField = array('key' => 0, 'nature' => '', 'analysis' => '', 'strategy' => '', 'name' => '', 'phone' => '', 'qq' => '', 'weixin' => '', 'email' => '');
|
|
foreach($defaultField as $field => $defaultValue) $postData->{$field} = $defaultValue;
|
|
foreach($params as $key => $value) $postData->{$key} = $value;
|
|
|
|
$changes = $this->instance->edit($stakeholderID, $postData);
|
|
|
|
if(dao::isError()) return dao::getError();
|
|
return $changes;
|
|
}
|
|
|
|
/**
|
|
* 获取干系人列表数据。
|
|
* Get stakeholder list.
|
|
*
|
|
* @param int $projectID
|
|
* @param string $browseType all|inside|outside|key
|
|
* @param string $sort
|
|
* @access public
|
|
* @return array
|
|
*/
|
|
public function getStakeholdersTest(int $projectID, string $browseType, string $sort): array
|
|
{
|
|
$stakeholders = $this->instance->getStakeholders($projectID, $browseType, $sort);
|
|
|
|
if(dao::isError()) return dao::getError();
|
|
return $stakeholders;
|
|
}
|
|
|
|
/**
|
|
* 更新/插入用户信息。
|
|
* Update/insert user info.
|
|
*
|
|
* @param array $params
|
|
* @access public
|
|
* @return array|object
|
|
*/
|
|
public function replaceUserInfoTest($params = array()): array|object
|
|
{
|
|
$defaultFields = array('from' => '', 'key' => 0, 'user' => '', 'name' => '', 'phone' => '', 'qq' => '', 'weixin' => '',
|
|
'email' => '', 'company' => 0, 'nature' => '', 'analysis' => '', 'strategy' => '', 'newUser' => '', 'newCompany' => '', 'companyName' => '');
|
|
|
|
$data = new stdclass();
|
|
foreach($defaultFields as $field => $defaultValue) $data->{$field} = $defaultValue;
|
|
foreach($params as $key => $value) $data->{$key} = $value;
|
|
|
|
$account = $this->instance->replaceUserInfo($data);
|
|
|
|
if(dao::isError()) return dao::getError();
|
|
return $this->instance->dao->select('*')->from(TABLE_USER)->where('account')->eq($account)->fetch();
|
|
}
|
|
|
|
/**
|
|
* 获取干系人account => realname键值对。
|
|
* Get the stakeholder account => realname key-value pair.
|
|
*
|
|
* @param int $objectID
|
|
* @access public
|
|
* @return array
|
|
*/
|
|
public function getStakeHolderPairsTest(int $objectID): array
|
|
{
|
|
$stakeholderPairs = $this->instance->getStakeHolderPairs($objectID);
|
|
|
|
if(dao::isError()) return dao::getError();
|
|
return $stakeholderPairs;
|
|
}
|
|
|
|
/**
|
|
* 获取干系人信息。
|
|
* Get stakeholder by id.
|
|
*
|
|
* @param int $stakeholderID
|
|
* @access public
|
|
* @return array|object|bool
|
|
*/
|
|
public function getByIDTest(int $stakeholderID): array|object|bool
|
|
{
|
|
$stakeholder = $this->instance->getByID($stakeholderID);
|
|
|
|
if(dao::isError()) return dao::getError();
|
|
return $stakeholder;
|
|
}
|
|
|
|
/**
|
|
* 获取给定用户ID的期望信息。
|
|
* Get the expect information by user ID.
|
|
*
|
|
* @param int $userID
|
|
* @access public
|
|
* @return array
|
|
*/
|
|
public function getExpectByUserTest(int $userID): array
|
|
{
|
|
$expects = $this->instance->getExpectByUser($userID);
|
|
|
|
if(dao::isError()) return dao::getError();
|
|
return $expects;
|
|
}
|
|
|
|
/**
|
|
* 添加一条期望记录。
|
|
* Add a expect record.
|
|
*
|
|
* @param array $data
|
|
* @access public
|
|
* @return array|object
|
|
*/
|
|
public function expectTest(array $data): array|object
|
|
{
|
|
$defaultFields = array('userID' => 1, 'project' => 11, 'createdBy' => 'admin', 'createdDate' => date('Y-m-d'), 'expect' => '', 'progress' => '');
|
|
$expectData = new stdclass();
|
|
foreach($defaultFields as $field => $defaultValue) $expectData->{$field} = $defaultValue;
|
|
foreach($data as $key => $value) $expectData->{$key} = $value;
|
|
|
|
$expectID = $this->instance->expect($expectData);
|
|
|
|
if(dao::isError()) return dao::getError();
|
|
return $this->instance->dao->select('*')->from(TABLE_EXPECT)->where('id')->eq($expectID)->fetch();
|
|
}
|
|
|
|
/**
|
|
* 获取按照对象ID分组的干系人列表。
|
|
* Get stakeholder group by object id.
|
|
*
|
|
* @param array $objectIdList
|
|
* @access public
|
|
* @return array
|
|
*/
|
|
public function getStakeholderGroupTest(array $objectIdList): array
|
|
{
|
|
$stakeholderGroup = $this->instance->getStakeholderGroup($objectIdList);
|
|
|
|
if(dao::isError()) return dao::getError();
|
|
return $stakeholderGroup;
|
|
}
|
|
|
|
/**
|
|
* 获取父项目集/父项目的干系人列表。
|
|
* Get the stakeholder list for the parent program / parent project.
|
|
*
|
|
* @param array $objectIdList
|
|
* @access public
|
|
* @return array
|
|
*/
|
|
public function getParentStakeholderGroupTest(array $objectIdList): array
|
|
{
|
|
$stakeholderGroup = $this->instance->getParentStakeholderGroup($objectIdList);
|
|
|
|
if(dao::isError()) return dao::getError();
|
|
return $stakeholderGroup;
|
|
}
|
|
|
|
/**
|
|
* 获取项目按照人员类型分组的干系人列表。
|
|
* Get stakeholder group by type.
|
|
*
|
|
* @param int $projectID
|
|
* @access public
|
|
* @return array
|
|
*/
|
|
public function getListByTypeTest(int $projectID): array
|
|
{
|
|
global $tester;
|
|
$tester->session->set('project', $projectID);
|
|
$stakeholderGroup = $this->instance->getListByType();
|
|
|
|
if(dao::isError()) return dao::getError();
|
|
return $stakeholderGroup;
|
|
}
|
|
|
|
/**
|
|
* 获取项目按照进度分组的活动列表。
|
|
* Get group activities.
|
|
*
|
|
* @param int $projectID
|
|
* @access public
|
|
* @return array
|
|
*/
|
|
public function getProcessGroupTest(int $projectID): array
|
|
{
|
|
global $tester;
|
|
$tester->session->set('project', $projectID);
|
|
$processGroup = $this->instance->getProcessGroup();
|
|
|
|
if(dao::isError()) return dao::getError();
|
|
return $processGroup;
|
|
}
|
|
|
|
/**
|
|
* 获取进度id=>name的键值对。
|
|
* Get the key-value pair of progress id=>name.
|
|
*
|
|
* @access public
|
|
* @return array
|
|
*/
|
|
public function getProcessTest(): array
|
|
{
|
|
$processPairs = $this->instance->getProcess();
|
|
|
|
if(dao::isError()) return dao::getError();
|
|
return $processPairs;
|
|
}
|
|
|
|
/**
|
|
* 获取项目的干预列表信息。
|
|
* Get intervention list.
|
|
*
|
|
* @param int $projectID
|
|
* @access public
|
|
* @return array
|
|
*/
|
|
public function getPlansTest(int $projectID): array
|
|
{
|
|
global $tester;
|
|
$tester->session->set('project', $projectID);
|
|
$plans = $this->instance->getPlans();
|
|
|
|
if(dao::isError()) return dao::getError();
|
|
return $plans;
|
|
}
|
|
|
|
/**
|
|
* 获取项目下干系人提出的问题列表。
|
|
* Get a list of issues owner by stakeholders under the project.
|
|
*
|
|
* @param int $projectID
|
|
* @access public
|
|
* @return array
|
|
*/
|
|
public function getIssuesTest(int $projectID): array
|
|
{
|
|
global $tester;
|
|
$tester->session->set('project', $projectID);
|
|
$issues = $this->instance->getIssues();
|
|
|
|
if(dao::isError()) return dao::getError();
|
|
return $issues;
|
|
}
|
|
|
|
/**
|
|
* 获取活动 id=>name 的键值对。
|
|
* Get the key-value pair for the activity id=>name.
|
|
*
|
|
* @access public
|
|
* @return array
|
|
*/
|
|
public function getActivitiesTest(): array
|
|
{
|
|
$activityPairs = $this->instance->getActivities();
|
|
|
|
if(dao::isError()) return dao::getError();
|
|
return $activityPairs;
|
|
}
|
|
|
|
/**
|
|
* 获取期望列表数据。
|
|
* Get expect list.
|
|
*
|
|
* @param int $projectID
|
|
* @param string $browseType all|bysearch
|
|
* @param int $queryID
|
|
* @param string $orderBy
|
|
* @access public
|
|
* @return array
|
|
*/
|
|
public function getExpectListTest(int $projectID, string $browseType = 'all', int $queryID = 0, string $orderBy = 'id_desc'): array
|
|
{
|
|
global $tester;
|
|
$tester->session->set('project', $projectID);
|
|
$expects = $this->instance->getExpectList($browseType, $queryID, $orderBy);
|
|
|
|
if(dao::isError()) return dao::getError();
|
|
return $expects;
|
|
}
|
|
|
|
/**
|
|
* 删除一个期望。
|
|
* Delete a expect.
|
|
*
|
|
* @param int $expectID
|
|
* @access public
|
|
* @return object|array|bool
|
|
*/
|
|
public function deleteExpectTest(int $expectID): object|array|bool
|
|
{
|
|
if($expectID <= 0) return false;
|
|
|
|
$oldExpected = $this->instance->dao->select('*')->from(TABLE_EXPECT)->where('id')->eq($expectID)->fetch();
|
|
if(!$oldExpected) return false;
|
|
|
|
$result = $this->instance->deleteExpect($expectID);
|
|
|
|
if(dao::isError()) return dao::getError();
|
|
|
|
$newExpected = $this->instance->dao->select('*')->from(TABLE_EXPECT)->where('id')->eq($expectID)->fetch();
|
|
return $newExpected ? $newExpected : false;
|
|
}
|
|
|
|
/**
|
|
* 获取项目下干系人field=>realname的键值对。
|
|
* Get a key-value pair for stakeholder field=>realname under the project.
|
|
*
|
|
* @param int $projectID
|
|
* @param string $field
|
|
* @access public
|
|
* @return array
|
|
*/
|
|
public function getStakeholderUsersTest(int $projectID, string $field = 'id'): array
|
|
{
|
|
global $tester;
|
|
$tester->session->set('project', $projectID);
|
|
$stakeholderUsers = $this->instance->getStakeholderUsers($field);
|
|
|
|
if(dao::isError()) return dao::getError();
|
|
return $stakeholderUsers;
|
|
}
|
|
|
|
/**
|
|
* 通过ID获取期望详情。
|
|
* Get expect detail by ID.
|
|
*
|
|
* @param int $expectID
|
|
* @access public
|
|
* @return array|object|bool
|
|
*/
|
|
public function getExpectByIDTest(int $expectID): array|object|bool
|
|
{
|
|
$expect = $this->instance->getExpectByID($expectID);
|
|
|
|
if(dao::isError()) return dao::getError();
|
|
return $expect;
|
|
}
|
|
|
|
/**
|
|
* 获取给定干系人在当前项目下的问题信息。
|
|
* Get the issue information by account.
|
|
*
|
|
* @param int $projectID
|
|
* @param string $account
|
|
* @access public
|
|
* @return array
|
|
*/
|
|
public function getStakeholderIssueTest(int $projectID, string $account): array
|
|
{
|
|
global $tester;
|
|
$tester->session->set('project', $projectID);
|
|
$issues = $this->instance->getStakeholderIssue($account);
|
|
|
|
if(dao::isError()) return dao::getError();
|
|
return $issues;
|
|
}
|
|
|
|
/**
|
|
* 判断当前操作按钮是否可以点击。
|
|
* Judge the action is clickable.
|
|
*
|
|
* @param int $stakeholderID
|
|
* @param string $action
|
|
* @access public
|
|
* @return bool
|
|
*/
|
|
public function isClickableTest(int $stakeholderID, string $action): bool
|
|
{
|
|
$stakeholder = $this->instance->dao->select('*')->from(TABLE_STAKEHOLDER)->where('id')->eq($stakeholderID)->fetch();
|
|
if(!$stakeholder) $stakeholder = new stdclass();
|
|
|
|
return $this->instance->isClickable($stakeholder, $action);
|
|
}
|
|
}
|