<?php namespace App\Http\Controllers;

use App\Models\Payoutmethodfees;
use Illuminate\Http\Request;
use Yajny\Member\Models\PayoutMethods;

class PayoutmethodfeesController extends GenericController
{

    protected $layout = "layouts.main";
    protected $data = array();
    public $module = 'payoutmethodfees';
    static $per_page = '10';

    public function __construct()
    {
        $this->model = new Payoutmethodfees();
        parent::__construct();
    }

    public function create(Request $request, $id = 0)
    {
        if ($this->access['is_edit'] == 0)
            return redirect('dashboard')->with('message', __('core.note_restric'))->with('status', 'error');
        $payout_methods = PayoutMethods::withoutGlobalScopes()->get();
        return view('manage.payoutmethodfees.form', ['row' => (new PayoutMethodFees())->toArray(), 'payout_methods' => $payout_methods]);
    }

    public function store(Request $request)
    {
        if ($this->access['is_edit'] == 0)
            return redirect('dashboard')->with('message', __('core.note_restric'))->with('status', 'error');
        $code = 'NULL';
        if (isset($request->old_code) && !empty($request->old_code)) {
            $code = $request->old_code;
            $payoutMethodFee = PayoutMethodFees::withoutGlobalScopes()->where('payout_method_code', $request->old_code)->first();
        } else {
            $payoutMethodFee = new PayoutMethodFees();
        }
        $request->validate([
            'payout_method_code' => "required|exists:payout_methods,code|unique:payout_method_fees,payout_method_code,{$code},payout_method_code",
            'type' => 'required|in:percentage,fixed',
            'text' => 'required',
            'amount' => 'required|numeric',
            'min_amount' => 'numeric',
            'enabled' => "required"
        ]);
        $payoutMethodFee->payout_method_code = $request->payout_method_code;
        $payoutMethodFee->type = $request->type;
        $payoutMethodFee->text = $request->text;
        $payoutMethodFee->amount = $request->amount;
        $payoutMethodFee->min_amount = $request->min_amount;
        $payoutMethodFee->enabled = $request->enabled;
        $payoutMethodFee->save();
        return redirect()->to('/manage/payoutmethodfees');
    }

    public function edit(Request $request, $id)
    {
        if ($this->access['is_edit'] == 0)
            return redirect('dashboard')->with('message', __('core.note_restric'))->with('status', 'error');
        $payout_methods = PayoutMethods::withoutGlobalScopes()->get();
        $payoutMethodFee = PayoutMethodFees::withoutGlobalScopes()->findOrFail($id);
        $row = $payoutMethodFee->toArray();
        $row['old_code'] = $row['payout_method_code'];
        return view('manage.payoutmethodfees.form', ['row' => $row, 'payout_methods' => $payout_methods]);
    }
}
