diff --git a/app/Filters/ExpenseFilters.php b/app/Filters/ExpenseFilters.php index 11d4ee46ae26..d5cea4581ee6 100644 --- a/app/Filters/ExpenseFilters.php +++ b/app/Filters/ExpenseFilters.php @@ -36,7 +36,7 @@ class ExpenseFilters extends QueryFilters } return $this->builder->where(function ($query) use ($filter) { - $query->where('expenses.name', 'like', '%'.$filter.'%') + $query->where('expenses.public_notes', 'like', '%'.$filter.'%') ->orWhere('expenses.id_number', 'like', '%'.$filter.'%') ->orWhere('expenses.custom_value1', 'like', '%'.$filter.'%') ->orWhere('expenses.custom_value2', 'like', '%'.$filter.'%') @@ -94,7 +94,10 @@ class ExpenseFilters extends QueryFilters { $sort_col = explode('|', $sort); - return $this->builder->orderBy($sort_col[0], $sort_col[1]); + if(is_array($sort_col) && in_array($sort_col[1], ['asc', 'desc']) && in_array($sort_col[0], ['public_notes', 'date', 'id_number', 'custom_value1', 'custom_value2', 'custom_value3', 'custom_value4'])) + return $this->builder->orderBy($sort_col[0], $sort_col[1]); + + return $this->builder; } /** diff --git a/tests/Feature/ExpenseApiTest.php b/tests/Feature/ExpenseApiTest.php index 70254f13b67a..63f550512084 100644 --- a/tests/Feature/ExpenseApiTest.php +++ b/tests/Feature/ExpenseApiTest.php @@ -121,6 +121,17 @@ class ExpenseApiTest extends TestCase $response->assertStatus(200); } + public function testExpenseGetSort() + { + $response = $this->withHeaders([ + 'X-API-SECRET' => config('ninja.api_secret'), + 'X-API-TOKEN' => $this->token, + ])->get('/api/v1/expenses?sort=public_notes|desc'); + + $response->assertStatus(200); + } + + public function testExpenseNotArchived() { $response = $this->withHeaders([