diff --git a/app/Http/Controllers/Migration/StepsController.php b/app/Http/Controllers/Migration/StepsController.php index a6320a82cd24..ef4a89bc3121 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 b96e059b4069..f1d87c38cf26 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 c7ce22b5bdbd..620cdeb1c470 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 c8eae3ec81a0..66531b2716f0 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 1c920624b7f6..f41b55195ef6 100644 --- a/resources/views/accounts/management.blade.php +++ b/resources/views/accounts/management.blade.php @@ -277,15 +277,13 @@