<?php namespace App\Admin\Controllers; use App\Admin\Metrics\Examples\Tickets; use App\Admin\Renderable\CreateUser; use App\Admin\Renderable\UserDetail; use App\Admin\Repositories\User; use App\Admin\Repositories\UserAddress; use App\Admin\Service\UserService; use Dcat\Admin\Form; use Dcat\Admin\Grid; use Dcat\Admin\Http\Controllers\Dashboard; use Dcat\Admin\Layout\Column; use Dcat\Admin\Layout\Content; use Dcat\Admin\Layout\Row; use Dcat\Admin\Show; use Dcat\Admin\Http\Controllers\AdminController; use Illuminate\Support\Facades\Validator; use Symfony\Component\HttpFoundation\Response; class UserController extends AdminController { /** * Make a grid builder. * * @return Grid */ protected function grid() { return Grid::make(new User(), function (Grid $grid) { $grid->showFilter(); $grid->disableFilterButton(); $grid->disableRefreshButton(); $grid->disableBatchDelete(); // $grid->disableCreateButton(); $grid->model()->orderBy("id", "desc"); UserService::userListListField($grid); UserService::userListTool($grid); UserService::userListActions($grid); UserService::userListFilter($grid); }); } /** * Make a show builder. * * @param mixed $id * * @return Show */ protected function detail($id) { $address_list = (\App\Admin\Renderable\UserAddress::make(["key" => $id])->render()); return UserDetail::make(["key" => $id])->render() . $address_list; } /** * Make a show builder. * * @param mixed $id * * @return Show */ public function create(Content $content) { return $content->body(CreateUser::make()->render()); } /** * Store a newly created resource in storage. * * @return mixed */ public function store() { try { $data = request()->all(); $params = [ 'company_name' => $data['company_name'], 'user_sn' => $data['user_sn'], 'first_name' => $data['first_name'], 'last_name' => $data['last_name'], 'phone' => $data['phone'], 'email' => $data['email'], 'account_properties' => $data['account_properties'], 'remark' => $data['remark'], 'user_address_list' => $data['user_address_list'] ?? [], ]; $validator = Validator::make($params, [ 'company_name' => 'required', 'first_name' => 'required', 'last_name' => 'required', 'phone' => 'required', 'email' => 'required', 'account_properties' => 'required', // 'user_address_list' => 'required', // 'user_address_list.first_name' => 'required', // 'user_address_list.last_name' => 'required', // 'user_address_list.email' => 'required', // 'user_address_list.phone' => 'required', // 'user_address_list.country' => 'required', // 'user_address_list.city' => 'required', // 'user_address_list.post_code' => 'required', // 'user_address_list.detail_address' => 'required', // 'user_address_list.is_default' => 'required', ]); if ($validator->fails()) { $error = $validator->errors()->first(); throw new \Exception($error); } UserService::createUserAndAddress($params); } catch (\Throwable $throwable) { // var_dump((string)$throwable); return Form::make()->response() ->error(trans('admin.save_failed')) ->withExceptionIf($throwable->getMessage(), $throwable); } $url = admin_url("/users"); return Form::make()->response()->success(admin_trans("succeeded"))->redirect($url); } }