From 5fb880ef830ccc7e6082fdc3f15eb8934b56661a Mon Sep 17 00:00:00 2001 From: omair saleh Date: Thu, 22 Oct 2020 12:46:06 +0800 Subject: [PATCH] large commit --- .../General/Eloquent/Filters/ModuleType.php | 21 -- .../General/Eloquent/Filters/ProjectType.php | 21 -- .../Filters/{Milestone.php => importer.php} | 9 +- .../AuthenticateUserLogic.php | 1 - .../Services/CreatesCompanyConnection.php | 2 +- .../Controllers/Orders/OrderController.php | 4 +- app/Http/Controllers/TestController.php | 271 ++++++++++++++++++ app/Http/Resources/CompanyResource.php | 5 +- composer.json | 3 +- .../forms/RegistrationFormComponent.vue | 14 +- .../importer/elements/CompanyComponent.vue | 136 +++++++++ .../order/elements/OrderComponent.vue | 6 +- .../dashboards/forwarder_profile.blade.php | 9 + resources/views/pages/pdf/qr.blade.php | 14 +- 14 files changed, 449 insertions(+), 67 deletions(-) delete mode 100644 app/Classes/General/Eloquent/Filters/ModuleType.php delete mode 100644 app/Classes/General/Eloquent/Filters/ProjectType.php rename app/Classes/General/Eloquent/Filters/{Milestone.php => importer.php} (54%) create mode 100644 app/Http/Controllers/TestController.php create mode 100644 resources/assets/vue/components/importer/elements/CompanyComponent.vue diff --git a/app/Classes/General/Eloquent/Filters/ModuleType.php b/app/Classes/General/Eloquent/Filters/ModuleType.php deleted file mode 100644 index cdea613f..00000000 --- a/app/Classes/General/Eloquent/Filters/ModuleType.php +++ /dev/null @@ -1,21 +0,0 @@ -where('module_type', ModularTypes::MODULAR_MODULES[$value]); - } - -} \ No newline at end of file diff --git a/app/Classes/General/Eloquent/Filters/ProjectType.php b/app/Classes/General/Eloquent/Filters/ProjectType.php deleted file mode 100644 index dc3a7ff8..00000000 --- a/app/Classes/General/Eloquent/Filters/ProjectType.php +++ /dev/null @@ -1,21 +0,0 @@ -where('project_type', $value); - } - -} \ No newline at end of file diff --git a/app/Classes/General/Eloquent/Filters/Milestone.php b/app/Classes/General/Eloquent/Filters/importer.php similarity index 54% rename from app/Classes/General/Eloquent/Filters/Milestone.php rename to app/Classes/General/Eloquent/Filters/importer.php index 2c1c6a2d..13eb3311 100644 --- a/app/Classes/General/Eloquent/Filters/Milestone.php +++ b/app/Classes/General/Eloquent/Filters/importer.php @@ -2,10 +2,10 @@ namespace App\Classes\General\Eloquent\Filters; -use App\Classes\ValueObjects\Constants\ModularTypes; +use App\Classes\ValueObjects\Constants\ModuleTypes; use Illuminate\Database\Eloquent\Builder; -class Milestone implements Filter +class Importer implements Filter { /** @@ -15,7 +15,10 @@ class Milestone implements Filter */ public static function apply(Builder $builder, $value) { - return $builder->where('milestone_id', $value); + return $builder->whereHas('modules', function ($query){ + $query->where('module_type', ModuleTypes::IMPORTER); + }); + } } \ No newline at end of file diff --git a/app/Classes/Modules/Accounts/ControllersLogic/AuthenticateUserLogic.php b/app/Classes/Modules/Accounts/ControllersLogic/AuthenticateUserLogic.php index 9785cbc6..a28df296 100644 --- a/app/Classes/Modules/Accounts/ControllersLogic/AuthenticateUserLogic.php +++ b/app/Classes/Modules/Accounts/ControllersLogic/AuthenticateUserLogic.php @@ -60,7 +60,6 @@ class AuthenticateUserLogic extends AbstractControllerLogic return $this->response(['access_token' => $token, 'redirect_url' => $this->authenticationRedirect->url()]); } catch (\Exception $exception){ - dd($exception); throw new ErrorException($exception->getMessage(), $exception->getCode()); } diff --git a/app/Classes/Modules/Companies/Services/CreatesCompanyConnection.php b/app/Classes/Modules/Companies/Services/CreatesCompanyConnection.php index 48653094..ce595d58 100644 --- a/app/Classes/Modules/Companies/Services/CreatesCompanyConnection.php +++ b/app/Classes/Modules/Companies/Services/CreatesCompanyConnection.php @@ -12,7 +12,7 @@ class CreatesCompanyConnection public function execute(ConnectionObject $connection){ $connection->getInviter()->connections()->attach($connection->getInvitee(), [ - 'marking' => mt_rand(100, 999).(new GeneratesInitials())->name($connection->getInviter()->company()->name)->length(3)->generate(), + 'marking' => mt_rand(100, 999).(new GeneratesInitials())->name($connection->getInviter()->company->name)->length(3)->generate(), 'status' => ConnectionStatus::APPROVED, 'instigator' => $connection->getInvitee()->id ] diff --git a/app/Http/Controllers/Orders/OrderController.php b/app/Http/Controllers/Orders/OrderController.php index 45f01651..306833a8 100644 --- a/app/Http/Controllers/Orders/OrderController.php +++ b/app/Http/Controllers/Orders/OrderController.php @@ -8,6 +8,7 @@ use App\Classes\ValueObjects\Constants\HttpStatus; use App\Classes\ValueObjects\Response\ApiResponseObject; use App\Http\Resources\OrderResource; use App\Models\Company; +use App\Models\CompanyConnections; use App\Models\Order; use Illuminate\Http\Request; @@ -71,7 +72,8 @@ class OrderController 'company' => $order->importer(), 'delivery_address' => $order->address, 'warehouse_address' => $warehouseAddress, - 'warehouse_contact' => $warehouseContact + 'warehouse_contact' => $warehouseContact, + 'marking' => CompanyConnections::where('module_one', $order->importer->modules->first()->id)->first()->marking ]; return view('pages.pdf.qr', $data); diff --git a/app/Http/Controllers/TestController.php b/app/Http/Controllers/TestController.php new file mode 100644 index 00000000..45e842ae --- /dev/null +++ b/app/Http/Controllers/TestController.php @@ -0,0 +1,271 @@ +getToken(); + $ch = curl_init(); + + curl_setopt($ch, CURLOPT_URL, 'http://portalvt.azurewebsites.net/Services/DataControllerService.asmx/GetPage'); + curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); + curl_setopt($ch, CURLOPT_POST, 1); + curl_setopt($ch, CURLOPT_POSTFIELDS, '{"controller":"WarehouseList","view":"grid1","request":{"PageSize":10000000, "Filter":["ParcelDate:>%js%\"2020-01-10T00:00:00.000\"\u0000"]}}'); + curl_setopt($ch, CURLOPT_ENCODING, 'gzip, deflate'); + + $headers = array(); + $headers[] = 'Connection: keep-alive'; + $headers[] = 'User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.75 Safari/537.36'; + $headers[] = 'X-Requested-With: XMLHttpRequest'; + $headers[] = 'Content-Type: application/json; charset=UTF-8'; + $headers[] = 'Accept: */*'; + $headers[] = 'Origin: http://portalvt.azurewebsites.net'; + $headers[] = 'Referer: http://portalvt.azurewebsites.net/Pages/WarehouseList.aspx'; + $headers[] = 'Accept-Language: en-US,en;q=0.9'; + $headers[] = 'Cookie: '.implode('; ', $cookies); + curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); + + $result = curl_exec($ch); + if (curl_errno($ch)) { + echo 'Error:' . curl_error($ch); + } + curl_close($ch); + dd(json_decode($result)); + } + private function getToken(){ + $cookies = $this->getCookies(); + + $ch = curl_init(); + + curl_setopt($ch, CURLOPT_URL, 'http://portalvt.azurewebsites.net/Services/DataControllerService.asmx/Login'); + curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); + curl_setopt($ch, CURLOPT_POST, 1); + curl_setopt($ch, CURLOPT_POSTFIELDS, '{"username":"CIEF","password":"0122120880","createPersistentCookie":true}'); + curl_setopt($ch, CURLOPT_ENCODING, 'gzip, deflate'); + + $headers = array(); + $headers[] = 'Connection: keep-alive'; + $headers[] = 'User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.75 Safari/537.36'; + $headers[] = 'X-Requested-With: XMLHttpRequest'; + $headers[] = 'Content-Type: application/json; charset=UTF-8'; + $headers[] = 'Accept: */*'; + $headers[] = 'Origin: http://portalvt.azurewebsites.net'; + $headers[] = 'Referer: http://portalvt.azurewebsites.net/Login.aspx?ReturnUrl=%2fPages%2fHome.aspx'; + $headers[] = 'Accept-Language: en-US,en;q=0.9'; + $headers[] = 'Cookie: '.implode('; ', $cookies); + curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); + + $result = curl_exec($ch); + if (curl_errno($ch)) { + echo 'Error:' . curl_error($ch); + } + curl_close($ch); + $cookies[] = 'AppVTCC='.json_decode($result)->d->Token; + return $cookies; + + } + + private function getCookies(){ + $cookies = []; + $curl_handle = curl_init('http://portalvt.azurewebsites.net/Login.aspx'); + + curl_setopt($curl_handle, CURLOPT_RETURNTRANSFER, true); + curl_setopt($curl_handle, CURLOPT_FOLLOWLOCATION, false); + + curl_setopt($curl_handle, CURLOPT_HEADER, true); + + + $data = curl_exec($curl_handle); + + $responseHeader= substr($data,0, intval(curl_getinfo($curl_handle, CURLINFO_HEADER_SIZE))); + + $endPosition = 0; + while(true) { + $startPosition = strpos($responseHeader, 'Set-Cookie: ', $endPosition); + if (!$startPosition){break;} + $startPosition += 12; + $endPosition = strpos($responseHeader, ';', $startPosition); + $cookies[] = substr($responseHeader,$startPosition,$endPosition-$startPosition); + } + + return $cookies; + } + + public function index2() { +// curl 'http://portalvt.azurewebsites.net/Services/DataControllerService.asmx/Login' \ +// -H 'Connection: keep-alive' \ +// -H 'User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.75 Safari/537.36' \ +// -H 'X-Requested-With: XMLHttpRequest' \ +// -H 'Content-Type: application/json; charset=UTF-8' \ +// -H 'Accept: */*' \ +// -H 'Origin: http://portalvt.azurewebsites.net' \ +// -H 'Referer: http://portalvt.azurewebsites.net/Login.aspx?ReturnUrl=%2fPages%2fHome.aspx' \ +// -H 'Accept-Language: en-US,en;q=0.9' \ +// -H 'Cookie: ASP.NET_SessionId=cxe2tgbsi03jtg2p0nlfdcrl; ARRAffinity=2950dd3bc3c86410bd48fe08ed3595e06670f25d93c162510d25040b02f01a67' \ +// --data-binary '{"username":"CIEF","password":"0122120880","createPersistentCookie":true}' \ +// --compressed \ +// --insecure + + header('Content-Type: text/plain; charset=utf-8'); + + + + $post = array('createPersistentCookie'=>true, + 'username'=>'CIEF', + 'password'=>'0122120880'); + $request = array(); + $request[] = 'Connection: keep-alive'; + $request[] = 'Pragma: no-cache'; + $request[] = 'Cache-Control: no-cache'; + $request[] = 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8'; + $request[] = 'User-Agent: Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2272.101 Safari/537.36'; + $request[] = 'DNT: 1'; + $request[] = 'http://portalvt.azurewebsites.net/Login.aspx?ReturnUrl=%2fPages%2fHome.aspx'; + $request[] = 'Accept-Encoding: gzip, deflate'; + $request[] = 'Accept-Language: en-US,en;q=0.8'; + $request[] = 'Content-Type:multipart/form-data'; + + + $url = 'http://portalvt.azurewebsites.net/Login.aspx'; + $ch = curl_init($url); + + curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); + curl_setopt($ch, CURLOPT_FOLLOWLOCATION, false); + + curl_setopt($ch, CURLOPT_POST, true); + curl_setopt($ch, CURLOPT_POSTFIELDS, $post); + curl_setopt($ch, CURLOPT_HTTPHEADER, $request); + curl_setopt($ch, CURLOPT_ENCODING,""); + curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 10); + curl_setopt($ch, CURLOPT_TIMEOUT,10); + curl_setopt($ch, CURLOPT_FAILONERROR,true); + curl_setopt($ch, CURLOPT_ENCODING,""); + + curl_setopt($ch, CURLOPT_VERBOSE, true); + curl_setopt($ch, CURLINFO_HEADER_OUT, true); + curl_setopt($ch, CURLOPT_HEADER, true); + + + $data = curl_exec($ch); + + if (curl_errno($ch)){ + $data .= 'Retreive Base Page Error: ' . curl_error($ch); + var_dump($data); + } + else { + $info = rawurldecode(var_export(curl_getinfo($ch),true)); + + + + $skip = intval(curl_getinfo($ch, CURLINFO_HEADER_SIZE)); + $responseHeader= substr($data,0,$skip); + + // The folowing line is for debug +// echo "$info\n$responseHeader\n$data\n\n"; + + + + // Get the cookies: + $e = 0; + while(true){ + $s = strpos($responseHeader,'Set-Cookie: ',$e); + if (!$s){break;} + $s += 12; + $e = strpos($responseHeader,';',$s); + $cookie = substr($responseHeader,$s,$e-$s) ; + $s = strpos($cookie,'='); + $key = substr($cookie,0,$s); + $value = substr($cookie,$s); + $cookies[$key] = $value; + } + + // Create cookie for subsequent Requests: + + $cookie = ''; + $show = ''; + $head = ''; + $delim = ''; + foreach ($cookies as $k => $v){ + $cookie .= "$delim$k$v"; + $delim = '; '; + } + } + +var_dump($cookies); + $request = array(); + $request[] = 'Host: portalvt.azurewebsites.net'; + $request[] = 'Connection: keep-alive'; + $request[] = 'Pragma: no-cache'; + $request[] = 'Cache-Control: no-cache'; + $request[] = 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8'; + $request[] = 'User-Agent: Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2272.101 Safari/537.36'; + $request[] = 'DNT: 1'; + $request[] = 'Referer: http://portalvt.azurewebsites.net/Login.aspx?ReturnUrl=%2fPages%2fHome.aspx'; + $request[] = 'Accept-Encoding: gzip, deflate'; + $request[] = 'Accept-Language: en-US,en;q=0.8'; + + + $url = 'http://portalvt.azurewebsites.net/Login.aspx'; + $ch = curl_init($url); + + curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); + curl_setopt($ch, CURLOPT_FOLLOWLOCATION, false); + + curl_setopt($ch, CURLOPT_POST, false); + curl_setopt($ch, CURLOPT_HTTPHEADER, $request); + curl_setopt($ch, CURLOPT_ENCODING,""); + curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 10); + curl_setopt($ch, CURLOPT_TIMEOUT,10); + curl_setopt($ch, CURLOPT_FAILONERROR,true); + curl_setopt($ch, CURLOPT_ENCODING,""); + + curl_setopt($ch, CURLOPT_VERBOSE, true); + curl_setopt($ch, CURLINFO_HEADER_OUT, false); + curl_setopt($ch, CURLOPT_HEADER, true); + curl_setopt($ch, CURLOPT_COOKIESESSION , true ); + curl_setopt($ch, CURLOPT_COOKIE, $cookie ); + + $data = curl_exec($ch); + $skip = intval(curl_getinfo($ch, CURLINFO_HEADER_SIZE)); + echo substr($data,$skip); //do not transmit header + + +// if (curl_errno($ch)){ +// $data .= 'Retreive Base Page Error: ' . curl_error($ch); +// var_dump($data); +// } +// else { +// $info = rawurldecode(var_export(curl_getinfo($ch), true)); +// +// // Get the cookies: +// +// $skip = intval(curl_getinfo($ch, CURLINFO_HEADER_SIZE)); +// $responseHeader = substr($data, 0, $skip); +// +// echo "$info\n$responseHeader\n$data\n\n"; +// +// $e = 0; +// while (true) { +// $s = strpos($responseHeader, 'Set-Cookie: ', $e); +// if (!$s) { +// break; +// } +// $s += 12; +// $e = strpos($responseHeader, ';', $s); +// $cookie = substr($responseHeader, $s, $e - $s); +// $s = strpos($cookie, '='); +// $key = substr($cookie, 0, $s); +// $value = substr($cookie, $s); +// $cookies[$key] = $value; +// } +// } + + } + +} diff --git a/app/Http/Resources/CompanyResource.php b/app/Http/Resources/CompanyResource.php index f78c2326..ba3ef5d0 100644 --- a/app/Http/Resources/CompanyResource.php +++ b/app/Http/Resources/CompanyResource.php @@ -3,6 +3,7 @@ namespace App\Http\Resources; use App\Classes\ValueObjects\Constants\AccountStatus; +use App\Models\CompanyConnections; use Illuminate\Http\Resources\Json\JsonResource; class CompanyResource extends JsonResource @@ -18,10 +19,12 @@ class CompanyResource extends JsonResource return [ 'id' => $this->id, 'account_no' => $this->reference_no, + 'marking' => CompanyConnections::where('module_one', $this->modules->first()->id)->first()->marking, 'name' => $this->name, 'type' => $this->type, 'status' => AccountStatus::STATUS[$this->status], - 'delivery_address' => new AddressResource($this->deliveryAddress) + 'delivery_address' => new AddressResource($this->deliveryAddress), + 'contact' => new ContactResource($this->contacts->first()) ]; } } diff --git a/composer.json b/composer.json index f28aa35c..2ed5dcaf 100644 --- a/composer.json +++ b/composer.json @@ -16,7 +16,8 @@ "laravel/framework": "^7.0", "laravel/tinker": "^2.0", "spatie/laravel-activitylog": "^3.14", - "tymon/jwt-auth": "^1.0" + "tymon/jwt-auth": "^1.0", + "ext-curl": "*" }, "require-dev": { "facade/ignition": "^2.0", diff --git a/resources/assets/vue/components/authentication/forms/RegistrationFormComponent.vue b/resources/assets/vue/components/authentication/forms/RegistrationFormComponent.vue index 6249c7ad..98b1752d 100644 --- a/resources/assets/vue/components/authentication/forms/RegistrationFormComponent.vue +++ b/resources/assets/vue/components/authentication/forms/RegistrationFormComponent.vue @@ -136,15 +136,15 @@
-
+
- - + +
@@ -194,7 +194,7 @@
@@ -237,7 +237,7 @@ }) }, phone: {}, - wechat: {}, + wechat_id: {}, password: {}, confirm_password: {} @@ -249,7 +249,7 @@ required: this.type === 2 }, phone: { required, numeric }, - wechat: {}, + wechat_id: {}, password: { required }, confirm_password: { sameAsPassword: sameAs('password') } } @@ -264,7 +264,7 @@ type: 2, company_name: '', phone: '', - wechat: '', + wechat_id: '', password: '', confirm_password: '' } diff --git a/resources/assets/vue/components/importer/elements/CompanyComponent.vue b/resources/assets/vue/components/importer/elements/CompanyComponent.vue new file mode 100644 index 00000000..1924ec60 --- /dev/null +++ b/resources/assets/vue/components/importer/elements/CompanyComponent.vue @@ -0,0 +1,136 @@ + + \ No newline at end of file diff --git a/resources/assets/vue/components/order/elements/OrderComponent.vue b/resources/assets/vue/components/order/elements/OrderComponent.vue index b8a2ee7e..b5e21db3 100644 --- a/resources/assets/vue/components/order/elements/OrderComponent.vue +++ b/resources/assets/vue/components/order/elements/OrderComponent.vue @@ -14,7 +14,7 @@
@@ -49,7 +49,7 @@ diff --git a/resources/views/pages/dashboards/forwarder_profile.blade.php b/resources/views/pages/dashboards/forwarder_profile.blade.php index 7da8015c..84d22662 100644 --- a/resources/views/pages/dashboards/forwarder_profile.blade.php +++ b/resources/views/pages/dashboards/forwarder_profile.blade.php @@ -93,6 +93,15 @@
+
+ + + +
+
+
diff --git a/resources/views/pages/pdf/qr.blade.php b/resources/views/pages/pdf/qr.blade.php index 1f23c66a..271ef992 100644 --- a/resources/views/pages/pdf/qr.blade.php +++ b/resources/views/pages/pdf/qr.blade.php @@ -44,16 +44,16 @@ - {{----}} - {{----}} - {{----}} - + {{----}} + {{----}} + {{----}}
--}} -

@if(strtolower($delivery_address->state) === 'sabah') SB/ @elseif(strtolower($delivery_address->state) === 'sarawak') SRW/ @endif{{$order->order_number}}

- {{--
-
{{$delivery_address->street_one.' '.$delivery_address->street_two.' '.$delivery_address->city.' '.$delivery_address->post_code.' '.$delivery_address->state}}
+
+

@if(strtolower($delivery_address->state) === 'sabah') SB/ @elseif(strtolower($delivery_address->state) === 'sarawak') SRW/ @endif CIEF/{{$marking}}/{{$order->order_number}}

--}} + {{--
{{$delivery_address->street_one.' '.$delivery_address->street_two.' '.$delivery_address->city.' '.$delivery_address->post_code.' '.$delivery_address->state}}
--}} + {{--

仓库地址: