* Finish task #40113.

This commit is contained in:
Yagami
2021-07-13 13:37:44 +08:00
parent dafebe5d95
commit 7ef07b30ba
2 changed files with 25 additions and 7 deletions
+1 -1
View File
@@ -103,7 +103,7 @@ class stakeholder extends control
{
if($_POST)
{
$stakeholderList = $this->stakeholder->batchCreate();
$stakeholderList = $this->stakeholder->batchCreate($projectID);
if($this->viewType == 'json') $this->send(array('result' => 'success', 'message' => $this->lang->saveSuccess, 'idList' => $stakeholderList));
die(js::locate($this->createLink('stakeholder', 'browse', "projectID=$projectID"), 'parent'));
}
+24 -6
View File
@@ -95,6 +95,17 @@ class stakeholderModel extends model
if(!dao::isError())
{
$this->loadModel('user')->updateUserView($stakeholder->objectID, $stakeholder->objectType, $stakeholder->user);
/* Update linked products view. */
if($stakeholder->objectType == 'project' and $stakeholder->objectID)
{
$products = $this->loadModel('product')->getProductPairsByProject($stakeholder->objectID);
if(!empty($products))
{
foreach($products as $productID => $productName) $this->user->updateUserView($productID, 'product', $stakeholder->user);
}
}
return $stakeholderID;
}
return false;
@@ -106,15 +117,15 @@ class stakeholderModel extends model
* @access public
* @return array
*/
public function batchCreate()
public function batchCreate($projectID)
{
$this->loadModel('action');
$data = (array)fixer::input('post')->get();
$members = $this->loadModel('user')->getTeamMemberPairs($this->session->project, 'project');
$members = $this->loadModel('user')->getTeamMemberPairs($projectID, 'project');
$accounts = array_unique($data['accounts']);
$oldJoin = $this->dao->select('`user`, createdDate')->from(TABLE_STAKEHOLDER)->where('objectID')->eq((int)$this->session->project)->andWhere('objectType')->eq('project')->fetchPairs();
$this->dao->delete()->from(TABLE_STAKEHOLDER)->where('objectID')->eq((int)$this->session->project)->andWhere('objectType')->eq('project')->exec();
$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();
$stakeholderList = array();
foreach($accounts as $key => $account)
@@ -122,7 +133,7 @@ class stakeholderModel extends model
if(empty($account)) continue;
$stakeholder = new stdclass();
$stakeholder->objectID = $this->session->project;
$stakeholder->objectID = $projectID;
$stakeholder->objectType = 'project';
$stakeholder->user = $account;
$stakeholder->type = in_array($account, array_keys($members)) ? 'inside' : 'outside';
@@ -142,7 +153,14 @@ class stakeholderModel extends model
$changedAccounts = array_merge($changedAccounts, array_diff($oldAccounts, $accounts));
$changedAccounts = array_unique($changedAccounts);
$this->loadModel('user')->updateUserView($this->session->project, 'project', $changedAccounts);
$this->loadModel('user')->updateUserView($projectID, 'project', $changedAccounts);
/* Update linked products view. */
$products = $this->loadModel('product')->getProductPairsByProject($projectID);
if(!empty($products))
{
foreach($products as $productID => $productName) $this->user->updateUserView($productID, 'product', $changedAccounts);
}
return $stakeholderList;
}