<?php

namespace Yajny\Member\Models;

use Illuminate\Database\Eloquent\Model;
use Spatie\Translatable\HasTranslations;
use Illuminate\Database\Eloquent\Builder;
use Yajny\Traits\HasCurrency;
use Yajny\Traits\SelectTranslations;

class PayoutMethods extends Model
{
    //
    use HasTranslations,SelectTranslations, HasCurrency;

    protected $table = 'payout_methods';
    protected $primaryKey = 'id';
    protected $with = ['fee'];

    public $dateColumn = 'created_at';

    protected $casts = [
        'cashback_allowed' => 'boolean',
        'reward_allowed' => 'boolean',
        'enabled' => 'boolean',
        'status_mapping' => 'array',
        'fields' => 'object',
        'allowed_amounts' => 'object'
    ];

    protected $guarded = ['id','status_mapping'];

    public $selColmns = ['id', 'name', 'code', 'image', 'minimum_amount', 'minimum_amount_first', 'auto_payout', 'cashback_allowed', 'reward_allowed', 'enabled', 'status_mapping', 'fields', 'default_currency', 'amount_type'];
    public $translatable = ['name','payment_days'];

    private $currencyFormatFields = [
        'minimum_amount', 'minimum_amount_first'
    ];
    private $currencyFieldName = 'default_currency';

    protected static function boot()
    {
        parent::boot();

        static::addGlobalScope('enabled', function (Builder $builder) {
            $builder->where('enabled', true);
        });
    }

    public function fee()
    {
        return $this->hasOne('Yajny\Member\Models\PayoutMethodFees', 'payout_method_code', 'code');
    }
}
