large commit

This commit is contained in:
omair saleh
2020-10-22 12:46:06 +08:00
parent 30438d3737
commit 5fb880ef83
14 changed files with 449 additions and 67 deletions
@@ -1,21 +0,0 @@
<?php
namespace App\Classes\General\Eloquent\Filters;
use App\Classes\ValueObjects\Constants\ModularTypes;
use Illuminate\Database\Eloquent\Builder;
class ModuleType implements Filter
{
/**
* @param Builder $builder
* @param $value
* @return Builder|mixed
*/
public static function apply(Builder $builder, $value)
{
return $builder->where('module_type', ModularTypes::MODULAR_MODULES[$value]);
}
}
@@ -1,21 +0,0 @@
<?php
namespace App\Classes\General\Eloquent\Filters;
use App\Classes\ValueObjects\Constants\ModularTypes;
use Illuminate\Database\Eloquent\Builder;
class ProjectType implements Filter
{
/**
* @param Builder $builder
* @param $value
* @return Builder|mixed
*/
public static function apply(Builder $builder, $value)
{
return $builder->where('project_type', $value);
}
}
@@ -2,10 +2,10 @@
namespace App\Classes\General\Eloquent\Filters; namespace App\Classes\General\Eloquent\Filters;
use App\Classes\ValueObjects\Constants\ModularTypes; use App\Classes\ValueObjects\Constants\ModuleTypes;
use Illuminate\Database\Eloquent\Builder; 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) 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);
});
} }
} }
@@ -60,7 +60,6 @@ class AuthenticateUserLogic extends AbstractControllerLogic
return $this->response(['access_token' => $token, 'redirect_url' => $this->authenticationRedirect->url()]); return $this->response(['access_token' => $token, 'redirect_url' => $this->authenticationRedirect->url()]);
} catch (\Exception $exception){ } catch (\Exception $exception){
dd($exception);
throw new ErrorException($exception->getMessage(), $exception->getCode()); throw new ErrorException($exception->getMessage(), $exception->getCode());
} }
@@ -12,7 +12,7 @@ class CreatesCompanyConnection
public function execute(ConnectionObject $connection){ public function execute(ConnectionObject $connection){
$connection->getInviter()->connections()->attach($connection->getInvitee(), $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, 'status' => ConnectionStatus::APPROVED,
'instigator' => $connection->getInvitee()->id 'instigator' => $connection->getInvitee()->id
] ]
@@ -8,6 +8,7 @@ use App\Classes\ValueObjects\Constants\HttpStatus;
use App\Classes\ValueObjects\Response\ApiResponseObject; use App\Classes\ValueObjects\Response\ApiResponseObject;
use App\Http\Resources\OrderResource; use App\Http\Resources\OrderResource;
use App\Models\Company; use App\Models\Company;
use App\Models\CompanyConnections;
use App\Models\Order; use App\Models\Order;
use Illuminate\Http\Request; use Illuminate\Http\Request;
@@ -71,7 +72,8 @@ class OrderController
'company' => $order->importer(), 'company' => $order->importer(),
'delivery_address' => $order->address, 'delivery_address' => $order->address,
'warehouse_address' => $warehouseAddress, '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); return view('pages.pdf.qr', $data);
+271
View File
@@ -0,0 +1,271 @@
<?php
namespace App\Http\Controllers;
use App\Classes\Modules\Accounts\ControllersLogic\CheckEmailLogic;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
class TestController
{
public function index(){
$cookies = $this->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;
// }
// }
}
}
+4 -1
View File
@@ -3,6 +3,7 @@
namespace App\Http\Resources; namespace App\Http\Resources;
use App\Classes\ValueObjects\Constants\AccountStatus; use App\Classes\ValueObjects\Constants\AccountStatus;
use App\Models\CompanyConnections;
use Illuminate\Http\Resources\Json\JsonResource; use Illuminate\Http\Resources\Json\JsonResource;
class CompanyResource extends JsonResource class CompanyResource extends JsonResource
@@ -18,10 +19,12 @@ class CompanyResource extends JsonResource
return [ return [
'id' => $this->id, 'id' => $this->id,
'account_no' => $this->reference_no, 'account_no' => $this->reference_no,
'marking' => CompanyConnections::where('module_one', $this->modules->first()->id)->first()->marking,
'name' => $this->name, 'name' => $this->name,
'type' => $this->type, 'type' => $this->type,
'status' => AccountStatus::STATUS[$this->status], 'status' => AccountStatus::STATUS[$this->status],
'delivery_address' => new AddressResource($this->deliveryAddress) 'delivery_address' => new AddressResource($this->deliveryAddress),
'contact' => new ContactResource($this->contacts->first())
]; ];
} }
} }
+2 -1
View File
@@ -16,7 +16,8 @@
"laravel/framework": "^7.0", "laravel/framework": "^7.0",
"laravel/tinker": "^2.0", "laravel/tinker": "^2.0",
"spatie/laravel-activitylog": "^3.14", "spatie/laravel-activitylog": "^3.14",
"tymon/jwt-auth": "^1.0" "tymon/jwt-auth": "^1.0",
"ext-curl": "*"
}, },
"require-dev": { "require-dev": {
"facade/ignition": "^2.0", "facade/ignition": "^2.0",
@@ -136,15 +136,15 @@
</div> </div>
</div> </div>
<div class="row"> <div class="row">
<div class="col bg-white b-b b-t b-grey animated" :class="[{'shake': $v.parameters.wechat.$error}]" :style="[$v.parameters.wechat.$error ? {'border-bottom': 'solid 2px red !important'} : {}]"> <div class="col bg-white b-b b-t b-grey animated" :class="[{'shake': $v.parameters.wechat_id.$error}]" :style="[$v.parameters.wechat_id.$error ? {'border-bottom': 'solid 2px red !important'} : {}]">
<div class="row align-items-center"> <div class="row align-items-center">
<div class="col pl-md-0 pr-md-0 bg-white"> <div class="col pl-md-0 pr-md-0 bg-white">
<div class="input-group transparent b-grey"> <div class="input-group transparent b-grey">
<span class="input-group-addon no-border"> <span class="input-group-addon no-border">
<i class="fa fa-weixin fa-fw p-l-15 p-t-20" style="padding-right: 22px;margin-left: -4px;"></i> <i class="fa fa-weixin fa-fw p-l-15 p-t-20" style="padding-right: 22px;margin-left: -4px;"></i>
</span> </span>
<input v-model="parameters.wechat" placeholder="Wechat ID" class="form-control no-border bg-white p-t-35 p-b-35 p-l-0 p-r-0"> <input v-model="parameters.wechat_id" placeholder="wechat_id ID" class="form-control no-border bg-white p-t-35 p-b-35 p-l-0 p-r-0">
<validation-error-component :validator="$v.parameters.wechat" class="absolute fs-12" style=" top: 10px; right: 15px; z-index: 99;"></validation-error-component> <validation-error-component :validator="$v.parameters.wechat_id" class="absolute fs-12" style=" top: 10px; right: 15px; z-index: 99;"></validation-error-component>
</div> </div>
</div> </div>
</div> </div>
@@ -194,7 +194,7 @@
<div class="row m-t-30 align-items-center"> <div class="row m-t-30 align-items-center">
<div class="col-auto p-l-0 animated fadeInLeftBig slow"> <div class="col-auto p-l-0 animated fadeInLeftBig slow">
<a> <a>
<div class="b-t b-b b-r b-success bg-success all-caps text-white p-t-15 p-b-15 p-l-50 p-r-50 bold font-lato pointer pointer" @click="submit(route('api.account.authentication.registration'), 'post', section, false, false)" style="letter-spacing: 8px;"><i class="fa fa-check fs-13"></i> Complete</div> <div class="b-t b-b b-r b-success bg-success all-caps text-white p-t-15 p-b-15 p-l-50 p-r-50 bold font-lato pointer pointer" @click="console.log(parameters)" style="letter-spacing: 8px;"><i class="fa fa-check fs-13"></i> Complete</div>
</a> </a>
</div> </div>
<div class="col animated fadeInRightBig slow"> <div class="col animated fadeInRightBig slow">
@@ -237,7 +237,7 @@
}) })
}, },
phone: {}, phone: {},
wechat: {}, wechat_id: {},
password: {}, password: {},
confirm_password: {} confirm_password: {}
@@ -249,7 +249,7 @@
required: this.type === 2 required: this.type === 2
}, },
phone: { required, numeric }, phone: { required, numeric },
wechat: {}, wechat_id: {},
password: { required }, password: { required },
confirm_password: { sameAsPassword: sameAs('password') } confirm_password: { sameAsPassword: sameAs('password') }
} }
@@ -264,7 +264,7 @@
type: 2, type: 2,
company_name: '', company_name: '',
phone: '', phone: '',
wechat: '', wechat_id: '',
password: '', password: '',
confirm_password: '' confirm_password: ''
} }
File diff suppressed because one or more lines are too long
@@ -14,7 +14,7 @@
<div class="col"> <div class="col">
<div class="fs-9 muted all-caps">Importer: <div class="fs-9 muted all-caps">Importer:
<a href="https://www.izyim.com/company/1/profile"> <a :href="route('dashboard.importer', order.company.id)">
<span class="fs-9 text-complete bold">CIEF/685CLY</span> <span class="fs-9 text-complete bold">CIEF/685CLY</span>
</a> </a>
</div> </div>
@@ -49,7 +49,7 @@
<div class="col-3 d-none d-md-block"> <div class="col-3 d-none d-md-block">
<div class="row no-margin"> <div class="row no-margin">
<div class="col no-padding relative b-a b-grey b-dashed qr-container"> <div class="col no-padding relative b-a b-grey b-dashed qr-container">
<a href="https://www.izyim.com/3573/qr/pdf/download" target="_blank"> <a :href="route('order.qr.download', order.id)" target="_blank">
<div class="absolute padding-10 bg-white b-b b-l b-grey b-dashed pdf-button" style="right: 0px; top: 0px;"> <div class="absolute padding-10 bg-white b-b b-l b-grey b-dashed pdf-button" style="right: 0px; top: 0px;">
<svg <svg
xmlns="http://www.w3.org/2000/svg" x="0px" y="0px" width="30" height="30" viewBox="0 0 172 172" style="fill: rgb(0, 0, 0);"> xmlns="http://www.w3.org/2000/svg" x="0px" y="0px" width="30" height="30" viewBox="0 0 172 172" style="fill: rgb(0, 0, 0);">
@@ -95,7 +95,7 @@
</div> </div>
</div> </div>
<div class="row"> <div class="row">
<a :href="route('order.qr.download', data.id)" target="_blank" class="btn btn-block btn-sm b-rad-none btn-success">Download Qr Reference PDF</a> <a :href="route('order.qr.download', order.id)" target="_blank" class="btn btn-block btn-sm b-rad-none btn-success">Download Qr Reference PDF</a>
</div> </div>
</div> </div>
</div> </div>
@@ -93,6 +93,15 @@
</div> </div>
</div> </div>
<div class="row"> <div class="row">
<div class="col-7">
<list-component key="2" section="importerSection" endpoint="{{ route('api.company.list') }}" :options='{"Importer":"true"}'>
<template slot="list" slot-scope="{data}">
<company-component :data="data"></company-component>
</template>
</list-component>
</div>
</div>
<div class="row d-none">
<div class="col"> <div class="col">
<div class="row"> <div class="row">
<div class="col bg-white"> <div class="col bg-white">
+7 -7
View File
@@ -44,16 +44,16 @@
<td width="70%" style="border: 2px solid #000000; padding: 15px !important;"> <td width="70%" style="border: 2px solid #000000; padding: 15px !important;">
<table> <table>
<tbody> <tbody>
{{--<tr>--}}
{{--<td style="border-bottom: solid 2px #000000;">--}}
<h3 style="margin-top: 0px !important; margin-bottom: 10px !important;">@if(strtolower($delivery_address->state) === 'sabah') SB/ @elseif(strtolower($delivery_address->state) === 'sarawak') SRW/ @endif{{$order->order_number}}</h3>
{{--</td>--}}
{{--</tr>--}}
<tr> <tr>
<td style="border-bottom: solid 1px #000000;"> <td style="border-bottom: solid 2px #000000;">
<h5 style="margin-top: 10px !important; margin-bottom: 10px !important; word-wrap: break-word">{{$delivery_address->street_one.' '.$delivery_address->street_two.' '.$delivery_address->city.' '.$delivery_address->post_code.' '.$delivery_address->state}}</h5> <h3 style="margin-top: 0px !important; margin-bottom: 10px !important;">@if(strtolower($delivery_address->state) === 'sabah') SB/ @elseif(strtolower($delivery_address->state) === 'sarawak') SRW/ @endif CIEF/{{$marking}}/{{$order->order_number}}</h3>
</td> </td>
</tr> </tr>
{{--<tr>--}}
{{--<td style="border-bottom: solid 1px #000000;">--}}
{{--<h5 style="margin-top: 10px !important; margin-bottom: 10px !important; word-wrap: break-word">{{$delivery_address->street_one.' '.$delivery_address->street_two.' '.$delivery_address->city.' '.$delivery_address->post_code.' '.$delivery_address->state}}</h5>--}}
{{--</td>--}}
{{--</tr>--}}
<tr> <tr>
<td> <td>
<p style="font-size: 12px; margin-bottom: 0 !important; margin-top: 10px !important;">仓库地址:</p> <p style="font-size: 12px; margin-bottom: 0 !important; margin-top: 10px !important;">仓库地址:</p>