<?php

namespace App\Admin\Forms;

use App\Models\Inquiry;
use Dcat\Admin\Models\Administrator;
use Dcat\Admin\Widgets\Alert;
use Dcat\Admin\Widgets\Form;
use Dcat\Admin\Traits\LazyWidget;
use Dcat\Admin\Contracts\LazyRenderable;

class HandleInquiry extends Form implements LazyRenderable
{
    use LazyWidget;

    /**
     * Handle the form request.
     *
     * @param array $input
     *
     * @return mixed
     */
    public function handle(array $input)
    {
        $status = Inquiry::where('inquiry_id', $input['inquiry_id'])->value('status');
        if ($status !== Inquiry::STATUS_PENDING) {
            return $this
                ->response()
                ->error(trans('inquiry.labels.inquiry_handle_status_wrong'))
                ->refresh();
        }
        Inquiry::where('inquiry_id', $input['inquiry_id'])->update([
            'status' => $input['status'],
            'processing_time' => time(),
            'update_time' => time(),
            'processing_result' => $input['handle_result']
        ]);
        return $this
            ->response()
            ->success(trans('admin.update_succeeded'))
            ->refresh();
    }

    /**
     * Build a form here.
     */
    public function form()
    {
        $this->hidden('inquiry_id')->attribute('id', 'inquiry_id');
        $this->radio('status')->options(admin_trans('inquiry.options.status'))->default(0)->required();
        $this->textarea('handle_result', admin_trans('global.labels.handle_result'))->rows(5)
            ->required()->rules('required|max:255');
    }

    /**
     * The data of the form.
     *
     * @return array
     */
    public function default()
    {
        return [
            'status' => 999,
            'handle_result' => ''
        ];
    }
}