mirror of
https://gitlab.com/CIEFWorldwideSdnBhd/izyim.git
synced 2026-08-25 07:23:57 +00:00
95 lines
5.4 KiB
PHP
95 lines
5.4 KiB
PHP
<?php
|
|
|
|
namespace App\Classes\Modules\Orders\Services;
|
|
|
|
|
|
use App\Classes\Constants;
|
|
use App\Models\CustomIssues;
|
|
use App\Models\Order;
|
|
use Carbon\Carbon;
|
|
use Illuminate\Support\Facades\DB;
|
|
use Illuminate\Support\Collection;
|
|
|
|
class ListsOrderHistory
|
|
{
|
|
|
|
|
|
public function execute(string $orderId, Carbon $createdAt, bool $complete, Carbon $lastUpdate){
|
|
/** @var Order $order */
|
|
$order = Order::findOrFail($orderId);
|
|
|
|
$orderSteps = $order->orderSteps()->where('complete', true)->orderBy('sequence')->get();
|
|
|
|
$history = new Collection();
|
|
|
|
$history->push(['date' => $createdAt->format('d-m-Y H:i'), 'description' => 'Order number has been created']);
|
|
|
|
|
|
foreach ($orderSteps as $step){
|
|
switch ($step->reference_id){
|
|
case Constants::ORDER_PROCESSING_STEP:
|
|
$history->push(['date' => $step->updated_at->format('d-m-Y H:i'), 'description' => 'warehouse confirmed']);
|
|
break;
|
|
case Constants::ORDER_NO_WAREHOUSE_PENDING_SUPPLIER:
|
|
$history->push(['date' => $step->updated_at->format('d-m-Y H:i'), 'description' => 'Your Order has been loaded into container']);
|
|
break;
|
|
case Constants::ORDER_WAREHOUSE_RECEIVING_STEP:
|
|
$history->push(['date' => $step->updated_at->format('d-m-Y H:i'), 'description' => 'Arrived at China\'s warehouse on: ['.Carbon::parse($order->receiveNotes()->firstOrFail()->receive_date)->format('d-m-Y').']']);
|
|
break;
|
|
case Constants::ORDER_WAREHOUSE_PACKING_STEP:
|
|
$packages = $order->packingLists()->firstOrFail()->packages()->selectRaw(DB::raw('((width/100) * (height/100) * (length/100)) * quantity as cbm, quantity'))->get();
|
|
$history->push(['date' => $step->updated_at->format('d-m-Y H:i'), 'description' => '['.$packages->sum('quantity').' Packages, '.number_format((float)$packages->sum('cbm'), 2, '.', '').' CBM] Your order has been loaded into container']);
|
|
$history->push(['date' => $step->updated_at->format('d-m-Y H:i'), 'description' => 'Invoice has been issued, waiting for shipping payment']);
|
|
break;
|
|
case Constants::ORDER_SHIPPING_STEP:
|
|
$shippingArrangment = $order->shippingArrangement()->first();
|
|
if($shippingArrangment){
|
|
$shippingSchedules = $shippingArrangment->shippingSchedule()->get();
|
|
foreach ($shippingSchedules as $schedule){
|
|
if($schedule->status === "2"){
|
|
$customeIssue = CustomIssues::where('schedule_id', $schedule->id)->firstOrFail();
|
|
$history->push(['date' => $step->updated_at->format('d-m-Y H:i'), 'description' => '[ETD: '.$schedule->ETD.', ETA: '.$schedule->ETA.'] Shipping Schedule failed due to: '.$customeIssue->remark]);
|
|
} else {
|
|
$history->push(['date' => $step->updated_at->format('d-m-Y H:i'), 'description' => '[ETD: '.$schedule->ETD.', ETA: '.$schedule->ETA.'] Your Order has been scheduled for shipping ']);
|
|
}
|
|
}
|
|
}
|
|
$history->push(['date' => $step->updated_at->format('d-m-Y H:i'), 'description' => 'Arrived to Malaysian port']);
|
|
$history->push(['date' => $step->updated_at->format('d-m-Y H:i'), 'description' => 'Custom clearance is successful']);
|
|
break;
|
|
case Constants::ORDER_WAREHOUSE_ARRIVAL_STEP:
|
|
$history->push(['date' => $step->updated_at->format('d-m-Y H:i'), 'description' => 'Arrived at Malaysia\'s warehouse']);
|
|
break;
|
|
case Constants::ORDER_WAREHOUSE_UNPACKING_STEP:
|
|
$history->push(['date' => $step->updated_at->format('d-m-Y H:i'), 'description' => 'Your Order has been unloaded and being prepared for delivery']);
|
|
break;
|
|
case Constants::ORDER_DELIVERY_STEP:
|
|
$history->push(['date' => $step->updated_at->format('d-m-Y H:i'), 'description' => 'Out for delivery']);
|
|
break;
|
|
}
|
|
}
|
|
|
|
if($order->current_step === Constants::ORDER_SHIPPING_STEP){
|
|
$shippingArrangment = $order->shippingArrangement()->first();
|
|
if($shippingArrangment){
|
|
$shippingSchedules = $shippingArrangment->shippingSchedule()->get();
|
|
foreach ($shippingSchedules as $schedule){
|
|
if($schedule->status === "2"){
|
|
$customeIssue = CustomIssues::where('schedule_id', $schedule->id)->firstOrFail();
|
|
$history->push(['date' => $step->updated_at->format('d-m-Y H:i'), 'description' => '[ETD: '.$schedule->ETD.', ETA: '.$schedule->ETA.'] Shipping Schedule failed due to: '.$customeIssue->remark]);
|
|
} else {
|
|
$history->push(['date' => $step->updated_at->format('d-m-Y H:i'), 'description' => '[ETD: '.$schedule->ETD.', ETA: '.$schedule->ETA.'] Your Order has been scheduled for shipping ']);
|
|
}
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
if($complete){
|
|
$history->push(['date' => $lastUpdate->format('d-m-Y H:i'), 'description' => 'Your Order has successfully been delivered']);
|
|
}
|
|
|
|
return $history->reverse()->toArray();
|
|
}
|
|
|
|
} |