diff --git a/src/app/document/controllers/DocumentController.php b/src/app/document/controllers/DocumentController.php index 9b82b36705e60959e5e0411d32f2da350ebe98ef..8a03d9b4497024e9b689594d650e796abc089b80 100755 --- a/src/app/document/controllers/DocumentController.php +++ b/src/app/document/controllers/DocumentController.php @@ -1209,20 +1209,32 @@ class DocumentController } } } else { - $previousStepsUsers = array_column(WorkflowModel::get([ - 'select' => ['user_id'], - 'where' => ['main_document_id = ?', 'process_date is not null', 'status is not null'], - 'data' => [$args['id']] - ]), 'user_id'); - if (!empty($previousStepsUsers)) { - $previousStepsSubstitutes = array_column(UserModel::get([ + $circuitUsers = WorkflowModel::get([ + 'select' => ['user_id', '(process_date is not null) as processed'], + 'where' => ['main_document_id = ?'], + 'data' => [$args['id']], + 'orderBy' => ['"order" asc'] + ]); + $previousAndOneUsers = []; + foreach ($circuitUsers as $user) { + if ($user['processed']) { + $previousAndOneUsers[] = $user['user_id']; + continue; + } + $previousAndOneUsers[] = $user['user_id']; + break; + } + $circuitUsers = $previousAndOneUsers; + unset($previousAndOneUsers); + if (!empty($circuitUsers)) { + $circuitSubstitutes = array_column(UserModel::get([ 'select' => ['substitute'], - 'where' => ['id in (?)'], - 'data' => [$previousStepsUsers] + 'where' => ['substitute is not null', 'id in (?)'], + 'data' => [$circuitUsers] ]), 'substitute'); - $previousStepsUsers = array_unique(array_merge($previousStepsUsers, $previousStepsSubstitutes)); + $circuitUsers = array_merge($circuitUsers, $circuitSubstitutes); } - if (!empty($previousStepsUsers) && !in_array($args['userId'], $previousStepsUsers)) { + if (!in_array($args['userId'], $circuitUsers)) { return false; } } diff --git a/src/app/search/controllers/SearchController.php b/src/app/search/controllers/SearchController.php index ad1a750fc21c260868a1ba28211bec54403942d3..4f9d4c1c9b4b24c7238feec65aa2768d83d4d2e1 100755 --- a/src/app/search/controllers/SearchController.php +++ b/src/app/search/controllers/SearchController.php @@ -44,13 +44,8 @@ class SearchController $users[] = $value['id']; } - $workflowSelect = 'SELECT main_document_id FROM workflows ws1 WHERE user_id IN (?) AND id IN ( - SELECT id FROM workflows ws2 - WHERE ws1.main_document_id = ws2.main_document_id - ORDER BY "order" - LIMIT 1)'; - $where = ["(id IN ({$workflowSelect}) OR typist = ?)"]; - $data = [$users, $GLOBALS['id']]; + $where = ["(id IN (SELECT main_document_id FROM workflows WHERE user_id IN (?)) OR typist = ?)"]; + $data = [$users, $GLOBALS['id']]; } $whereWorkflow = [];