diff --git a/app/Http/Controllers/CompanyUserController.php b/app/Http/Controllers/CompanyUserController.php index 957eba898f99..bc40618ee76c 100644 --- a/app/Http/Controllers/CompanyUserController.php +++ b/app/Http/Controllers/CompanyUserController.php @@ -11,11 +11,11 @@ namespace App\Http\Controllers; -use App\Exceptions\ModelNotFoundException; use App\Http\Requests\CompanyUser\UpdateCompanyUserRequest; use App\Models\CompanyUser; use App\Models\User; use App\Transformers\CompanyUserTransformer; +use Illuminate\Database\Eloquent\ModelNotFoundException; use Illuminate\Http\Response; class CompanyUserController extends BaseController diff --git a/app/Http/Controllers/CreditController.php b/app/Http/Controllers/CreditController.php index 5bf8fbc8730c..56ab93d5710d 100644 --- a/app/Http/Controllers/CreditController.php +++ b/app/Http/Controllers/CreditController.php @@ -17,6 +17,7 @@ use App\Factory\CloneCreditFactory; use App\Factory\CreditFactory; use App\Filters\CreditFilters; use App\Http\Requests\Credit\ActionCreditRequest; +use App\Http\Requests\Credit\BulkCreditRequest; use App\Http\Requests\Credit\CreateCreditRequest; use App\Http\Requests\Credit\DestroyCreditRequest; use App\Http\Requests\Credit\EditCreditRequest; @@ -494,11 +495,11 @@ class CreditController extends BaseController * ), * ) */ - public function bulk() + public function bulk(BulkCreditRequest $request) { - $action = request()->input('action'); + $action = $request->input('action'); - $ids = request()->input('ids'); + $ids = $request->input('ids'); if(Ninja::isHosted() && (stripos($action, 'email') !== false) && !auth()->user()->company()->account->account_sms_verified) return response(['message' => 'Please verify your account to send emails.'], 400); diff --git a/app/Http/Requests/CompanyGateway/BulkCompanyGatewayRequest.php b/app/Http/Requests/CompanyGateway/BulkCompanyGatewayRequest.php index 3f28c367e0f8..cdfed1325c0a 100644 --- a/app/Http/Requests/CompanyGateway/BulkCompanyGatewayRequest.php +++ b/app/Http/Requests/CompanyGateway/BulkCompanyGatewayRequest.php @@ -33,10 +33,10 @@ class BulkCompanyGatewayRequest extends Request public function rules() { - + return [ 'ids' => 'required|bail|array', - 'action' => 'in:archive,restore,delete' + 'action' => 'required|bail|in:archive,restore,delete' ]; } diff --git a/app/Http/Requests/Credit/BulkCreditRequest.php b/app/Http/Requests/Credit/BulkCreditRequest.php new file mode 100644 index 000000000000..ee74d180d471 --- /dev/null +++ b/app/Http/Requests/Credit/BulkCreditRequest.php @@ -0,0 +1,40 @@ + 'required|bail|array', + 'action' => 'required|bail|in:archive,restore,delete,email,bulk_download,bulk_print,mark_paid,clone_to_credit,history,mark_sent,download,send_email' + ]; + } +} diff --git a/lang/en/texts.php b/lang/en/texts.php index bb2ad322e49b..2173a752c355 100644 --- a/lang/en/texts.php +++ b/lang/en/texts.php @@ -4926,6 +4926,8 @@ $LANG = array( 'import_completed' => 'Import completed', 'client_statement_body' => 'Your statement from :start_date to :end_date is attached.', 'email_queued' => 'Email queued', + 'clone_to_recurring_invoice' => 'Clone to Recurring Invoice', + ); diff --git a/tests/Feature/CreditTest.php b/tests/Feature/CreditTest.php index a33b0055148f..382a73c49300 100644 --- a/tests/Feature/CreditTest.php +++ b/tests/Feature/CreditTest.php @@ -40,6 +40,45 @@ class CreditTest extends TestCase $this->makeTestData(); } + public function testBulkActions() + { + + $data = [ + 'action' => 'archive', + 'ids' => [$this->credit->hashed_id] + ]; + + $response = $this->withHeaders([ + 'X-API-TOKEN' => $this->token, + ])->post('/api/v1/credits/bulk', $data) + ->assertStatus(200); + + + $data = [ + 'ids' => [$this->credit->hashed_id], + 'action' => 'restore' + ]; + + $response = $this->withHeaders([ + 'X-API-SECRET' => config('ninja.api_secret'), + 'X-API-TOKEN' => $this->token, + ])->post('/api/v1/credits/bulk', $data) + ->assertStatus(200); + + $data = [ + 'ids' => [$this->credit->hashed_id], + 'action' => 'delete' + ]; + + $response = $this->withHeaders([ + 'X-API-SECRET' => config('ninja.api_secret'), + 'X-API-TOKEN' => $this->token, + ])->post('/api/v1/credits/bulk', $data) + ->assertStatus(200); + + } + + public function testCreditGetClientStatus() { $response = $this->withHeaders([