diff --git a/app/Http/Controllers/Migration/StepsController.php b/app/Http/Controllers/Migration/StepsController.php index a6320a82c..ef4a89bc3 100644 --- a/app/Http/Controllers/Migration/StepsController.php +++ b/app/Http/Controllers/Migration/StepsController.php @@ -11,6 +11,8 @@ use App\Http\Requests\MigrationTypeRequest; use App\Jobs\HostedMigration; use App\Libraries\Utils; use App\Models\Account; +use App\Models\AccountGatewayToken; +use App\Models\Client; use App\Services\Migration\AuthService; use App\Services\Migration\CompanyService; use App\Services\Migration\CompleteService; @@ -19,6 +21,7 @@ use Illuminate\Http\Request; use Illuminate\Support\Facades\Auth; use Illuminate\Support\Facades\Storage; use Validator; +use GuzzleHttp\RequestOptions; class StepsController extends BaseController { @@ -86,14 +89,6 @@ class StepsController extends BaseController url('/migration/companies?hosted=true') ); - //old - // return redirect( - // url('/migration/auth') - // ); - - // return redirect( - // url('/migration/endpoint') - // ); } return redirect( @@ -104,6 +99,9 @@ class StepsController extends BaseController public function forwardUrl(Request $request) { + if(Utils::isNinjaProd()) + return $this->autoForwardUrl(); + $rules = [ 'url' => 'nullable|url', ]; @@ -131,6 +129,109 @@ class StepsController extends BaseController return back(); } + public function disableForwarding() + { + $account = \Auth::user()->account; + + $account_settings = $account->account_email_settings; + $account_settings->forward_url_for_v5 = ''; + $account_settings->is_disabled = false; + $account_settings->save(); + + return back(); + } + + private function autoForwardUrl() + { + + $url = 'https://invoicing.co/api/v1/confirm_forwarding'; + // $url = 'http://devhosted.test:8000/api/v1/confirm_forwarding'; + + $headers = [ + 'X-API-HOSTED-SECRET' => config('ninja.ninja_hosted_secret'), + 'X-Requested-With' => 'XMLHttpRequest', + 'Content-Type' => 'application/json', + ]; + + $account = \Auth::user()->account; + $gateway_reference = ''; + + $ninja_client = Client::where('public_id', $account->id)->first(); + + if($ninja_client){ + $agt = AccountGatewayToken::where('client_id', $ninja_client->id)->first(); + + if($agt) + $gateway_reference = $agt->token; + } + + $body = [ + 'account_key' => $account->account_key, + 'email' => \Auth::user()->email, + 'plan' => $account->company->plan, + 'plan_term' =>$account->company->plan_term, + 'plan_started' =>$account->company->plan_started, + 'plan_paid' =>$account->company->plan_paid, + 'plan_expires' =>$account->company->plan_expires, + 'trial_started' =>$account->company->trial_started, + 'trial_plan' =>$account->company->trial_plan, + 'plan_price' =>$account->company->plan_price, + 'num_users' =>$account->company->num_users, + 'gateway_reference' => $gateway_reference, + ]; + + $client = new \GuzzleHttp\Client([ + 'headers' => $headers, + ]); + + $response = $client->post($url,[ + RequestOptions::JSON => $body, + RequestOptions::ALLOW_REDIRECTS => false + ]); + + if($response->getStatusCode() == 401){ + info("autoForwardUrl"); + info($response->getBody()); + + } elseif ($response->getStatusCode() == 200) { + + $message_body = json_decode($response->getBody(), true); + + $forwarding_url = $message_body['forward_url']; + + $account_settings = $account->account_email_settings; + + if(strlen($forwarding_url) == 0) { + $account_settings->is_disabled = false; + } + else { + $account_settings->is_disabled = true; + } + + $account_settings->forward_url_for_v5 = rtrim($forwarding_url,'/'); + $account_settings->save(); + + $billing_transferred = $message_body['billing_transferred']; + + if($billing_transferred == 'true'){ + + $company = $account->company; + $company->plan = null; + $company->plan_expires = null; + $company->save(); + } + + + } else { + info("failed to autoforward"); + info(json_decode($response->getBody()->getContents())); + // dd('else'); + } + + return back(); + + } + public function endpoint() { @@ -239,7 +340,6 @@ class StepsController extends BaseController try { $migrationData = $this->generateMigrationData($request->all()); - $completeService->data($migrationData) ->endpoint(session('MIGRATION_ENDPOINT')) @@ -340,8 +440,6 @@ class StepsController extends BaseController Storage::makeDirectory('migrations'); $file = Storage::path("migrations/{$fileName}.zip"); - //$file = storage_path("migrations/{$fileName}.zip"); - ksort($localMigrationData); $zip = new \ZipArchive(); diff --git a/app/Jobs/HostedMigration.php b/app/Jobs/HostedMigration.php index b96e059b4..f1d87c38c 100644 --- a/app/Jobs/HostedMigration.php +++ b/app/Jobs/HostedMigration.php @@ -54,15 +54,15 @@ class HostedMigration extends Job $completeService->data($migrationData) ->endpoint('https://v5-app1.invoicing.co') - // ->endpoint('http://ninja.test:8000') +// ->endpoint('http://devhosted.test:8000') ->start(); } private function getToken() { - $url = 'https://invoicing.co/api/v1/get_migration_account'; - // $url = 'http://ninja.test:8000/api/v1/get_migration_account'; + //$url = 'https://invoicing.co/api/v1/get_migration_account'; + $url = 'http://devhosted.test:8000/api/v1/get_migration_account'; $headers = [ 'X-API-HOSTED-SECRET' => $this->v4_secret, @@ -98,27 +98,10 @@ class HostedMigration extends Job $this->migration_token = $message_body['token']; } else { - info(json_decode($response->getBody()->getContents())); + // info(json_decode($response->getBody()->getContents())); } - - // $body = \Unirest\Request\Body::json($body); - - // $response = Request::post($url, $headers, $body); - - // if (in_array($response->code, [200])) { - - // $data = $response->body; - // info(print_r($data,1)); - // $this->migration_token = $data->token; - - // } else { - // info("getting token failed"); - // info($response->raw_body); - - // } - return $this; } diff --git a/app/Services/Migration/CompleteService.php b/app/Services/Migration/CompleteService.php index c7ce22b5b..620cdeb1c 100644 --- a/app/Services/Migration/CompleteService.php +++ b/app/Services/Migration/CompleteService.php @@ -75,12 +75,11 @@ class CompleteService 'headers' => $this->getHeaders(), ]); - $payload_data = [ 'multipart'=> array_merge($files, $payload), ]; - info(print_r($payload_data,1)); + // info(print_r($payload_data,1)); $response = $client->request("POST", $this->getUrl(),$payload_data); if($response->getStatusCode() == 200){ @@ -88,7 +87,7 @@ class CompleteService $this->isSuccessful = true; return json_decode($response->getBody(),true); }else { - info($response->raw_body); + // info($response->raw_body); $this->isSuccessful = false; $this->errors = [ @@ -98,25 +97,6 @@ class CompleteService return $this; - - - - // $body = \Unirest\Request\Body::multipart(['companies' => json_encode($data)], $files); - - // $response = Request::post($this->getUrl(), $this->getHeaders(), $body); - - // if (in_array($response->code, [200])) { - // $this->isSuccessful = true; - // } else { - // info($response->raw_body); - - // $this->isSuccessful = false; - // $this->errors = [ - // 'Oops, something went wrong. Migration can\'t be processed at the moment. Please checks the logs.', - // ]; - // } - - return $this; } public function isSuccessful() diff --git a/app/Traits/GenerateMigrationResources.php b/app/Traits/GenerateMigrationResources.php index c8eae3ec8..66531b271 100644 --- a/app/Traits/GenerateMigrationResources.php +++ b/app/Traits/GenerateMigrationResources.php @@ -1543,7 +1543,7 @@ trait GenerateMigrationResources } catch(\Exception $e){ - info($config); + // info($config); } diff --git a/resources/views/accounts/management.blade.php b/resources/views/accounts/management.blade.php index 1c920624b..f41b55195 100644 --- a/resources/views/accounts/management.blade.php +++ b/resources/views/accounts/management.blade.php @@ -277,15 +277,13 @@
- Once you are ready to forward your customers, enter your client portal URL for V5 here:

- Please note once enabled. Your V4 account will become disabled. This means that your recurring invoices and any reminders will no longer fire from V4.

To renable your V4 installation simply set the forwarding url to a blank/empty value. -

+
- + @if($errors->has('url'))
@foreach ($errors->get('url') as $message) @@ -301,6 +299,17 @@
+
+
+
+ +
+ If you need to rollback to v4, please disable forwarding using this link. + Disable Forwarding +
+
+
+ diff --git a/routes/web.php b/routes/web.php index 107c8e9d5..77fa11409 100644 --- a/routes/web.php +++ b/routes/web.php @@ -160,6 +160,7 @@ Route::group(['middleware' => ['lookup:user', 'auth:user']], function () { Route::post('migration/companies', 'Migration\StepsController@handleCompanies'); Route::get('migration/completed', 'Migration\StepsController@completed'); Route::post('migration/forward', 'Migration\StepsController@forwardUrl'); + Route::get('migration/disable_forward', 'Migration\StepsController@disableForwarding'); Route::get('migration/import', 'Migration\StepsController@import');