<?php

namespace App;

use App\Laravue\Models\User;
use Illuminate\Database\Eloquent\Model;

class OwnerReward extends Model
{
    protected $table = 'owner_rewards';

    const PAYMENT_PAYJP = 0;
    const PAYMENT_MANUAL = 1;

    const TRANSFER_PENDING = 0;
    const TRANSFER_COMPLETED = 1;

    protected $fillable = [
        'owner_id', 'order_id', 'product_id',
        'rental_amount', 'reward_amount', 'platform_fee',
        'payment_method', 'transfer_status', 'transferred_at', 'payjp_transfer_id',
    ];

    protected $casts = [
        'transferred_at'  => 'datetime',
        'transfer_status' => 'integer',
        'payment_method'  => 'integer',
        'rental_amount'   => 'integer',
        'reward_amount'   => 'integer',
        'platform_fee'    => 'integer',
    ];

    public function owner()
    {
        return $this->belongsTo(User::class, 'owner_id', 'id');
    }

    public function order()
    {
        return $this->belongsTo(Order::class, 'order_id', 'id');
    }

    public function product()
    {
        return $this->belongsTo(Product::class, 'product_id', 'id');
    }

    public function isTransferred()
    {
        return $this->transfer_status === self::TRANSFER_COMPLETED;
    }

    /**
     * 未振込の報酬
     */
    public function scopePending($query)
    {
        return $query->where('transfer_status', self::TRANSFER_PENDING);
    }

    /**
     * 振込済みの報酬
     */
    public function scopeTransferred($query)
    {
        return $query->where('transfer_status', self::TRANSFER_COMPLETED);
    }
}
