diff --git a/app/Console/Commands/CurlContainerListCommand.php b/app/Console/Commands/CurlContainerListCommand.php new file mode 100644 index 00000000..e5964a40 --- /dev/null +++ b/app/Console/Commands/CurlContainerListCommand.php @@ -0,0 +1,48 @@ + true]); - $r = $client->request('GET', 'https://portalvt.azurewebsites.net'); - $call_cookie = $client->getConfig('cookies'); - $call_cookie = $call_cookie->toArray(); - $latest_cookie = []; - - foreach ($call_cookie as $key => $row) { - $latest_cookie[] = $row['Name'] . '=' . $row['Value']; - } - $latest_cookie = implode(';', $latest_cookie); - - // get access token - $headers = [ - 'Content-Type' => 'application/json', - 'Cookie' => $latest_cookie, - ]; - $client = new \GuzzleHttp\Client(['headers' => $headers]); - $res = $client->post('https://portalvt.azurewebsites.net/Services/DataControllerService.asmx/Login', [\GuzzleHttp\RequestOptions::JSON => [ - "username" => "CIEF", - "password" => "0122120880", - "createPersistentCookie" => true, - ]]); - - echo $res->getBody(); - } -} \ No newline at end of file diff --git a/app/Jobs/CurlContainerListJob.php b/app/Jobs/CurlContainerListJob.php new file mode 100644 index 00000000..88a7e9fd --- /dev/null +++ b/app/Jobs/CurlContainerListJob.php @@ -0,0 +1,95 @@ +page = $page; + } + + /** + * Execute the job. + * + * @return void + */ + public function handle() + { + $cookies = $this->getCookie(); + + $headers = [ + 'Content-Type' => 'application/json', + 'Cookie' => $cookies, + ]; + + $last_two_month = Carbon::now()->subMonth(2)->format('Y-m-d'); + + $client = new \GuzzleHttp\Client(['headers' => $headers]); + $res = $client->post('https://portalvt.azurewebsites.net/Services/DataControllerService.asmx/GetPage', [\GuzzleHttp\RequestOptions::JSON => json_decode('{"controller":"VCustomercontainer","view":"grid1","request":{"PageIndex":' . $this->page . ',"PageSize":10,"PageOffset":0,"SortExpression":"CreatedOn DESC","GroupExpression":"","Filter":["LoadedTime:<=%js%\"' . $last_two_month . 'T00:00:00.000\"\u0000"],"ContextKey":"view1","FilterIsExternal":false,"LookupContextFieldName":null,"LookupContextController":null,"LookupContextView":null,"LookupContext":null,"Inserting":false,"LastCommandName":null,"ExternalFilter":[],"DoesNotRequireData":false,"LastView":"grid1","Tag":null,"RequiresFirstLetters":false,"ViewType":"Grid","SupportsCaching":true,"SystemFilter":null,"RequiresRowCount":true,"QuickFindHint":null,"RequiresPivot":false,"PivotDefinitions":null,"RequiresMetaData":true}}')]); + + $data = json_decode($res->getBody()->getContents()); + + if (!empty($data->d->Rows)) { + // insert data here + + // next page + $this->page = $this->page > 0 ? $this->page + 1 : 1; + CurlContainerListJob::dispatch($this->page + 1) + ->delay(Carbon::now()->addSeconds(10)); + } + } + + public function getCookie() + { + // get latest cookies + $client = new \GuzzleHttp\Client(['cookies' => true]); + $r = $client->request('GET', 'https://portalvt.azurewebsites.net'); + $call_cookie = $client->getConfig('cookies'); + $call_cookie = $call_cookie->toArray(); + $latest_cookie = []; + + foreach ($call_cookie as $key => $row) { + $latest_cookie[] = $row['Name'] . '=' . $row['Value']; + } + $latest_cookie = implode(';', $latest_cookie); + + // get access token + $headers = [ + 'Content-Type' => 'application/json', + 'Cookie' => $latest_cookie, + ]; + $client = new \GuzzleHttp\Client(['headers' => $headers]); + $res = $client->post('https://portalvt.azurewebsites.net/Services/DataControllerService.asmx/Login', [\GuzzleHttp\RequestOptions::JSON => [ + "username" => "CIEF", + "password" => "0122120880", + "createPersistentCookie" => true, + ]]); + + $token = json_decode($res->getBody()->getContents()); + $token = $token->d->AccessToken; + + $latest_cookie = $latest_cookie . ';AppVTCC=' . $token; + return $latest_cookie; + } +} diff --git a/app/Jobs/CurlWarehouseListJob.php b/app/Jobs/CurlWarehouseListJob.php new file mode 100644 index 00000000..dacbda24 --- /dev/null +++ b/app/Jobs/CurlWarehouseListJob.php @@ -0,0 +1,95 @@ +page = $page; + } + + /** + * Execute the job. + * + * @return void + */ + public function handle() + { + $cookies = $this->getCookie(); + + $headers = [ + 'Content-Type' => 'application/json', + 'Cookie' => $cookies, + ]; + + $yesterday = Carbon::now()->subDays(1)->format('Y-m-d'); + + $client = new \GuzzleHttp\Client(['headers' => $headers]); + $res = $client->post('https://portalvt.azurewebsites.net/Services/DataControllerService.asmx/GetPage', [\GuzzleHttp\RequestOptions::JSON => json_decode('{"controller":"WarehouseList","view":"grid1","request":{"PageIndex":' . $this->page . ',"PageSize":100,"PageOffset":0,"SortExpression":"ParcelDate DESC,FullMarking DESC","GroupExpression":"","Filter":["ParcelDate:=%js%\"' . $yesterday . 'T00:00:00.000\"\u0000"],"ContextKey":"view1","FilterIsExternal":false,"LookupContextFieldName":null,"LookupContextController":null,"LookupContextView":null,"LookupContext":null,"Inserting":false,"LastCommandName":null,"ExternalFilter":[],"DoesNotRequireData":false,"LastView":"grid1","Tag":null,"RequiresFirstLetters":false,"ViewType":"Grid","SupportsCaching":true,"SystemFilter":null,"RequiresRowCount":true,"QuickFindHint":null,"RequiresPivot":false,"PivotDefinitions":null,"RequiresMetaData":true}}')]); + + $data = json_decode($res->getBody()->getContents()); + + if (!empty($data->d->Row)) { + // insert data here + + // next page + $this->page = $this->page > 0 ? $this->page + 1 : 1; + CurlWarehouseListJob::dispatch($this->page + 1) + ->delay(Carbon::now()->addSeconds(10)); + } + } + + public function getCookie() + { + // get latest cookies + $client = new \GuzzleHttp\Client(['cookies' => true]); + $r = $client->request('GET', 'https://portalvt.azurewebsites.net'); + $call_cookie = $client->getConfig('cookies'); + $call_cookie = $call_cookie->toArray(); + $latest_cookie = []; + + foreach ($call_cookie as $key => $row) { + $latest_cookie[] = $row['Name'] . '=' . $row['Value']; + } + $latest_cookie = implode(';', $latest_cookie); + + // get access token + $headers = [ + 'Content-Type' => 'application/json', + 'Cookie' => $latest_cookie, + ]; + $client = new \GuzzleHttp\Client(['headers' => $headers]); + $res = $client->post('https://portalvt.azurewebsites.net/Services/DataControllerService.asmx/Login', [\GuzzleHttp\RequestOptions::JSON => [ + "username" => "CIEF", + "password" => "0122120880", + "createPersistentCookie" => true, + ]]); + + $token = json_decode($res->getBody()->getContents()); + $token = $token->d->AccessToken; + + $latest_cookie = $latest_cookie . ';AppVTCC=' . $token; + return $latest_cookie; + } +} diff --git a/routes/web.php b/routes/web.php index 9f6e8e49..93cf6d4f 100644 --- a/routes/web.php +++ b/routes/web.php @@ -51,14 +51,3 @@ Route::get('/order', function () { Route::get('/address', function () { return view('pages.addresses.index'); })->name('address'); - - -///////////////////////////////////////////////////////////////// -Route::group(['namespace' => 'Prototype'], function () { - Route::get('scrap-cookie', - [ - 'as' => 'api.prototype.scrap-cookie', - 'uses' => 'SrapCookieController@index', - ] - ); -}); \ No newline at end of file