diff --git a/ProcessMaker/Models/ProcessRequestToken.php b/ProcessMaker/Models/ProcessRequestToken.php index 0f052e1819..082a2fa3ed 100644 --- a/ProcessMaker/Models/ProcessRequestToken.php +++ b/ProcessMaker/Models/ProcessRequestToken.php @@ -760,20 +760,20 @@ public function valueAliasStatus($value, $expression, $callback = null, User $us if ($user) { $taskIds = $user->availableSelfServiceTaskIds(); - $query->whereIn('id', $taskIds); + $query->whereIn('process_request_tokens.id', $taskIds); } else { - $query->where('is_self_service', 1); + $query->where('process_request_tokens.is_self_service', 1); } } elseif (array_key_exists($value, $statusMap)) { - $query->where('is_self_service', 0); + $query->where('process_request_tokens.is_self_service', 0); if ($expression->operator == '=') { $query->whereIn('process_request_tokens.status', $statusMap[$value]); } elseif ($expression->operator == '!=') { $query->whereNotIn('process_request_tokens.status', $statusMap[$value]); } } else { - $query->where('status', $expression->operator, $value) - ->where('is_self_service', 0); + $query->where('process_request_tokens.status', $expression->operator, $value) + ->where('process_request_tokens.is_self_service', 0); } }; } diff --git a/tests/unit/ProcessMaker/FilterTest.php b/tests/unit/ProcessMaker/FilterTest.php index aa1b3182a0..70e0269fa5 100644 --- a/tests/unit/ProcessMaker/FilterTest.php +++ b/tests/unit/ProcessMaker/FilterTest.php @@ -206,7 +206,7 @@ public function testRequestStatus() ); } - public function testTaskStatus() + public function testTaskStatusSelfservice() { $user = User::factory()->create(); @@ -228,7 +228,33 @@ public function testTaskStatus() ], ProcessRequestToken::class); $this->assertEquals( - "select * from `process_request_tokens` where ((`id` in ({$selfServiceTask->id})))", + "select * from `process_request_tokens` where ((`process_request_tokens`.`id` in ({$selfServiceTask->id})))", + $sql + ); + } + + public function testTaskStatusActive() + { + $user = User::factory()->create(); + + $selfServiceTask = ProcessRequestToken::factory()->create([ + 'is_self_service' => false, + 'status' => 'ACTIVE', + 'user_id' => $user->id, + ]); + + Auth::shouldReceive('user')->andReturn($user); + + $sql = $this->filter([ + [ + 'subject' => ['type' => 'Status'], + 'operator' => '=', + 'value' => 'ACTIVE', + ], + ], ProcessRequestToken::class); + + $this->assertEquals( + "select * from `process_request_tokens` where ((`process_request_tokens`.`status` = 'active' and `process_request_tokens`.`is_self_service` = 0))", $sql ); }