'integer', 'ip_ketinggian' => 'decimal:6' ]; /** * Get IP ketinggian by floor number */ public static function getIpKetinggianByFloor(int $floorNumber): float { $index = self::where('floor_number', $floorNumber)->first(); return $index ? (float) $index->ip_ketinggian : 1.0; } /** * Get all IP ketinggian mapping as array */ public static function getAllMapping(): array { return self::orderBy('floor_number') ->pluck('ip_ketinggian', 'floor_number') ->toArray(); } /** * Get available floor numbers */ public static function getAvailableFloors(): array { return self::orderBy('floor_number') ->pluck('floor_number') ->toArray(); } /** * Scope: By floor number */ public function scopeByFloor($query, int $floorNumber) { return $query->where('floor_number', $floorNumber); } }