// // CCCPModelExchangeRequest.swift // PayCash // // Created by Saveliy Stavitsky on 8/5/20. // Copyright © 2020 List. All rights reserved. // import Foundation import class Resolver.Resolver extension CCCP.Model { struct ExchangeRequest: Codable { let id: Int private let creator: String? private let owner: String? let receiver: String? let volume: String let blockedCertificate: String? private let creationDateValue: String private let expirationDateValue: String? private let creatorApproveValue: Int? private let receiverApproveValue: Int? let buyoutPrice: String? let reward: String? var isDebt: Bool { creator == nil } var isOwner: Bool { ownedBy == Accounts().current?.username } var isExpired: Bool { let currentTimestamp = Resolver.resolve(RuntimeConfiguration.self).currentTimestamp return expirationDate.timeIntervalSince1970 < currentTimestamp } private enum CodingKeys: String, CodingKey { case id case creator case owner case receiver case volume case blockedCertificate = "blocked_certificate" case creationDateValue = "creation_date" case expirationDateValue = "expiration_date" case creatorApproveValue = "creator_approve" case receiverApproveValue = "receiver_approve" case buyoutPrice = "buyout_price" case reward } var ownedBy: String { creator ?? owner ?? "" } var creationDate: Date { creationDateValue.serverDate() ?? Date() } var expirationDate: Date { (expirationDateValue ?? "").serverDate() ?? Date() } var identifier: String { "\(id)\(volume)\(creationDateValue)\(creator)" } var creatorApprove: Bool { creatorApproveValue != 0 } var receiverApprove: Bool { receiverApproveValue != 0 } } }