You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
37 lines
962 B
37 lines
962 B
package com.xsn.explorer.models
|
|
|
|
import play.api.libs.json.{Json, Writes}
|
|
|
|
case class TransactionDetails(
|
|
id: TransactionId,
|
|
size: Size,
|
|
blockhash: Blockhash,
|
|
time: Long,
|
|
blocktime: Long,
|
|
confirmations: Confirmations,
|
|
input: List[TransactionValue],
|
|
output: List[TransactionValue]) {
|
|
|
|
lazy val fee: BigDecimal = {
|
|
val vin = input.map(_.value).sum
|
|
val vout = output.map(_.value).sum
|
|
(vin - vout) max 0
|
|
}
|
|
}
|
|
|
|
object TransactionDetails {
|
|
|
|
def from(tx: rpc.Transaction, input: List[TransactionValue]): TransactionDetails = {
|
|
TransactionDetails
|
|
.from(tx)
|
|
.copy(input = input)
|
|
}
|
|
|
|
def from(tx: rpc.Transaction): TransactionDetails = {
|
|
val output = tx.vout.flatMap(TransactionValue.from)
|
|
|
|
TransactionDetails(tx.id, tx.size, tx.blockhash, tx.time, tx.blocktime, tx.confirmations, List.empty, output)
|
|
}
|
|
|
|
implicit val writes: Writes[TransactionDetails] = Json.writes[TransactionDetails]
|
|
}
|
|
|