MaterialController.php 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. <?php
  2. namespace App\Http\Controllers;
  3. use App\Components\AsyncResponse;
  4. use App\Exceptions\WarningException;
  5. use App\Filters\MaterialFilters;
  6. use App\Http\Requests\Material\MaterialRequest;
  7. use App\Material;
  8. use Illuminate\Http\Request;
  9. class MaterialController extends Controller
  10. {
  11. // 耗材类型
  12. use AsyncResponse;
  13. public function index(Request $request,MaterialFilters $filter)
  14. {
  15. $this->gate('耗材类型');
  16. $materials = Material::query()->orderByDesc('id')->filter($filter)->paginate($request['paginate'] ?? 50);
  17. return view('maintenance/material/index',compact('materials'));
  18. }
  19. public function storeApi(MaterialRequest $request):array
  20. {
  21. $this->gate('耗材类型-编辑');
  22. $material = Material::query()->where('code',$request['code'])->first();
  23. if($material)return ['success' => false,'message'=>'code对应的耗材类型已存在'];
  24. try {
  25. $material = Material::query()->create($request->all(['code', 'name']));
  26. return ['success'=>true,'data'=>$material];
  27. } catch (\Exception $e) {
  28. return ['success' => false,'message' => $e->getMessage()];
  29. }
  30. }
  31. public function updateApi(MaterialRequest $request):array
  32. {
  33. $this->gate('耗材类型-编辑');
  34. /** @var Material $material */
  35. $material = Material::query()->find($request['id']);
  36. try {
  37. $material->update($request->all(['name', 'code']));
  38. return ['success' => true,'data'=>$material];
  39. } catch (WarningException $e) {
  40. return ['success'=>false,'message'=>$e->getMessage()];
  41. }
  42. }
  43. public function destroyApi($id):array
  44. {
  45. $this->gate('耗材类型-删除');
  46. /** @var Material $material */
  47. $material = Material::query()->find($id);
  48. try {
  49. $bool = $material->delete();
  50. if($bool>0)return ['success'=>true];
  51. else return ['success'=>false,'message'=>'删除失败'];
  52. } catch (WarningException $e) {
  53. return ['success'=>false,'message'=>$e->getMessage()];
  54. }
  55. }
  56. }