<?php

namespace App\Admin\Actions;

use Dcat\Admin\Actions\Response;
use App\Admin\Forms\BuyCodeForm;
use App\Models\User;
use Dcat\Admin\Grid\RowAction;
use Dcat\Admin\Traits\HasPermissions;
use Illuminate\Contracts\Auth\Authenticatable;
use Illuminate\Http\Request;
use Dcat\Admin\Widgets\Modal;

class UserBuyCode extends RowAction
{

    /**
     * @return string
     */
    protected $title = '<i class="feather icon-stop-circle"> 直购码 </i>';
    /**
     * 按钮文本
     *
     * @return string|void
     */
    public function title()
    {
        return '<i class="feather icon-stop-circle"></i> ' . $this->title . '';
    }
    /**
     * Handle the action request.
     *
     * @param Request $request 
     *
     * @return Response
     */
    public function handle(Request $request)
    {
        $id = $this->getKey() ?? 0;

        return $this->response()->success('成功')->refresh();
    }


    /**
     * 渲染模态框.
     * @return Modal
     */
    public function render()
    {
        $user_id = $this->getKey() ?? 0;
        $userObj = User::find($user_id);
        $code = $userObj->buycode ?? '';
        // 这里直接创建一个modal框 model的内容由工具表单提供,这里也需要创建一个工具表单才行
        return Modal::make()
            ->lg()
            ->title('直购码')
            ->button("直购码")
            ->body(BuyCodeForm::make())
            ->onShown(
                <<<js
                $(document).ready(function () {
                    var colen = '{$code}';
                    if(colen.length > 0) {
                        $(".field_current").html('{$code}');
                    }
                    $(".field_userid").val('{$user_id}');
                });
            js
            );
        //->button("<button class='btn btn-sm btn-primary'>$this->title</button>"); // 这个button就是对应上面的按钮
    }

    /**
     * @return string|array|void
     */
    public function confirm()
    {
        // return ['Confirm?', 'contents'];
    }

    /**
     * @param Model|Authenticatable|HasPermissions|null $user
     *
     * @return bool
     */
    protected function authorize($user): bool
    {
        return true;
    }

    /**
     * @return array
     */
    protected function parameters()
    {
        return [];
    }
}