| Server IP : 34.87.99.72 / Your IP : 216.73.217.31 Web Server : Apache/2.4.46 (Unix) OpenSSL/1.1.1n System : Linux zlock-bitnami-lamp-prod-v2-vm 4.19.0-16-cloud-amd64 #1 SMP Debian 4.19.181-1 (2021-03-19) x86_64 User : bitnami ( 1000) PHP Version : 7.4.18 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : ON | Pkexec : OFF Directory : /opt/bitnami/apache/htdocs/app/app/Http/Controllers/ |
Upload File : |
<?php
namespace App\Http\Controllers;
use App\Http\Services\ShippingService;
use App\Http\Services\DhlService;
use Illuminate\Http\Request;
use App\Http\Requests\Shippings\GetDeliveryPartnerRequest;
use App\Http\Requests\Shippings\CalculateFeeRequest;
class ShippingController extends Controller
{
public function __construct(
ShippingService $shippingService,
DhlService $dhlService
)
{
$this->shippingService = $shippingService;
$this->dhlService = $dhlService;
}
/**
* @OA\Get(
*
* path="/api/shipping/delivery-partners",
* operationId="getDeliveryPartners",
* tags={"Shipping"},
* summary="Get Delivery Partners by Postcode",
* security={
* {
* "open_key": {}
* }
* },
* @OA\Parameter(
* name="locker_postcode",
* description="Locker Postcode",
* in="query",
* @OA\Schema(
* type="string"
* )
* ),
* @OA\Parameter(
* name="delivery_postcode",
* description="Delivery Postcode",
* in="query",
* @OA\Schema(
* type="string"
* )
* ),
* @OA\Parameter(
* name="locker_id",
* description="locker_id",
* in="query",
* @OA\Schema(
* type="string",
* default="4"
* )
* ),
* @OA\Parameter(
* name="box_size_id",
* description="box_size_id",
* in="query",
* @OA\Schema(
* type="string",
* default="2"
* )
* ),
* @OA\Response(
* response=200,
* description="Success",
* @OA\JsonContent()
* ),
* @OA\Response(response=400, description="Bad request"),
* @OA\Response(response=404, description="Resource Not Found"),
* @OA\Response(response=422, description="Unprocessable Entity"),
* @OA\Response(response=500, description="Internal Server Error"),
* )
*/
/**
* @OA\Post(
*
* path="/api/shipping/dhl/label/reprint",
* operationId="postReprintShippingLabel",
* tags={"Shipping - DHL"},
* summary="Reprint Shipping Label",
* @OA\RequestBody(
* description="https://jsonkeeper.com/b/1GGS",
* @OA\JsonContent(
* )
* ),
* @OA\Response(
* response=200,
* description="Success",
* @OA\JsonContent()
* ),
* @OA\Response(response=400, description="Bad request"),
* @OA\Response(response=404, description="Resource Not Found"),
* @OA\Response(response=422, description="Unprocessable Entity"),
* @OA\Response(response=500, description="Internal Server Error"),
* )
*/
/**
* @OA\Post(
*
* path="/api/shipping/dhl/shipment/creation",
* operationId="postShipmentCreation",
* tags={"Shipping - DHL"},
* summary="Create Shipment",
* @OA\RequestBody(
* description="https://jsonkeeper.com/b/NWRF",
* @OA\JsonContent(
* default="{""client_id"":""LTE2NDY2NzIwMg=="",""password"":""MjAzMDI5MTU"",""pickupAccountId"":""5264574522"",""soldToAccountId"":""5264574522"",""pickupDateTime"":""2021-11-08"",""handoverMethod"":""1"",""pickupAddress"":{""name"":""test"",""address1"":""test"",""address2"":""test"",""city"":""test"",""state"":""test"",""district"":""test"",""country"":""MY"",""postCode"":""00000"",""phone"":""123456789"",""email"":""johndoe@aa.com""},""shipmentItems"":[{""totalWeight"":""1"",""height"":""1.00"",""length"":""1.00"",""width"":""1.00"",""consigneeAddress"":{""name"":""test"",""address1"":""test"",""address2"":""test"",""city"":""test"",""state"":""test"",""district"":""test"",""country"":""MY"",""postCode"":""10000"",""phone"":""000"",""email"":""test@tst.com""},""currency"":""MYR"",""packageDesc"":""test""}]}"
* )
* ),
* @OA\Response(
* response=200,
* description="Success",
* @OA\JsonContent()
* ),
* @OA\Response(response=400, description="Bad request"),
* @OA\Response(response=404, description="Resource Not Found"),
* @OA\Response(response=422, description="Unprocessable Entity"),
* @OA\Response(response=500, description="Internal Server Error"),
* )
*/
/**
* @OA\Post(
*
* path="/api/shipping/dhl/tracking",
* operationId="postTracking",
* tags={"Shipping - DHL"},
* summary="Track Shipping",
* @OA\RequestBody(
* description="https://jsonkeeper.com/b/QQS9",
* @OA\JsonContent(
* )
* ),
* @OA\Response(
* response=200,
* description="Success",
* @OA\JsonContent()
* ),
* @OA\Response(response=400, description="Bad request"),
* @OA\Response(response=404, description="Resource Not Found"),
* @OA\Response(response=422, description="Unprocessable Entity"),
* @OA\Response(response=500, description="Internal Server Error"),
* )
*/
public function getDeliveryPartners(GetDeliveryPartnerRequest $request)
{
$payload = $request->validated();
$result = $this->shippingService->getDeliveryPartners($payload['locker_postcode'], $payload['delivery_postcode'], $payload['locker_id'] ?? null, $payload['box_size_id'] ?? null);
return self::successResponse("Success", $result);
}
public function calculateShippingFee(CalculateFeeRequest $request)
{
$payload = $request->validated();
$payload['subtotal'] = null;
$result = $this->shippingService->calculateShippingFee($payload['locker_postcode'], $payload['delivery_postcode'], $payload['courier_id'], $payload['subtotal'], $payload['item_weight']);
return self::successResponse("Success", $result);
}
public function postReprintShippingLabel(Request $request)
{
$result = $this->dhlService->reprintShippingLabel(
$this->dhlService->getAccessToken($request->client_id, $request->password),
$request->pickupAccountId,
$request->soldToAccountId,
$request->shipmentID
);
return self::successResponse("Success", $result);
}
public function postShipmentCreation(Request $request)
{
$result = $this->dhlService->createShipment($request);
return self::successResponse("Success", $result);
}
public function postTracking(Request $request)
{
$result = $this->dhlService->tracking(
$request->pickupAccountId,
$request->soldToAccountId,
$request->trackingReferenceNumber
);
return self::successResponse("Success", $result);
}
}