<?php

namespace Yajny\Member\Entities\BalanceTransactions;

class MappedTransaction
{
    public $user_id;
    public $transaction_type;
    public $source_type;
    public $source_id;
    public $amount;
    public $balance_type;
    public $pending_balance_after;
    public $confirmed_balance_after;
    public $timestamp;

    public function __construct(
        $user_id,
        $transaction_type,
        $source_type,
        $source_id,
        $amount,
        $balance_type,
        $pending_balance_after,
        $confirmed_balance_after,
        $timestamp = null
    )
    {
        $this->user_id = $user_id;
        $this->transaction_type = $transaction_type;
        $this->source_type = $source_type;
        $this->source_id = $source_id;
        $this->amount = $amount;
        $this->balance_type = $balance_type;
        $this->pending_balance_after = $pending_balance_after;
        $this->confirmed_balance_after = $confirmed_balance_after;
        $this->timestamp = $timestamp;
    }

    public function toArray()
    {
        $attributes = [
            'user_id' => $this->user_id,
            'transaction_type' => $this->transaction_type,
            'source_type' => $this->source_type,
            'source_id' => $this->source_id,
            'amount' => $this->amount,
            'balance_type' => $this->balance_type,
            'pending_balance_after' => $this->pending_balance_after,
            'confirmed_balance_after' => $this->confirmed_balance_after
        ];

        if ($this->timestamp){
            $attributes['created_at'] = $this->timestamp;
            $attributes['updated_at'] = $this->timestamp;
        }

        return $attributes;
    }
}