58 lines
2.0 KiB
Swift
58 lines
2.0 KiB
Swift
//
|
|
// 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 }
|
|
}
|
|
}
|