44 lines
1.5 KiB
PHP
44 lines
1.5 KiB
PHP
<?php
|
|
|
|
namespace Modules\Tms\Http\Controllers;
|
|
|
|
use Illuminate\Http\Request;
|
|
use Illuminate\Routing\Controller;
|
|
use Modules\Tms\Http\Controllers\Concerns\AuthorizesTms;
|
|
use Modules\Tms\Models\Shipment;
|
|
use Modules\Tms\Utils\TmsUtil;
|
|
|
|
class ContactTmsController extends Controller
|
|
{
|
|
use AuthorizesTms;
|
|
|
|
public function __construct(protected TmsUtil $tmsUtil) {}
|
|
|
|
public function shipments(Request $request, $contact_id)
|
|
{
|
|
$this->authorizeTmsAccess('tms.shipments.view');
|
|
$business_id = $this->tmsUtil->getBusinessId();
|
|
$statuses = $this->tmsUtil->shipmentStatuses();
|
|
|
|
$shipments = Shipment::where('business_id', $business_id)
|
|
->where('contact_id', $contact_id)
|
|
->with(['driver:id,name', 'vehicle:id,plate_number'])
|
|
->orderByDesc('created_at')
|
|
->limit(50)
|
|
->get()
|
|
->map(function ($s) use ($statuses) {
|
|
return [
|
|
'id' => $s->id,
|
|
'ref_no' => $s->ref_no,
|
|
'status' => $statuses[$s->status] ?? $s->status,
|
|
'driver' => $s->driver?->name,
|
|
'vehicle' => $s->vehicle?->plate_number,
|
|
'scheduled_at' => $s->scheduled_at?->format('Y-m-d H:i'),
|
|
'url' => action([ShipmentController::class, 'show'], [$s->id]),
|
|
];
|
|
});
|
|
|
|
return response()->json(['success' => true, 'data' => $shipments]);
|
|
}
|
|
}
|