ultimatepos/Modules/Tms/Http/Controllers/ContactTmsController.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]);
}
}