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

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