UnitController.php 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. <?php
  2. namespace App\Http\Controllers;
  3. use App\Components\AsyncResponse;
  4. use App\Unit;
  5. use Illuminate\Http\Request;
  6. use Illuminate\Support\Facades\Gate;
  7. use Illuminate\Support\Facades\Validator;
  8. class UnitController extends Controller
  9. {
  10. use AsyncResponse;
  11. public function index()
  12. {
  13. if(!Gate::allows('计量单位-查询')){ return redirect(url('/')); }
  14. $units=Unit::query()->paginate(50);
  15. return view('maintenance.unit.index',['units'=>$units]);
  16. }
  17. public function destroy($id)
  18. {
  19. if(!Gate::allows('计量单位-删除')){ return redirect(url('/')); }
  20. Unit::destroy($id);
  21. return ['success'=>true];
  22. }
  23. public function save()
  24. {
  25. $this->gate("计量单位-录入");
  26. $errors = $this->validatorUnit(request(),request("id"))->errors();
  27. if (count($errors)>0)$this->success(["errors"=>$errors]);
  28. $obj = ["name"=>request("name"),"sequence"=>request("sequence") ?? 0];
  29. if (request("id")){
  30. Unit::query()->update($obj);
  31. $this->success();
  32. }
  33. $this->success(Unit::query()->create($obj));
  34. }
  35. protected function validatorUnit(Request $request,$id){
  36. if ($id){$name=$id;}
  37. $validator=Validator::make($request->input(),[
  38. 'name'=>['required','max:10',isset($name)?"unique:units,name,$name":'unique:units,name'],
  39. ],[
  40. 'required'=>':attribute 为必填项',
  41. 'max'=>':attribute 过长',
  42. 'unique'=>':attribute 已存在',
  43. ],[
  44. 'name'=>'计量单位名称',
  45. ]);
  46. return $validator;
  47. }
  48. public function getUnits()
  49. {
  50. return ["success"=>true,"data"=>app("UnitService")->getSelection()];
  51. }
  52. }