From 0c605521c42f973e12d074d76c4677d199da6d23 Mon Sep 17 00:00:00 2001 From: Nafies Luthfi Date: Thu, 8 Nov 2018 20:53:58 +0800 Subject: [PATCH 1/5] Refactor CustomerController@store Add CustomerCreateRequest class Update controller docblocks --- .../Controllers/Partners/CustomersController.php | 57 ++++++++-------------- .../Requests/Partners/CustomerCreateRequest.php | 37 ++++++++++++++ 2 files changed, 58 insertions(+), 36 deletions(-) create mode 100644 app/Http/Requests/Partners/CustomerCreateRequest.php diff --git a/app/Http/Controllers/Partners/CustomersController.php b/app/Http/Controllers/Partners/CustomersController.php index dd298ed..082eb8c 100644 --- a/app/Http/Controllers/Partners/CustomersController.php +++ b/app/Http/Controllers/Partners/CustomersController.php @@ -5,13 +5,14 @@ namespace App\Http\Controllers\Partners; use Illuminate\Http\Request; use App\Entities\Partners\Customer; use App\Http\Controllers\Controller; +use App\Http\Requests\Partners\CustomerCreateRequest; class CustomersController extends Controller { /** * Display a listing of the customer. * - * @return \Illuminate\Http\Response + * @return \Illuminate\View\View */ public function index() { @@ -28,7 +29,7 @@ class CustomersController extends Controller /** * Show the create customer form. * - * @return \Illuminate\Http\Response + * @return \Illuminate\View\View */ public function create() { @@ -38,25 +39,13 @@ class CustomersController extends Controller /** * Store a newly created customer in storage. * - * @param \Illuminate\Http\Request $request - * - * @return \Illuminate\Http\Response + * @param \App\Http\Requests\Partners\CustomerCreateRequest $customerCreateForm + * @return \Illuminate\Http\RedirectResponse */ - public function store(Request $request) + public function store(CustomerCreateRequest $customerCreateForm) { - $newCustomerData = $this->validate($request, [ - 'name' => 'required|max:60', - 'email' => 'nullable|email|unique:customers,email', - 'phone' => 'nullable|max:255', - 'pic' => 'nullable|max:255', - 'address' => 'nullable|max:255', - 'website' => 'nullable|url|max:255', - 'notes' => 'nullable|max:255', - ]); - - Customer::create($newCustomerData); - - flash(trans('customer.created'), 'success'); + Customer::create($customerCreateForm->validated()); + flash(__('customer.created'), 'success'); return redirect()->route('customers.index'); } @@ -64,9 +53,8 @@ class CustomersController extends Controller /** * Show the specified customer. * - * @param \App\Entities\Partners\Customer $customer - * - * @return \Illuminate\Http\Response + * @param \App\Entities\Partners\Customer $customer + * @return \Illuminate\View\View */ public function show(Customer $customer) { @@ -76,9 +64,8 @@ class CustomersController extends Controller /** * Show the edit customer form. * - * @param \App\Entities\Partners\Customer $customer - * - * @return \Illuminate\Http\Response + * @param \App\Entities\Partners\Customer $customer + * @return \Illuminate\View\View */ public function edit(Customer $customer) { @@ -88,10 +75,9 @@ class CustomersController extends Controller /** * Update the specified customer in storage. * - * @param \Illuminate\Http\Request $request - * @param \App\Entities\Partners\Customer $customer - * - * @return \Illuminate\Http\Response + * @param \Illuminate\Http\Request $request + * @param \App\Entities\Partners\Customer $customer + * @return \Illuminate\Http\RedirectResponse */ public function update(Request $request, Customer $customer) { @@ -108,7 +94,7 @@ class CustomersController extends Controller $customer->update($customerData); - flash(trans('customer.updated'), 'success'); + flash(__('customer.updated'), 'success'); return redirect()->route('customers.show', $customer->id); } @@ -116,26 +102,25 @@ class CustomersController extends Controller /** * Remove the specified customer from storage. * - * @param \App\Entities\Partners\Customer $customer - * - * @return \Illuminate\Http\Response + * @param \App\Entities\Partners\Customer $customer + * @return \Illuminate\Http\RedirectResponse */ public function destroy(Customer $customer) { // TODO: user cannot delete customer that has been used in other table - $this->validate(request(), [ + request()->validate([ 'customer_id' => 'required', ]); $routeParam = request()->only('page', 'q'); if (request('customer_id') == $customer->id && $customer->delete()) { - flash(trans('customer.deleted'), 'warning'); + flash(__('customer.deleted'), 'warning'); return redirect()->route('customers.index', $routeParam); } - flash(trans('customer.undeleted'), 'danger'); + flash(__('customer.undeleted'), 'danger'); return back(); } diff --git a/app/Http/Requests/Partners/CustomerCreateRequest.php b/app/Http/Requests/Partners/CustomerCreateRequest.php new file mode 100644 index 0000000..9c2a887 --- /dev/null +++ b/app/Http/Requests/Partners/CustomerCreateRequest.php @@ -0,0 +1,37 @@ +user()->can('create', new Customer); + } + + /** + * Get the validation rules that apply to the request. + * + * @return array + */ + public function rules() + { + return [ + 'name' => 'required|max:60', + 'email' => 'nullable|email|unique:customers,email', + 'phone' => 'nullable|max:255', + 'pic' => 'nullable|max:255', + 'address' => 'nullable|max:255', + 'website' => 'nullable|url|max:255', + 'notes' => 'nullable|max:255', + ]; + } +} From b24a14561c8daf21a43e5324a73569e220ac6268 Mon Sep 17 00:00:00 2001 From: Nafies Luthfi Date: Thu, 8 Nov 2018 20:56:34 +0800 Subject: [PATCH 2/5] Refactor CustomerController@update Add CustomerUpdateRequest class --- .../Controllers/Partners/CustomersController.php | 19 +++-------- .../Requests/Partners/CustomerUpdateRequest.php | 39 ++++++++++++++++++++++ 2 files changed, 43 insertions(+), 15 deletions(-) create mode 100644 app/Http/Requests/Partners/CustomerUpdateRequest.php diff --git a/app/Http/Controllers/Partners/CustomersController.php b/app/Http/Controllers/Partners/CustomersController.php index 082eb8c..50ddf68 100644 --- a/app/Http/Controllers/Partners/CustomersController.php +++ b/app/Http/Controllers/Partners/CustomersController.php @@ -6,6 +6,7 @@ use Illuminate\Http\Request; use App\Entities\Partners\Customer; use App\Http\Controllers\Controller; use App\Http\Requests\Partners\CustomerCreateRequest; +use App\Http\Requests\Partners\CustomerUpdateRequest; class CustomersController extends Controller { @@ -75,25 +76,13 @@ class CustomersController extends Controller /** * Update the specified customer in storage. * - * @param \Illuminate\Http\Request $request + * @param \App\Http\Requests\Partners\CustomerUpdateRequest $customerUpdateForm * @param \App\Entities\Partners\Customer $customer * @return \Illuminate\Http\RedirectResponse */ - public function update(Request $request, Customer $customer) + public function update(CustomerUpdateRequest $customerUpdateForm, Customer $customer) { - $customerData = $this->validate($request, [ - 'name' => 'required|max:60', - 'email' => 'nullable|email|unique:customers,email,'.$customer->id, - 'phone' => 'nullable|max:255', - 'pic' => 'nullable|max:255', - 'address' => 'nullable|max:255', - 'website' => 'nullable|url|max:255', - 'notes' => 'nullable|max:255', - 'is_active' => 'required|boolean', - ]); - - $customer->update($customerData); - + $customer->update($customerUpdateForm->validated()); flash(__('customer.updated'), 'success'); return redirect()->route('customers.show', $customer->id); diff --git a/app/Http/Requests/Partners/CustomerUpdateRequest.php b/app/Http/Requests/Partners/CustomerUpdateRequest.php new file mode 100644 index 0000000..4853ba9 --- /dev/null +++ b/app/Http/Requests/Partners/CustomerUpdateRequest.php @@ -0,0 +1,39 @@ +user()->can('update', $this->route('customer')); + } + + /** + * Get the validation rules that apply to the request. + * + * @return array + */ + public function rules() + { + $customer = $this->route('customer'); + + return [ + 'name' => 'required|max:60', + 'email' => 'nullable|email|unique:customers,email,'.$customer->id, + 'phone' => 'nullable|max:255', + 'pic' => 'nullable|max:255', + 'address' => 'nullable|max:255', + 'website' => 'nullable|url|max:255', + 'notes' => 'nullable|max:255', + 'is_active' => 'required|boolean', + ]; + } +} From 5a1dd59a14f57d0034c036408458448ac2b8638a Mon Sep 17 00:00:00 2001 From: Nafies Luthfi Date: Thu, 8 Nov 2018 20:58:30 +0800 Subject: [PATCH 3/5] Refactor CustomerController@destroy --- app/Http/Controllers/Partners/CustomersController.php | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/app/Http/Controllers/Partners/CustomersController.php b/app/Http/Controllers/Partners/CustomersController.php index 50ddf68..0d37725 100644 --- a/app/Http/Controllers/Partners/CustomersController.php +++ b/app/Http/Controllers/Partners/CustomersController.php @@ -97,18 +97,13 @@ class CustomersController extends Controller public function destroy(Customer $customer) { // TODO: user cannot delete customer that has been used in other table - request()->validate([ - 'customer_id' => 'required', - ]); - - $routeParam = request()->only('page', 'q'); + request()->validate(['customer_id' => 'required']); if (request('customer_id') == $customer->id && $customer->delete()) { flash(__('customer.deleted'), 'warning'); - return redirect()->route('customers.index', $routeParam); + return redirect()->route('customers.index', request(['page', 'q'])); } - flash(__('customer.undeleted'), 'danger'); return back(); From ce874ae5b291d998f43814a6ae0cc8f4131e8c77 Mon Sep 17 00:00:00 2001 From: Nafies Luthfi Date: Thu, 8 Nov 2018 21:00:56 +0800 Subject: [PATCH 4/5] Refactor CustomerController@index method --- app/Http/Controllers/Partners/CustomersController.php | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/app/Http/Controllers/Partners/CustomersController.php b/app/Http/Controllers/Partners/CustomersController.php index 0d37725..cb8d970 100644 --- a/app/Http/Controllers/Partners/CustomersController.php +++ b/app/Http/Controllers/Partners/CustomersController.php @@ -17,12 +17,9 @@ class CustomersController extends Controller */ public function index() { - $customers = Customer::where(function ($query) { - $query->where('name', 'like', '%'.request('q').'%'); - }) - ->latest() - ->withCount('projects') - ->paginate(25); + $customerQuery = Customer::latest()->withCount('projects'); + $customerQuery->where('name', 'like', '%'.request('q').'%'); + $customers = $customerQuery->paginate(25); return view('customers.index', compact('customers')); } From 3915657536bcd980518ae82bf83c848b972218b9 Mon Sep 17 00:00:00 2001 From: Nafies Luthfi Date: Fri, 9 Nov 2018 21:22:02 +0800 Subject: [PATCH 5/5] Refactor VendorsController class --- .../Controllers/Partners/VendorsController.php | 57 +++++++++------------- 1 file changed, 22 insertions(+), 35 deletions(-) diff --git a/app/Http/Controllers/Partners/VendorsController.php b/app/Http/Controllers/Partners/VendorsController.php index c295066..149a087 100644 --- a/app/Http/Controllers/Partners/VendorsController.php +++ b/app/Http/Controllers/Partners/VendorsController.php @@ -11,14 +11,14 @@ class VendorsController extends Controller /** * Display a listing of the vendor. * - * @return \Illuminate\Http\Response + * @return \Illuminate\View\View */ public function index() { $editableVendor = null; - $vendors = Vendor::where(function ($query) { - $query->where('name', 'like', '%'.request('q').'%'); - })->paginate(25); + $vendorQuery = Vendor::query(); + $vendorQuery->where('name', 'like', '%'.request('q').'%'); + $vendors = $vendorQuery->paginate(25); if (in_array(request('action'), ['edit', 'delete']) && request('id') != null) { $editableVendor = Vendor::find(request('id')); @@ -30,21 +30,18 @@ class VendorsController extends Controller /** * Store a newly created vendor in storage. * - * @param \Illuminate\Http\Request $request - * - * @return \Illuminate\Http\Response + * @param \Illuminate\Http\Request $request + * @return \Illuminate\Http\RedirectResponse */ public function store(Request $request) { - $newVendorData = $this->validate($request, [ + Vendor::create($request->validate([ 'name' => 'required|max:60', 'notes' => 'nullable|max:255', 'website' => 'nullable|url|max:255', - ]); - - Vendor::create($newVendorData); + ])); - flash(trans('vendor.created'), 'success'); + flash(__('vendor.created'), 'success'); return redirect()->route('vendors.index'); } @@ -52,27 +49,22 @@ class VendorsController extends Controller /** * Update the specified vendor in storage. * - * @param \Illuminate\Http\Request $request - * @param \App\Entities\Partners\Vendor $vendor - * - * @return \Illuminate\Http\Response + * @param \Illuminate\Http\Request $request + * @param \App\Entities\Partners\Vendor $vendor + * @return \Illuminate\Http\RedirectResponse */ public function update(Request $request, Vendor $vendor) { - $vendorData = $this->validate($request, [ + $vendor->update($request->validate([ 'name' => 'required|max:60', 'notes' => 'nullable|max:255', 'website' => 'nullable|url|max:255', 'is_active' => 'required|boolean', - ]); + ])); - $routeParam = request()->only('page', 'q'); + flash(__('vendor.updated'), 'success'); - $vendor = $vendor->update($vendorData); - - flash(trans('vendor.updated'), 'success'); - - return redirect()->route('vendors.index', $routeParam); + return redirect()->route('vendors.index', request(['page', 'q'])); } /** @@ -89,25 +81,20 @@ class VendorsController extends Controller /** * Remove the specified vendor from storage. * - * @param \App\Entities\Partners\Vendor $vendor - * - * @return \Illuminate\Http\Response + * @param \App\Entities\Partners\Vendor $vendor + * @return \Illuminate\Http\RedirectResponse */ public function destroy(Vendor $vendor) { - $this->validate(request(), [ - 'vendor_id' => 'required', - ]); - - $routeParam = request()->only('page', 'q'); + request()->validate(['vendor_id' => 'required']); if (request('vendor_id') == $vendor->id && $vendor->delete()) { - flash(trans('vendor.deleted'), 'warning'); + flash(__('vendor.deleted'), 'warning'); - return redirect()->route('vendors.index', $routeParam); + return redirect()->route('vendors.index', request(['page', 'q'])); } - flash(trans('vendor.undeleted'), 'danger'); + flash(__('vendor.undeleted'), 'danger'); return back(); }