notes.swift
import Foundation
import FirebaseDatabase
class CreateOfferPresenter: CreateOfferModuleInput {
private var pictures = [String]()
private var catKey: String?
private var key: String?
private var name: String?
private var text: String?
func setKeys(_ catKey: String, _ key: String) {
self.catKey = catKey
self.key = key
}
private func onDidEndEditing(type: EtFieldType, value: String?) {
switch type {
case .name: self.name = value
case .text: self.text = value
default: print("CreateOfferPresenter, onDidEndEditing, value: \(String(describing: value))")
}
}
fileprivate let interactor: CreateOfferInteractorProtocol
fileprivate let router: CreateOfferRouterProtocol
var viewBuilder: ViewBuilder!
init(interactor: CreateOfferInteractorProtocol, router: CreateOfferRouterProtocol) {
self.interactor = interactor
self.router = router
}
// MARK: - Weak properties
weak var view: CreateOfferViewInput? {
didSet {
setupView()
}
}
}
// MARK: Setup View
extension CreateOfferPresenter {
func setupView() {
view?.onViewDidLoad = { [weak self] in
guard let catKey = self?.catKey else { return }
guard let key = self?.key else { return }
guard let `self` = self else { return }
self.interactor.fetchOfferDetail(catKey, key) { snap in
var (models, pictures) = self.parseOfferDetail(snap)
self.pictures = pictures
self.view?.configureView()
models.append(ImagePickerModel(key: "key"))
self.view?.showOfferForm([ImagePickerModel(key: "key")])
}
}
view?.onRequestedViewforImagePickerCell = { [weak self] key in
guard let `self` = self else { return nil }
return self.viewBuilder.build(forKey: key, data: self.pictures)
}
view?.onCancelBtnTap = { [weak self] in
self?.router.dismissModalViewController()
}
view?.onDoneBtnTap = { [weak self] in
self?.router.dismissModalViewController()
}
}
}
extension CreateOfferPresenter {
private func parseOfferDetail(_ snap: DataSnapshot) -> ([AnyObject], [String]) {
let offer = OfferModel(snap)
var models = [AnyObject]()
let titleField = EditTextFieldModel(offer.name, R.string.localizable.hint_title(), fieldType: .name, self.onDidEndEditing)
let titleText = EditTextFieldModel(offer.name, R.string.localizable.hint_text(), fieldType: .text, self.onDidEndEditing)
models.append(titleField)
models.append(titleText)
return (models, offer.pictures ?? [])
}
}
let images = [
"https://firebasestorage.googleapis.com/v0/b/samuiplus-9d4b0.appspot.com/o/categories%2Foffers%2F-L7ZLum7uwZ7IAS1gP0n%2F-L7bM1f2aYGGwLNCDSNr%2Fimg_1518014663757.jpg?alt=media&token=34095b90-a53a-4413-8e67-f5633d154c1f",
"https://firebasestorage.googleapis.com/v0/b/samuiplus-9d4b0.appspot.com/o/categories%2Foffers%2F-L85HnRFlWJJwZeqHtLn%2F%D0%A1%D1%80%D0%B5%D0%B4%D0%B8-%D1%80%D0%B8%D1%81%D0%BE%D0%B2%D1%8B%D1%85-%D0%BF%D0%BE%D0%BB%D0%B5%D0%B8%CC%86-%D0%BE.-%D0%91%D0%B0%D0%BB%D0%B8-%D0%98%D0%BD%D0%B4%D0%BE%D0%BD%D0%B5%D0%B7%D0%B8%D1%8F.jpg?alt=media&token=96f4fbec-ca21-47ec-a776-af9551413c1a",
"https://firebasestorage.googleapis.com/v0/b/samuiplus-9d4b0.appspot.com/o/categories%2Foffers%2F-L85H0HTGT6s704K8qpt%2Fimages%20(62).jpg?alt=media&token=5b9c2537-2809-45a0-8a7d-48294ae974ca"]
extensiont.swift
extension Dictionary where Key == String, Value == Any {
mutating func setValue(key: Key, value: Value?) {
if (value != nil) {
if value is String {
let val = value as! String
if (val.isEmpty) {
self[key] = NSNull()
}
} else {
self[key] = value }
}
else { self[key] = NSNull() }
}
extension Optional {
func unwrapOrNSNull() -> Any {
return self ?? NSNull()
}
}
extension Optional where Wrapped == String {
func unwrapOrNSNull() -> Any {
if (self == nil || self!.isEmpty) {
return NSNull()
} else {
return self!
}
}
}