diff options
Diffstat (limited to 'foray/Presenters')
-rw-r--r-- | foray/Presenters/PenguinItemPresenter.swift | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/foray/Presenters/PenguinItemPresenter.swift b/foray/Presenters/PenguinItemPresenter.swift new file mode 100644 index 0000000..0420825 --- /dev/null +++ b/foray/Presenters/PenguinItemPresenter.swift @@ -0,0 +1,32 @@ +// +// PenguinItemPresenter.swift +// foray +// +// Created by Nicholas Tay on 24/3/2022. +// + +import Foundation + +class PenguinItemPresenter { + func getData(onComplete: @escaping ([PenguinItemViewModel]) -> ()) { + ForayNetworkManager.shared.get( + url: "https://users.windblume.net/~nick/upload/dummy.json", + onComplete: { (apiItems: [PenguinItemModel]) in + onComplete(self.transform(models: apiItems)) + }) + } + + func transform(models: [PenguinItemModel]) -> [PenguinItemViewModel] { + let dateFormatter = DateFormatter() + dateFormatter.dateFormat = "yyyy-MM-dd" + + return models + .sorted { $0.releaseDate < $1.releaseDate } + .map { + PenguinItemViewModel(type: $0.type, + releaseDateFormatted: dateFormatter.string(from: $0.releaseDate), + year: Calendar.current.component(.year, from: $0.releaseDate), + id: $0.id, name: $0.name) + } + } +} |