Files
raspberry/iOS/Wallet/Sources/CCCP/Model/CCCPModelExchangeRequest.swift
2022-05-27 20:21:01 +03:00

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 }
}
}