소스 검색

Contorller添加Material,Supplier校验

ajun 5 년 전
부모
커밋
99e20cf534
2개의 변경된 파일44개의 추가작업 그리고 44개의 파일을 삭제
  1. 4 2
      app/Http/Controllers/MaterialController.php
  2. 40 42
      app/Http/Controllers/SupplierController.php

+ 4 - 2
app/Http/Controllers/MaterialController.php

@@ -5,6 +5,7 @@ namespace App\Http\Controllers;
 use App\Components\AsyncResponse;
 use App\Exceptions\WarningException;
 use App\Filters\MaterialFilters;
+use App\Http\Requests\Material\MaterialRequest;
 use App\Material;
 use Illuminate\Http\Request;
 
@@ -19,7 +20,7 @@ class MaterialController extends Controller
         return view('maintenance/material/index',compact('materials'));
     }
 
-    public function storeApi(Request $request):array
+    public function storeApi(MaterialRequest $request):array
     {
         $this->gate('耗材类型-编辑');
         $material = Material::query()->where('code',$request['code'])->first();
@@ -32,9 +33,10 @@ class MaterialController extends Controller
         }
     }
 
-    public function updateApi(Request $request):array
+    public function updateApi(MaterialRequest $request):array
     {
         $this->gate('耗材类型-编辑');
+        /** @var Material $material */
         $material = Material::query()->find($request['id']);
         try {
             $material->update($request->all(['code', 'name']));

+ 40 - 42
app/Http/Controllers/SupplierController.php

@@ -4,6 +4,7 @@ namespace App\Http\Controllers;
 
 use App\Components\AsyncResponse;
 use App\Filters\SupplierFilters;
+use App\Http\Requests\Supplier\SupplierRequest;
 use App\Material;
 use App\MaterialSupplier;
 use App\Supplier;
@@ -12,76 +13,73 @@ use Illuminate\Http\Request;
 class SupplierController extends Controller
 {
     use AsyncResponse;
-    public function index(Request $request,SupplierFilters $filters)
+
+    public function index(Request $request, SupplierFilters $filters)
     {
         $this->gate('供应商');
-        $suppliers = Supplier::query()->with('material')->orderByDesc('id')->filter($filters)->paginate($request['paginate']??50);
-        $materials=Material::query()->select('id','name')->get();
-        return view('/maintenance/supplier/index',compact('suppliers','materials'));
+        $suppliers = Supplier::query()->with('material')->orderByDesc('id')->filter($filters)->paginate($request['paginate'] ?? 50);
+        $materials = Material::query()->select('id', 'name')->get();
+        return view('/maintenance/supplier/index', compact('suppliers', 'materials'));
     }
 
-    public function storeApi(Request $request)
+    public function storeApi(SupplierRequest $request)
     {
         $this->gate('供应商-编辑');
-        $supplier = Supplier::query()->create($request->addSupplier);
-        $material_supplier=[];
-        foreach ($request->material_id as $item){
-            $material_supplier[]=[
-              'material_id'=>$item,
-              'supplier_id'=>$supplier->id,
+        $supplier = Supplier::query()->create($request->all());
+        $material_supplier = [];
+        foreach ($request['material_id'] as $item) {
+            $material_supplier[] = [
+                'material_id' => $item,
+                'supplier_id' => $supplier['id'],
             ];
         }
         MaterialSupplier::query()->insert($material_supplier);
+        $supplier->loadMissing('material');
         $this->success($supplier);
     }
 
-    public function updateApi(Request $request)
+    public function updateApi(SupplierRequest $request)
     {
         $this->gate('供应商-编辑');
-        $editSupplier=$request->input('editSupplier');
-        $material_ids=$request->input('material_id');
-        $material_suppliers=MaterialSupplier::query()->where('supplier_id',$editSupplier['id'])->get();
-        $this->updateMaterial($material_suppliers,$material_ids,$editSupplier['id']);
-        $supplier = Supplier::query()->find($editSupplier['id']);
-        $bool= $supplier->update([
-            'name'=>$editSupplier['name'],
-            'contact_man'=>$editSupplier['contact_man'],
-            'phone'=>$editSupplier['phone'],
-            'invoice_title'=>$editSupplier['invoice_title'],
-            'bank'=>$editSupplier['bank'],
-            'bank_account'=>$editSupplier['bank_account'],
-            'opening_bank'=>$editSupplier['opening_bank']
-        ]);
-        if($bool)$this->success($supplier->loadMissing('material'));
+        $material_suppliers = MaterialSupplier::query()->where('supplier_id', $request['id'])->get();
+        $this->updateMaterial($material_suppliers, $request['material_id'], $request['id']);
+        /** @var Supplier $supplier */
+        $supplier = Supplier::query()->find($request['id']);
+        $bool = $supplier->update($request->all());
+        if ($bool) $this->success($supplier->loadMissing('material'));
         $this->error('更新异常');
     }
 
     public function destroyApi($id)
     {
         $this->gate('供应商-删除');
+        /** @var Supplier $supplier */
         $supplier = Supplier::query()->find($id);
         $supplier->delete();
         $this->success();
     }
-    private function updateMaterial($material_suppliers,$material_ids,$supplier_id){
-        $exist=[]; $adds=[];$addMaterial=[];
-        foreach ($material_suppliers as $material_supplier){
-            $exist[]=$material_supplier['material_id'];
+
+    private function updateMaterial($material_suppliers, $material_ids, $supplier_id)
+    {
+        $exist = [];
+        $adds = [];
+        $addMaterial = [];
+        foreach ($material_suppliers as $material_supplier) {
+            $exist[] = $material_supplier['material_id'];
         }
-        $deletes=array_diff($exist,$material_ids);
-        foreach ($material_ids as $id){
-            if (empty($material_suppliers->where('material_id',$id)->first()))$adds[]=$id;
+        $deletes = array_diff($exist, $material_ids);
+        foreach ($material_ids as $id) {
+            if (empty($material_suppliers->where('material_id', $id)->first())) $adds[] = $id;
         }
-        foreach ($adds as $add){
-            $addMaterial[]=[
-                'material_id'=>$add,
-                'supplier_id'=>$supplier_id,
+        foreach ($adds as $add) {
+            $addMaterial[] = [
+                'material_id' => $add,
+                'supplier_id' => $supplier_id,
             ];
         }
-        if (count($addMaterial)>0) MaterialSupplier::query()->insert($addMaterial);
-        foreach ($deletes as $delete){
-            MaterialSupplier::query()->where('material_id',$delete)
-                ->where('supplier_id',$supplier_id)->delete();
+        if (count($addMaterial) > 0) MaterialSupplier::query()->insert($addMaterial);
+        foreach ($deletes as $delete) {
+            MaterialSupplier::query()->where('material_id', $delete)->where('supplier_id', $supplier_id)->delete();
         }
     }
 }