diff --git a/module/task/model.php b/module/task/model.php index 8ff37d470f..274eb5316f 100755 --- a/module/task/model.php +++ b/module/task/model.php @@ -759,6 +759,7 @@ class taskModel extends model * * @param object $oldTask * @param object $task + * @param array $team * @param bool $autoStatus * @access public * @return object|bool @@ -3675,7 +3676,7 @@ class taskModel extends model public function getAssignedTo4Multi($users, $task, $type = 'current') { if(empty($task->team)) return $task->assignedTo; - if($task->mode != 'linear') return $task->assignedTo; + if($task->mode != 'linear') return ''; $teamHours = array_values($task->team); diff --git a/test/class/task.class.php b/test/class/task.class.php index 31bbcc5090..65dcd28a4e 100644 --- a/test/class/task.class.php +++ b/test/class/task.class.php @@ -1378,25 +1378,33 @@ class taskTest } /** - * Test get next user. + * Test for get team by account. + * + * @param array $users + * @param string $account + * @param string $filter + * @access public + * @return string + */ + public function getTeamByAccount($users, $account, $filter = 'done') + { + $object = $this->objectModel->getTeamByAccount($users, $account, $filter); + if(empty($object)) return '_'; + return $object->account . '_' . $object->status; + } + + /** + * Test get assignedTo for multi task. * * @param array $users * @param string $current * @access public * @return string */ - public function getNextUserTest($users, $current) + public function getAssignedTo4Multi($users, $task, $type = 'current') { - $object = $this->objectModel->getNextUser($users, $current); - - if(dao::isError()) - { - return dao::getError(); - } - else - { - return $object; - } + $assignedTo = $this->objectModel->getAssignedTo4Multi($users, $task, $type); + return empty($assignedTo) ? 'null' : $assignedTo; } /** diff --git a/test/model/task/getassignedto4multi.php b/test/model/task/getassignedto4multi.php new file mode 100644 index 0000000000..33d25c382f --- /dev/null +++ b/test/model/task/getassignedto4multi.php @@ -0,0 +1,61 @@ +#!/usr/bin/env php +getAssignedTo4Multi(); +cid=1 +pid=1 + +获取非多人任务的指派给 >> admin +获取非串行多人任务的指派给 >> null +获取串行多人任务的指派给 >> admin +获取排除已经完成的串行多人任务的指派给 >> dev1 +获取串行多人任务的下一个指派给 >> admin +获取已经完成的串行多人任务的指派给 >> dev1 + +*/ + +$user = new stdclass(); +$user->account = 'admin'; +$user->status = 'wait'; +$user->order = '0'; +$users[] = $user; + +$user = new stdclass(); +$user->account = 'dev1'; +$user->status = 'wait'; +$user->order = '1'; +$users[] = $user; + +$user = new stdclass(); +$user->account = 'admin'; +$user->status = 'wait'; +$user->order = '2'; +$users[] = $user; + +$task = new stdclass(); +$task->mode = ''; +$task->openedBy = 'dev1'; +$task->assignedTo = 'admin'; + +$taskTest = new taskTest(); +r($taskTest->getAssignedTo4Multi($users, $task)) && p() && e('admin'); //获取非多人任务的指派给 + +$task->mode = 'multi'; +$task->team = $users; +r($taskTest->getAssignedTo4Multi($users, $task)) && p() && e('admin'); //获取非串行多人任务的指派给 + +$task->mode = 'linear'; +r($taskTest->getAssignedTo4Multi($users, $task)) && p() && e('admin'); //获取串行多人任务的指派给 + +$users[0]->status = 'done'; +r($taskTest->getAssignedTo4Multi($users, $task)) && p() && e('dev1'); //获取排除已经完成的串行多人任务的指派给 +r($taskTest->getAssignedTo4Multi($users, $task, 'next')) && p() && e('admin'); //获取串行多人任务的下一个指派给 + +$users[1]->status = 'done'; +$users[2]->status = 'done'; +r($taskTest->getAssignedTo4Multi($users, $task)) && p() && e('dev1'); //获取已经完成的串行多人任务的指派给 diff --git a/test/model/task/getnextuser.php b/test/model/task/getnextuser.php deleted file mode 100755 index ebcf5a92a5..0000000000 --- a/test/model/task/getnextuser.php +++ /dev/null @@ -1,32 +0,0 @@ -#!/usr/bin/env php -getDataOfTasksPerEstimate(); -cid=1 -pid=1 - -计算current为0的下一个用户 >> user1 -计算current为1的下一个用户 >> user2 -计算current为2的下一个用户 >> po1 -计算current为3的下一个用户 >> po2 -计算current为4的下一个用户 >> pm1 -计算current为5的下一个用户 >> pm2 -计算current为6的下一个用户 >> admin - -*/ - -$users = array('admin', 'user1', 'user2', 'po1', 'po2', 'pm1', 'pm2'); - -$task = new taskTest(); -r($task->getNextUserTest($users, $users[0])) && p() && e('user1'); //计算current为0的下一个用户 -r($task->getNextUserTest($users, $users[1])) && p() && e('user2'); //计算current为1的下一个用户 -r($task->getNextUserTest($users, $users[2])) && p() && e('po1'); //计算current为2的下一个用户 -r($task->getNextUserTest($users, $users[3])) && p() && e('po2'); //计算current为3的下一个用户 -r($task->getNextUserTest($users, $users[4])) && p() && e('pm1'); //计算current为4的下一个用户 -r($task->getNextUserTest($users, $users[5])) && p() && e('pm2'); //计算current为5的下一个用户 -r($task->getNextUserTest($users, $users[6])) && p() && e('admin'); //计算current为6的下一个用户 \ No newline at end of file diff --git a/test/model/task/getteambyaccount.php b/test/model/task/getteambyaccount.php new file mode 100644 index 0000000000..d9990380b9 --- /dev/null +++ b/test/model/task/getteambyaccount.php @@ -0,0 +1,49 @@ +#!/usr/bin/env php +getTeamByAccount(); +cid=1 +pid=1 + +获取未开始的指定账号的团队信息 >> admin_wait +获取进行中的指定账号的团队信息 >> admin_doing +过滤已完成的成员获取的指定账号的团队信息 >> admin_wait +不过滤已完成的成员获取的指定账号的团队信息 >> admin_done +获取的不存在账号 >> _ + +*/ + +$user = new stdclass(); +$user->account = 'admin'; +$user->status = 'wait'; +$user->order = '0'; +$users[] = $user; + +$user = new stdclass(); +$user->account = 'dev1'; +$user->status = 'wait'; +$user->order = '1'; +$users[] = $user; + +$user = new stdclass(); +$user->account = 'admin'; +$user->status = 'wait'; +$user->order = '2'; +$users[] = $user; + +$task = new taskTest(); +r($task->getTeamByAccount($users, 'admin')) && p() && e('admin_wait'); //获取未开始的指定账号的团队信息 + +$users[0]->status = 'doing'; +r($task->getTeamByAccount($users, 'admin')) && p() && e('admin_doing'); //获取进行中的指定账号的团队信息 + +$users[0]->status = 'done'; +r($task->getTeamByAccount($users, 'admin')) && p() && e('admin_wait'); //过滤已完成的成员获取的指定账号的团队信息 +r($task->getTeamByAccount($users, 'admin', '')) && p() && e('admin_done'); //不过滤已完成的成员获取的指定账号的团队信息 + +r($task->getTeamByAccount($users, 'dev')) && p() && e('_'); //获取的不存在账号