diff --git a/src/Model/Setlist.php b/src/Model/Setlist.php index 8b631ce..a5fd232 100644 --- a/src/Model/Setlist.php +++ b/src/Model/Setlist.php @@ -11,6 +11,8 @@ namespace Core23\SetlistFm\Model; +use DateTime; + final class Setlist { /** @@ -54,26 +56,26 @@ final class Setlist private $versionId; /** - * @var \DateTime + * @var DateTime */ private $eventDate; /** - * @var \DateTime|null + * @var DateTime|null */ private $updateDate; /** - * @param string $id - * @param Artist|null $artist - * @param Venue|null $venue - * @param Tour|null $tour - * @param Set[] $sets - * @param string|null $info - * @param string|null $url - * @param string|null $versionId - * @param \DateTime $eventDate - * @param \DateTime|null $updateDate + * @param string $id + * @param Artist|null $artist + * @param Venue|null $venue + * @param Tour|null $tour + * @param Set[] $sets + * @param string|null $info + * @param string|null $url + * @param string|null $versionId + * @param DateTime $eventDate + * @param DateTime|null $updateDate */ public function __construct( string $id, @@ -84,8 +86,8 @@ public function __construct( ?string $info, ?string $url, ?string $versionId, - \DateTime $eventDate, - ?\DateTime $updateDate + DateTime $eventDate, + ?DateTime $updateDate ) { $this->id = $id; $this->artist = $artist; @@ -164,17 +166,17 @@ public function getVersionId(): ?string } /** - * @return \DateTime + * @return DateTime */ - public function getEventDate(): \DateTime + public function getEventDate(): DateTime { return $this->eventDate; } /** - * @return \DateTime|null + * @return DateTime|null */ - public function getUpdateDate(): ?\DateTime + public function getUpdateDate(): ?DateTime { return $this->updateDate; } @@ -189,7 +191,6 @@ public static function fromApi(array $data): self $artist = null; $venue = null; $tour = null; - $sets = []; if (\array_key_exists('artist', $data)) { $artist = Artist::fromApi($data['artist']); @@ -201,6 +202,31 @@ public static function fromApi(array $data): self $tour = Tour::fromApi($data['tour']); } + $sets = self::createSetsFromApi($data); + + return new self( + $data['id'], + $artist, + $venue, + $tour, + $sets, + $data['info'] ?? null, + $data['url'] ?? null, + $data['versionId'] ?? null, + new DateTime($data['eventDate']), + $data['lastUpdated'] ? new DateTime($data['lastUpdated']) : null + ); + } + + /** + * @param array $data + * + * @return array + */ + private static function createSetsFromApi(array $data): array + { + $sets = []; + $setData = []; if (\array_key_exists('sets', $data) && \array_key_exists('set', $data['sets'])) { @@ -213,17 +239,6 @@ public static function fromApi(array $data): self $sets[] = Set::fromApi($set); } - return new self( - $data['id'], - $artist, - $venue, - $tour, - $sets, - $data['info'] ?? null, - $data['url'] ?? null, - $data['versionId'] ?? null, - new \DateTime($data['eventDate']), - $data['lastUpdated'] ? new \DateTime($data['lastUpdated']) : null - ); + return $sets; } }