<?php

namespace App\Admin\Controllers;

use App\Models\User;
use App\Http\Controllers\Controller;
use Encore\Admin\Controllers\HasResourceActions;
use Encore\Admin\Form;
use Encore\Admin\Grid;
use Encore\Admin\Layout\Content;
use Encore\Admin\Show;
use App\Models\Children;
use App\Models\Classes;
use Illuminate\Http\Request;
use App\Admin\Actions\Users\Lock;
use App\Admin\Actions\Users\UnLock;

class UsersController extends Controller {
	use HasResourceActions;
	public function index(Content $content) {
		return $content->header ( '家长列表' )->body ( $this->grid () );
	}
	protected function grid() {
		$grid = new Grid ( new User () );
		$grid->model()->orderBy('id','desc');
		$grid->id ( 'ID' )->sortable();;
		// 创建一个列名为 家长名 的列，内容是家长的 name 字段。下面的 email() 和 created_at() 同理
		$grid->mobile ( '手机号' );
		$grid->realname ( '姓名' );
		$grid->created_at ( '注册时间' );
		$grid->updated_at ( '修改时间' );
// 		$grid->disableCreateButton ();
		$grid->actions ( function ($actions) {
			// 不在每一行后面展示查看按钮
			$actions->disableView ();
			// 不在每一行后面展示删除按钮
			// $actions->disableDelete();
			// 不在每一行后面展示编辑按钮
			// $actions->disableEdit();
			$url = url ( "admin/users/change_status?user_id={$actions->row->id}" );
			$text=$actions->row->is_lock?'解锁':'锁定';
			$actions->append ( "<a href='{$url}'> {$text}</a>" );
		} );
		$grid->filter ( function ($filter) {
			// 在这里添加字段过滤器
				$filter->like ( 'realname', '家长姓名' );
				$filter->equal ( 'mobile', '家长电话' );
		} );

		$grid->tools ( function ($tools) {
			// 禁用批量删除按钮
			$tools->batch ( function ($batch) {
				$batch->disableDelete ();
			} );
		} );
			$grid->batchActions(function ($batch) {
				$batch->add(new Lock());
				$batch->add(new UnLock());
			});
		return $grid;
	}
	/**
	 * Edit interface.
	 *
	 * @param mixed $id
	 * @param Content $content
	 * @return Content
	 */
	public function edit($id, Content $content) {
		return $content->header ( '家长' )->description ( '编辑' )->body ( $this->form ()->edit ( $id ) );
	}
	protected function form() {
		$form = new Form ( new User () );
		$form->text ( 'realname', '家长姓名' )->rules ( 'required' );
		$form->mobile ( 'mobile', '手机号' )->rules ( 'required' );
		$form->hasMany ( 'children', '孩子信息', function (Form\NestedForm $form) {
			$form->text ( 'realname', '姓名' )->required ();
			$form->number ( 'age', '年龄' )->required ();
			$form->radio ( 'sex', '性别' )->options ( Children::$sexMap );
			$form->checkbox ( 'classes', '所属班级' )->options ( Classes::all ()->pluck ( 'name', 'id' ) );

			$form->datetime ( 'starttime', '入学时间' );
			$form->datetime ( 'endtime', '结束时间' );
		} );
		$form->saving ( function (Form $form) {
			// dd($form);
		} );
		return $form;
	}
	public function create(Content $content) {
		return $content->header ( '家长' )->description ( '新增' )->body ( $this->form () );
	}
	/**
	 *
	 * @Description:锁定 、解锁
	 * @param Request $request
	 */
	public function changeStatus(Request $request) {
		$user = User::find ( $request->user_id );
		if (! $user){
			admin_toastr ( '数据缺失！', 'error' );
			return redirect ( 'admin/users' );
		}
		if ($user->is_lock == 1) {
			$user->is_lock = 0;
		} else {
			$user->is_lock = 1;
		}
		$user->save ();
		admin_toastr ( '操作成功！', 'success' );
		return redirect ( 'admin/users' );
	}
}
