mirror of
https://github.com/invoiceninja/invoiceninja.git
synced 2025-06-03 16:24:37 -04:00
Add filter controller
This commit is contained in:
parent
b0c6a4d5dd
commit
ca788476d8
67
app/Http/Controllers/FilterController.php
Normal file
67
app/Http/Controllers/FilterController.php
Normal file
@ -0,0 +1,67 @@
|
|||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* Invoice Ninja (https://invoiceninja.com).
|
||||||
|
*
|
||||||
|
* @link https://github.com/invoiceninja/invoiceninja source repository
|
||||||
|
*
|
||||||
|
* @copyright Copyright (c) 2021. Invoice Ninja LLC (https://invoiceninja.com)
|
||||||
|
*
|
||||||
|
* @license https://www.elastic.co/licensing/elastic-license
|
||||||
|
*/
|
||||||
|
|
||||||
|
namespace App\Http\Controllers;
|
||||||
|
|
||||||
|
use Illuminate\Http\Request;
|
||||||
|
use Illuminate\Foundation\Bus\DispatchesJobs;
|
||||||
|
use Illuminate\Http\Response;
|
||||||
|
|
||||||
|
class FilterController extends BaseController
|
||||||
|
{
|
||||||
|
|
||||||
|
private array $base_filters = ['archive', 'restore', 'delete'];
|
||||||
|
|
||||||
|
public function __construct()
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Display a listing of the resource.
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function index(Request $request, string $entity)
|
||||||
|
{
|
||||||
|
|
||||||
|
$entity_filters = [];
|
||||||
|
|
||||||
|
switch ($entity) {
|
||||||
|
|
||||||
|
case 'invoice':
|
||||||
|
$entity_filters = ['bulk_download', 'mark_paid', 'mark_sent', 'download', 'cancel', 'email'];
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 'quote':
|
||||||
|
$entity_filters = ['bulk_download', 'convert', 'convert_to_invoice', 'download', 'approve', 'email', 'mark_sent'];
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 'credit':
|
||||||
|
$entity_filters = ['bulk_download', 'download', 'email', 'mark_sent'];
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 'payment':
|
||||||
|
$entity_filters = ['bulk_download', 'download', 'email', 'email_receipt'];
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 'recurring_invoice':
|
||||||
|
$entity_filters = ['bulk_download', 'start', 'stop', 'email'];
|
||||||
|
break;
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
return response()->json( array_merge($this->base_filters, $entity_filters), 200);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
@ -38,6 +38,8 @@ Route::group(['middleware' => ['api_db', 'token_auth', 'locale'], 'prefix' => 'a
|
|||||||
Route::put('clients/{client}/upload', 'ClientController@upload')->name('clients.upload');
|
Route::put('clients/{client}/upload', 'ClientController@upload')->name('clients.upload');
|
||||||
Route::post('clients/bulk', 'ClientController@bulk')->name('clients.bulk');
|
Route::post('clients/bulk', 'ClientController@bulk')->name('clients.bulk');
|
||||||
|
|
||||||
|
Route::post('filters/{entity}', 'FilterController@index')->name('filters');
|
||||||
|
|
||||||
Route::resource('client_gateway_tokens', 'ClientGatewayTokenController');
|
Route::resource('client_gateway_tokens', 'ClientGatewayTokenController');
|
||||||
|
|
||||||
Route::post('connected_account', 'ConnectedAccountController@index');
|
Route::post('connected_account', 'ConnectedAccountController@index');
|
||||||
|
83
tests/Feature/FilterApiTest.php
Normal file
83
tests/Feature/FilterApiTest.php
Normal file
@ -0,0 +1,83 @@
|
|||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* Invoice Ninja (https://invoiceninja.com).
|
||||||
|
*
|
||||||
|
* @link https://github.com/invoiceninja/invoiceninja source repository
|
||||||
|
*
|
||||||
|
* @copyright Copyright (c) 2021. Invoice Ninja LLC (https://invoiceninja.com)
|
||||||
|
*
|
||||||
|
* @license https://opensource.org/licenses/AAL
|
||||||
|
*/
|
||||||
|
namespace Tests\Feature;
|
||||||
|
|
||||||
|
use Illuminate\Foundation\Testing\DatabaseTransactions;
|
||||||
|
use Illuminate\Routing\Middleware\ThrottleRequests;
|
||||||
|
use Tests\MockAccountData;
|
||||||
|
use Tests\TestCase;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @test
|
||||||
|
* @covers App\Http\Controllers\FilterController
|
||||||
|
*/
|
||||||
|
class FilterApiTest extends TestCase
|
||||||
|
{
|
||||||
|
use DatabaseTransactions;
|
||||||
|
use MockAccountData;
|
||||||
|
|
||||||
|
public function setUp() :void
|
||||||
|
{
|
||||||
|
parent::setUp();
|
||||||
|
|
||||||
|
|
||||||
|
$this->makeTestData();
|
||||||
|
|
||||||
|
|
||||||
|
$this->withoutMiddleware(
|
||||||
|
ThrottleRequests::class
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function testActivityGet()
|
||||||
|
{
|
||||||
|
$response = $this->withHeaders([
|
||||||
|
'X-API-SECRET' => config('ninja.api_secret'),
|
||||||
|
'X-API-TOKEN' => $this->token,
|
||||||
|
])->post('/api/v1/filters/invoice');
|
||||||
|
|
||||||
|
$response->assertStatus(200);
|
||||||
|
|
||||||
|
$response = $this->withHeaders([
|
||||||
|
'X-API-SECRET' => config('ninja.api_secret'),
|
||||||
|
'X-API-TOKEN' => $this->token,
|
||||||
|
])->post('/api/v1/filters/quote');
|
||||||
|
|
||||||
|
$response->assertStatus(200);
|
||||||
|
|
||||||
|
|
||||||
|
$response = $this->withHeaders([
|
||||||
|
'X-API-SECRET' => config('ninja.api_secret'),
|
||||||
|
'X-API-TOKEN' => $this->token,
|
||||||
|
])->post('/api/v1/filters/credit');
|
||||||
|
|
||||||
|
$response->assertStatus(200);
|
||||||
|
|
||||||
|
|
||||||
|
$response = $this->withHeaders([
|
||||||
|
'X-API-SECRET' => config('ninja.api_secret'),
|
||||||
|
'X-API-TOKEN' => $this->token,
|
||||||
|
])->post('/api/v1/filters/payment');
|
||||||
|
|
||||||
|
$response->assertStatus(200);
|
||||||
|
|
||||||
|
|
||||||
|
$response = $this->withHeaders([
|
||||||
|
'X-API-SECRET' => config('ninja.api_secret'),
|
||||||
|
'X-API-TOKEN' => $this->token,
|
||||||
|
])->post('/api/v1/filters/recurring_invoice');
|
||||||
|
|
||||||
|
$response->assertStatus(200);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user