* Refactor stakeholder::batchCreate method.
This commit is contained in:
@@ -96,19 +96,22 @@ class stakeholder extends control
|
||||
}
|
||||
|
||||
/**
|
||||
* 批量创建干系人页面。
|
||||
* Batch create stakeholders.
|
||||
*
|
||||
* @param int $projectID
|
||||
* @param string $dept
|
||||
* @param string $dept
|
||||
* @param int $parentID
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function batchCreate($projectID, $dept = '', $parentID = 0)
|
||||
public function batchCreate(int $projectID, string $dept = '', int $parentID = 0)
|
||||
{
|
||||
if($_POST)
|
||||
{
|
||||
$stakeholderList = $this->stakeholder->batchCreate($projectID);
|
||||
$stakeholderList = $this->stakeholder->batchCreate($projectID, $_POST['accounts']);
|
||||
|
||||
if(dao::isError()) return $this->send(array('result' => 'fail', 'message' => dao::getError()));
|
||||
if($this->viewType == 'json') return $this->send(array('result' => 'success', 'message' => $this->lang->saveSuccess, 'idList' => $stakeholderList));
|
||||
return $this->send(array('result' => 'success', 'message' => $this->lang->saveSuccess, 'load' => $this->createLink('stakeholder', 'browse', "projectID=$projectID")));
|
||||
}
|
||||
@@ -122,16 +125,13 @@ class stakeholder extends control
|
||||
$this->loadModel('project')->setMenu($projectID);
|
||||
}
|
||||
|
||||
$this->loadModel('user');
|
||||
$this->loadModel('dept');
|
||||
$this->loadModel('execution');
|
||||
$deptUsers = $dept === '' ? array() : $this->dept->getDeptUserPairs($dept);
|
||||
|
||||
$this->view->title = $this->lang->stakeholder->batchCreate;
|
||||
|
||||
$this->view->title = $this->lang->stakeholder->batchCreate;
|
||||
$this->view->project = $this->loadModel('project')->getByID($this->session->project);
|
||||
$this->view->users = $this->user->getPairs('all|nodeleted|noclosed');
|
||||
$this->view->deptUsers = $deptUsers;
|
||||
$this->view->users = $this->loadModel('user')->getPairs('all|nodeleted|noclosed');
|
||||
$this->view->deptUsers = $dept === '' ? array() : $this->dept->getDeptUserPairs((int)$dept);
|
||||
$this->view->dept = $dept;
|
||||
$this->view->projectID = $projectID;
|
||||
$this->view->depts = $this->dept->getOptionMenu();
|
||||
|
||||
@@ -120,19 +120,20 @@ class stakeholderModel extends model
|
||||
}
|
||||
|
||||
/**
|
||||
* 批量创建项目的干系人。
|
||||
* Batch create stakeholders for a project.
|
||||
*
|
||||
* @param int $projectID
|
||||
* @param array $accounts
|
||||
* @access public
|
||||
* @return array
|
||||
*/
|
||||
public function batchCreate($projectID)
|
||||
public function batchCreate(int $projectID, array $accounts): array
|
||||
{
|
||||
$this->loadModel('action');
|
||||
$data = (array)fixer::input('post')->get();
|
||||
|
||||
$members = $this->loadModel('user')->getTeamMemberPairs($projectID, 'project');
|
||||
$accounts = array_unique($data['accounts']);
|
||||
$accounts = array_unique($accounts);
|
||||
$oldJoin = $this->dao->select('`user`, createdDate')->from(TABLE_STAKEHOLDER)->where('objectID')->eq($projectID)->andWhere('objectType')->eq('project')->fetchPairs();
|
||||
$this->dao->delete()->from(TABLE_STAKEHOLDER)->where('objectID')->eq($projectID)->andWhere('objectType')->eq('project')->exec();
|
||||
|
||||
@@ -148,7 +149,6 @@ class stakeholderModel extends model
|
||||
$stakeholder->type = in_array($account, array_keys($members)) ? 'inside' : 'outside';
|
||||
$stakeholder->createdBy = $this->app->user->account;
|
||||
$stakeholder->createdDate = isset($oldJoin[$account]) ? $oldJoin[$account] : helper::today();
|
||||
|
||||
$this->dao->insert(TABLE_STAKEHOLDER)->data($stakeholder)->exec();
|
||||
|
||||
$stakeholderID = $this->dao->lastInsertId();
|
||||
@@ -161,15 +161,13 @@ class stakeholderModel extends model
|
||||
$changedAccounts = array_diff($accounts, $oldAccounts);
|
||||
$changedAccounts = array_merge($changedAccounts, array_diff($oldAccounts, $accounts));
|
||||
$changedAccounts = array_unique($changedAccounts);
|
||||
|
||||
$this->loadModel('user')->updateUserView($projectID, 'project', $changedAccounts);
|
||||
|
||||
$this->loadModel('project')->updateInvolvedUserView($projectID, $changedAccounts);
|
||||
|
||||
if($stakeholder->objectType == 'program' and $stakeholder->objectID)
|
||||
if(!empty($accounts) && $stakeholder->objectType == 'program' && $stakeholder->objectID)
|
||||
{
|
||||
$programID = $stakeholder->objectID;
|
||||
/* Update children user view. */
|
||||
$programID = $stakeholder->objectID;
|
||||
$childPrograms = $this->dao->select('id')->from(TABLE_PROJECT)->where('path')->like("%,$programID,%")->andWhere('type')->eq('program')->fetchPairs();
|
||||
$childProjects = $this->dao->select('id')->from(TABLE_PROJECT)->where('path')->like("%,$programID,%")->andWhere('type')->eq('project')->fetchPairs();
|
||||
$childProducts = $this->dao->select('id')->from(TABLE_PRODUCT)->where('program')->eq($programID)->fetchPairs();
|
||||
|
||||
Reference in New Issue
Block a user