From 9387760d43951f4087a49a61a279f39086b80e2a Mon Sep 17 00:00:00 2001 From: Nafies Luthfi Date: Tue, 13 Mar 2018 21:35:17 +0800 Subject: [PATCH] Use route model binding and request validation --- app/Http/Controllers/ProductsController.php | 28 ++++++++++++++-------------- app/Http/Controllers/UnitsController.php | 12 ++++++------ tests/Feature/ManageUnitsTest.php | 2 +- 3 files changed, 21 insertions(+), 21 deletions(-) diff --git a/app/Http/Controllers/ProductsController.php b/app/Http/Controllers/ProductsController.php index 8fbb063..9a0b34c 100644 --- a/app/Http/Controllers/ProductsController.php +++ b/app/Http/Controllers/ProductsController.php @@ -4,7 +4,6 @@ namespace App\Http\Controllers; use App\Product; use Illuminate\Http\Request; -use PDF; class ProductsController extends Controller { @@ -17,9 +16,9 @@ class ProductsController extends Controller $query->where('name', 'like', '%'.$q.'%'); } }) - ->orderBy('name') - ->with('unit') - ->paginate(25); + ->orderBy('name') + ->with('unit') + ->paginate(25); if (in_array($request->get('action'), ['edit', 'delete']) && $request->has('id')) { $editableProduct = Product::find($request->get('id')); @@ -30,46 +29,47 @@ class ProductsController extends Controller public function store(Request $request) { - $this->validate($request, [ + $newProduct = $request->validate([ 'name' => 'required|max:20', 'cash_price' => 'required|numeric', 'credit_price' => 'nullable|numeric', - 'unit_id' => 'required|numeric', + 'unit_id' => 'required|numeric|exists:product_units,id', ]); - Product::create($request->only('name', 'cash_price', 'credit_price', 'unit_id')); + Product::create($newProduct); flash(trans('product.created'), 'success'); return redirect()->route('products.index'); } - public function update(Request $request, $productId) + public function update(Request $request, Product $product) { - $this->validate($request, [ + $productData = $request->validate([ 'name' => 'required|max:20', 'cash_price' => 'required|numeric', 'credit_price' => 'nullable|numeric', + 'unit_id' => 'required|numeric|exists:product_units,id', ]); $routeParam = $request->only('page', 'q'); - $product = Product::findOrFail($productId)->update($request->only('name', 'cash_price', 'credit_price', 'unit_id')); + $product->update($productData); flash(trans('product.updated'), 'success'); return redirect()->route('products.index', $routeParam); } - public function destroy(Request $request, $productId) + public function destroy(Request $request, Product $product) { - $this->validate($request, [ + $requestData = $request->validate([ 'product_id' => 'required|exists:products,id', ]); $routeParam = $request->only('page', 'q'); - if ($request->get('product_id') == $productId && Product::findOrFail($productId)->delete()) { + if ($requestData['product_id'] == $product->id && $product->delete()) { flash(trans('product.deleted'), 'success'); return redirect()->route('products.index', $routeParam); @@ -86,7 +86,7 @@ class ProductsController extends Controller return view('products.price-list', compact('products')); - // $pdf = PDF::loadView('products.price-list', compact('products')); + // $pdf = \PDF::loadView('products.price-list', compact('products')); // return $pdf->stream('price-list.pdf'); } } diff --git a/app/Http/Controllers/UnitsController.php b/app/Http/Controllers/UnitsController.php index cc4eb2c..6e1d630 100644 --- a/app/Http/Controllers/UnitsController.php +++ b/app/Http/Controllers/UnitsController.php @@ -21,24 +21,24 @@ class UnitsController extends Controller public function store(Request $request) { - $this->validate($request, [ + $newUnit = $request->validate([ 'name' => 'required|max:20', ]); - Unit::create($request->only('name')); + Unit::create($newUnit); flash(trans('unit.created'), 'success'); return redirect()->route('units.index'); } - public function update(Request $request, $unitId) + public function update(Request $request, Unit $unit) { - $this->validate($request, [ + $unitData = $request->validate([ 'name' => 'required|max:20', ]); - $unit = Unit::findOrFail($unitId)->update($request->only('name')); + $unit->update($unitData); flash(trans('unit.updated'), 'success'); @@ -50,7 +50,7 @@ class UnitsController extends Controller $this->validate($request, [ 'unit_id' => 'required|exists:product_units,id|not_exists:products,unit_id', ], [ - 'unit_id.not_exists' => trans('unit.undeleted'), + 'unit_id.not_exists' => trans('unit.undeleteable'), ]); if ($request->get('unit_id') == $unit->id && $unit->delete()) { diff --git a/tests/Feature/ManageUnitsTest.php b/tests/Feature/ManageUnitsTest.php index 9e7e9dc..d59dff4 100644 --- a/tests/Feature/ManageUnitsTest.php +++ b/tests/Feature/ManageUnitsTest.php @@ -98,7 +98,7 @@ class ManageUnitsTest extends BrowserKitTestCase $this->press(trans('app.delete_confirm_button')); - $this->see(trans('unit.undeleted')); + $this->see(trans('unit.undeleteable')); $this->seePageIs(route('units.index', ['action' => 'delete', 'id' => $unitId])); $this->seeInDatabase('product_units', [