with('fboVehicles') ->whereIn('type',['port','warehouse']) ->get() ->map(function ($location) { $location->vehicle_count = $location->vehicles->count(); $location->fbo_vehicle_count = $location->fboVehicles->count(); $location->count = ($location->vehicle_count > 0) ? $location->vehicle_count : $location->fbo_vehicle_count; return $location; }); foreach ($locations as &$location) { unset($location->vehicles); unset($location->fboVehicles); } return Util::success($locations); } /** * Get all locations that have vehicles */ public function production(Request $request) { $where = []; $status = $request->post('status', ''); if($status == 1){ $status = [5,6]; }elseif ($status == 2){ $status = [4]; }elseif ($status == 3){ $status = [1,2,3,7,8]; $where[] = ['vin' ,'<>', null]; }elseif ($status == 4){ $status = [1,2,3,7,8]; $where[] = ['vin' ,'=', null]; } $vehicles = Vehicle::select('locations_id')->where($where)->whereNotNull('locations_id'); if(!empty($status)){ $vehicles = $vehicles->whereIn('status',$status); } $locations_id = $vehicles->groupBy('locations_id')->get(); $locations_id = $locations_id->pluck('locations_id')->toArray(); $locations = Location::with('vehicles') ->with('fboVehicles') ->whereIn('id',$locations_id) ->get() ->map(function ($location) { $location->vehicle_count = $location->vehicles->count(); $location->fbo_vehicle_count = $location->fboVehicles->count(); $location->count = ($location->vehicle_count > 0) ? $location->vehicle_count : $location->fbo_vehicle_count; return $location; }); foreach ($locations as &$location) { $location->status = $request->post('status', ''); unset($location->vehicles); unset($location->fboVehicles); } return Util::success($locations); } /** * Get a specific location with its vehicles */ public function show(Request $request, $id) { $location = Location::hasVehicles() ->with('vehicles') ->find($id); if (!$location) { return Util::fail(null, 'Location not found or has no vehicles'); } return Util::success($location); } }