Alimentalos/Backend

View on GitHub
app/Models/Coin.php

Summary

Maintainability
A
0 mins
Test Coverage
<?php

namespace App\Models;

use App\Contracts\Resource;
use App\Resources\CoinResource;
use Database\Factories\CoinFactory;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\BelongsTo;

class Coin extends Model implements Resource
{
    use HasFactory;
    use CoinResource;

    /**
     * This model doesn't uses increments.
     *
     * @var bool
     */
    public $incrementing = false;

    /**
     * The attributes that should be cast to native types.
     *
     * @var array
     */
    protected $casts = [
        'used' => 'boolean'
    ];

    /**
     * The mass assignment fields of the comment
     *
     * @var array
     */
    protected $fillable = [
        'uuid',
        'amount',
        'used',
        'received_operation_uuid',
        'used_operation_uuid',
    ];

    /**
     * The related monetizer resource.
     */
    public function monetizer()
    {
        return $this->morphTo(
            'monetizer',
            'monetizer_type',
            'monetizer_id',
            'uuid'
        );
    }

    /**
     * Operation what money was received.
     *
     * @return BelongsTo
     */
    public function received_operation()
    {
        return $this->belongsTo(Operation::class, 'received_operation_uuid', 'uuid');
    }

    /**
     * Operation what money was used.
     *
     * @return BelongsTo
     */
    public function used_operation()
    {
        return $this->belongsTo(Operation::class, 'received_operation_uuid', 'uuid');
    }

    protected static function newFactory()
    {
        return CoinFactory::new();
    }
}