<?php

namespace App\Admin\Forms;

use App\Models\User;
use Dcat\Admin\Widgets\Form;
use Dcat\Admin\Contracts\LazyRenderable;
use Dcat\Admin\Traits\LazyWidget;
use Illuminate\Support\Facades\DB;

class GenerateUserCode extends Form implements LazyRenderable
{
    use LazyWidget;

    /**
     * Handle the form request.
     *
     * @param array $input
     *
     * @return mixed
     */
    public function handle(array $input)
    {
        $num = (int)$input['num'];
        if ($num <= 0 || $num > 20) {
            $num = 20;
        }
        $data = [];
        $i = 0;
        $dcount = 0;
        do {
            $rndstr = generateRandomString(6);
            $exist = DB::table("li_check_number")->where("code", $rndstr)->count();
            if (!$exist) {
                array_push($data, $rndstr);
            }
            $dcount = count($data);
        } while ($i <= $num && $dcount != $num);
        // for ($i = 0; $i <= $num; $i++) {
        //     $rndstr = generateRandomString(6);
        //     $exist = DB::table("li_check_number")->where("code", $rndstr)->count();
        //     if (!$exist) {
        //         array_push($data, $rndstr);
        //     }
        // }
        if ($data) {
            foreach ($data as $code) {
                $addtime = date("Y-m-d H:i:s");
                DB::table("li_check_number")->insert(['code' => $code, 'created_at' => $addtime]);
            }
        }

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

    /**
     * Build a form here.
     */
    public function form()
    {
        $this->text('num', '生成数量')->required()->help("生成20个以内随机编号(数字+大小写英文)");
    }

    /**
     * The data of the form.
     *
     * @return array
     */
    public function default()
    {
        // 获取外部传递参数
        return [];
    }
}