diff --git a/app/Console/Kernel.php b/app/Console/Kernel.php index b82ae84f16a4..caf7f5a58c61 100644 --- a/app/Console/Kernel.php +++ b/app/Console/Kernel.php @@ -52,8 +52,6 @@ class Kernel extends ConsoleKernel $schedule->job(new DiskCleanup)->daily()->withoutOverlapping(); - $schedule->command('ninja:check-data --database=db-ninja-01')->daily()->withoutOverlapping(); - $schedule->job(new ReminderJob)->hourly()->withoutOverlapping(); $schedule->job(new CompanySizeCheck)->daily()->withoutOverlapping(); @@ -84,7 +82,8 @@ class Kernel extends ConsoleKernel $schedule->job(new AdjustEmailQuota)->dailyAt('23:00')->withoutOverlapping(); $schedule->job(new SendFailedEmails)->daily()->withoutOverlapping(); - $schedule->command('ninja:check-data --database=db-ninja-02')->dailyAt('00:15')->withoutOverlapping(); + $schedule->command('ninja:check-data --database=db-ninja-01')->daily()->withoutOverlapping(); + $schedule->command('ninja:check-data --database=db-ninja-02')->dailyAt('00:05')->withoutOverlapping(); $schedule->command('ninja:s3-cleanup')->dailyAt('23:15')->withoutOverlapping(); } diff --git a/app/Http/Controllers/FilterController.php b/app/Http/Controllers/FilterController.php new file mode 100644 index 000000000000..31e4e54bd455 --- /dev/null +++ b/app/Http/Controllers/FilterController.php @@ -0,0 +1,67 @@ +json( array_merge($this->base_filters, $entity_filters), 200); + } + + +} diff --git a/app/Http/Controllers/HostedMigrationController.php b/app/Http/Controllers/HostedMigrationController.php index 5f93b63c614f..e61f026d980d 100644 --- a/app/Http/Controllers/HostedMigrationController.php +++ b/app/Http/Controllers/HostedMigrationController.php @@ -63,29 +63,12 @@ class HostedMigrationController extends Controller MultiDB::findAndSetDbByCompanyKey($input['account_key']); $company = Company::with('account')->where('company_key', $input['account_key'])->first(); - $account = $company->account; - $client_id = false; - - if($contact = ClientContact::on('db-ninja-01')->where(['email' => $input['email'], 'company_id' => config('ninja.ninja_default_company_id')])->first()){ - $client_id = $contact->client_id; - } - else if($client = Client::on('db-ninja-01')->where(['custom_value2' => $account->key, 'company_id' => config('ninja.ninja_default_company_id')])->first()){ - $client_id = $client->id; - } - - //get ninja client_id; - - if(strlen($input['gateway_reference']) >1 && $client_id){ - - Artisan::call('ninja:add-token', [ - '--customer' => $input['gateway_reference'], '--client_id' => 1 - ]); - - } $forward_url = $company->domain(); - - return response()->json(['forward_url' => $forward_url], 200); + + $billing_transferred = \Modules\Admin\Jobs\Account\TransferAccountPlan::dispatchNow($input); + + return response()->json(['forward_url' => $forward_url, 'billing_transferred' => $billing_transferred], 200); } } \ No newline at end of file diff --git a/app/PaymentDrivers/MolliePaymentDriver.php b/app/PaymentDrivers/MolliePaymentDriver.php index 4b991a057a86..1aac3ee606ca 100644 --- a/app/PaymentDrivers/MolliePaymentDriver.php +++ b/app/PaymentDrivers/MolliePaymentDriver.php @@ -16,6 +16,7 @@ use App\Http\Requests\ClientPortal\Payments\PaymentResponseRequest; use App\Http\Requests\Gateways\Mollie\Mollie3dsRequest; use App\Http\Requests\Payments\PaymentWebhookRequest; use App\Jobs\Util\SystemLogger; +use App\Models\Client; use App\Models\ClientGatewayToken; use App\Models\GatewayType; use App\Models\Invoice; @@ -303,12 +304,38 @@ class MolliePaymentDriver extends BaseDriver try { $payment = $this->gateway->payments->get($request->id); + $record = Payment::withTrashed()->where('transaction_reference', $request->id)->first(); - $record = Payment::withTrashed()->where('transaction_reference', $request->id)->firstOrFail(); - $record->status_id = $codes[$payment->status]; - $record->save(); + if($record){ + $client = $record->client; + } + else{ + $client = Client::withTrashed()->find($this->decodePrimaryKey($payment['metadata']->client_id)); + } + + $message = [ + 'server_response' => $payment, + 'data' => $request->all(), + ]; + + $response = SystemLog::EVENT_GATEWAY_FAILURE; + + if($record){ + $record->status_id = $codes[$payment->status]; + $record->save(); + $response = SystemLog::EVENT_GATEWAY_SUCCESS; + } + + SystemLogger::dispatch( + $message, + SystemLog::CATEGORY_GATEWAY_RESPONSE, + $response, + SystemLog::TYPE_MOLLIE, + $client + ); return response()->json([], 200); + } catch (ApiException $e) { return response()->json(['message' => $e->getMessage(), 'gatewayStatusCode' => $e->getCode()], 500); } diff --git a/app/Transformers/UserTransformer.php b/app/Transformers/UserTransformer.php index d44994006419..238db3a08a2e 100644 --- a/app/Transformers/UserTransformer.php +++ b/app/Transformers/UserTransformer.php @@ -60,7 +60,7 @@ class UserTransformer extends EntityTransformer 'oauth_provider_id' => (string) $user->oauth_provider_id, 'last_confirmed_email_address' => (string) $user->last_confirmed_email_address ?: '', 'google_2fa_secret' => (bool) $user->google_2fa_secret, - 'has_password' => (bool) $user->has_password, + 'has_password' => (bool) empty($user->password) ? false : true, 'oauth_user_token' => empty($user->oauth_user_token) ? '' : '***', ]; } diff --git a/routes/api.php b/routes/api.php index 6dd956d0b5a6..73eb067da196 100644 --- a/routes/api.php +++ b/routes/api.php @@ -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::post('clients/bulk', 'ClientController@bulk')->name('clients.bulk'); + Route::post('filters/{entity}', 'FilterController@index')->name('filters'); + Route::resource('client_gateway_tokens', 'ClientGatewayTokenController'); Route::post('connected_account', 'ConnectedAccountController@index'); diff --git a/tests/Feature/FilterApiTest.php b/tests/Feature/FilterApiTest.php new file mode 100644 index 000000000000..2b18c9c57f4f --- /dev/null +++ b/tests/Feature/FilterApiTest.php @@ -0,0 +1,83 @@ +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); + + + + } +}