public function getFleetData($vehicle_id = null) { $vehicles = Vehicle::where('company_id', Auth::user()['company_id']); if (!empty($vehicle_id)) { $vehicles = $vehicles->where('id', $vehicle_id); } $vehicles = $vehicles->get(); $tireData = []; $modelMaps = []; $gpsData = []; if (!empty($vehicles)) { $tires = PartRepositoryEloquent::getTiresVehicle(); $fleetGpsData = $this->getFleetGpsData(); $tireAndSensorData = $this->getFleetTireAndSensorData(); foreach ($vehicles as $vehicle) { $modelMaps[$vehicle->model_vehicle_id] = $vehicle->model->map; $tireData[$vehicle->id] = []; $tiresPositions = PartRepositoryEloquent::getTiresPositions($tires, $vehicle->id); if (!empty($tiresPositions)) { foreach ($tiresPositions as $position => $filled) { if ($filled) { if (!empty($tireAndSensorData[$vehicle->id][$position])) { $tireData[$vehicle->id][$position] = $tireAndSensorData[$vehicle->id][$position]; } else { $tireData[$vehicle->id][$position] = $tireAndSensorData[0]; } } } } $gpsData[$vehicle->id] = []; if (!empty($fleetGpsData[$vehicle->id])) { $gpsData[$vehicle->id] = $fleetGpsData[$vehicle->id]; } } } return ['vehicles' => $vehicles, 'tireData' => $tireData, 'gpsData' => $gpsData, 'modelMaps' => $modelMaps]; }
public static function getVehiclesStatistics() { $vehicles['in_use']['color'] = '#3871cf'; $vehicles['in_use']['result'] = Vehicle::join('trips', 'vehicles.id', '=', 'trips.vehicle_id')->where('vehicles.company_id', Auth::user()['company_id'])->where('trips.pickup_date', '<=', Carbon::now())->where(function ($query) { $query->where('deliver_date', '>', Carbon::now())->orWhereNull('deliver_date'); })->count(); $vehicles['maintenance']['color'] = '#cf7138'; $vehicles['maintenance']['result'] = Vehicle::join('entries', 'vehicles.id', '=', 'entries.vehicle_id')->join('types', 'types.id', '=', 'entries.entry_type_id')->where('vehicles.company_id', Auth::user()['company_id'])->where('types.entity_key', 'vehicle')->where('types.name', 'repair')->where('entries.datetime_ini', '<=', Carbon::now())->where(function ($query) { $query->where('datetime_end', '>', Carbon::now())->orWhereNull('datetime_end'); })->count(); $vehicles['available']['color'] = '#38cf71'; $vehiclesOff = $vehicles['maintenance']['result'] + $vehicles['in_use']['result']; $vehicles['available']['result'] = Vehicle::where('vehicles.company_id', Auth::user()['company_id'])->count() - $vehiclesOff; return $vehicles; }