$this->currentPrecio->current->fecha) { return $this->currentPrecio; } $precio = array_reduce(array_filter($this->precios, function(Precio $precio) use ($dateTime) { return $dateTime > $precio->current->fecha; }), function(?Precio $max, Precio $precio) { if ($max === null) { return $precio; } return $max->current->fecha > $precio->current->fecha ? $max : $precio; }); if ($precio === null) { $precio = array_reduce(array_filter($this->precios, function(Precio $precio) use ($dateTime) { return $dateTime < $precio->current->fecha; }), function(?Precio $min, Precio $precio) { if ($min === null) { return $precio; } return $min->current->fecha < $precio->current->fecha ? $min : $precio; }); } return $precio; } public function jsonSerialize(): mixed { return array_merge(parent::jsonSerialize(), [ 'subtipo' => $this->subtipo, 'piso' => $this->piso, 'descripcion' => $this->descripcion, 'orientacion' => $this->orientacion, 'proyecto_tipo_unidad' => $this->proyectoTipoUnidad ]); } }