Skip to content

Instantly share code, notes, and snippets.

@zamahaka
Created June 4, 2019 14:11
Show Gist options
  • Save zamahaka/e368257cdc97e3ec595040db8cdd41fb to your computer and use it in GitHub Desktop.
Save zamahaka/e368257cdc97e3ec595040db8cdd41fb to your computer and use it in GitHub Desktop.
sealed class SummaryItem : IdEntity<Long> {
companion object {
fun wrap(meta: TransactionMeta): SummaryItem =
if (meta.transaction.isInvoiceItem())
SummaryInvoice(meta) else SummaryPayment(meta)
}
}
fun Transaction.isInvoiceItem() = isMyInvoice() or isMyRequest()
fun Transaction.isMyInvoice() = // request sent to me by other
type == Transaction.Type.RECEIVED
&& status == Transaction.Status.NEW
&& castAs == Transaction.CastAs.INVOICE
fun Transaction.isMyRequest() = // request sent by me to other
type == Transaction.Type.SENT
&& status == Transaction.Status.NEW
&& castAs == Transaction.CastAs.INVOICE
data class SummaryInvoice(
val meta: TransactionMeta,
val approveProgress: Boolean = false,
val declineProgress: Boolean = false
) : SummaryItem(), IdEntity<Long> by meta
data class SummaryPayment(
val meta: TransactionMeta
) : SummaryItem(), IdEntity<Long> by meta
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment