MaterialController.php 2.0 KB

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