<?php

namespace OSM\Element\Member;

use OSM\Element\Member\Member;
use OSM\Point;

class Way extends Member {

    public array $points = [];

    public function completeFromArray(array $array): static
    {
        $hasGeometry = isset($array['geometry']);
        if ($hasGeometry) {
            $items = $array['geometry'];
            foreach ($items as $item) {
                $point = Point::createFromArray($item);
                $this->points[] = $point;
            }
        }

        return $this;
    }

    public function getFirstPoint(): Point {
        return reset($this->points);
    }

    public function getLastPoint(): Point {
        return end($this->points);
    }

    public function reversePoints(): static {
        $this->points = array_reverse($this->points);
        return $this;
    }
}