Browse Source

Refactor CustomerController@store

Add CustomerCreateRequest class
Update controller docblocks
pull/24/head
Nafies Luthfi 7 years ago
parent
commit
0c605521c4
  1. 57
      app/Http/Controllers/Partners/CustomersController.php
  2. 37
      app/Http/Requests/Partners/CustomerCreateRequest.php

57
app/Http/Controllers/Partners/CustomersController.php

@ -5,13 +5,14 @@ namespace App\Http\Controllers\Partners;
use Illuminate\Http\Request; use Illuminate\Http\Request;
use App\Entities\Partners\Customer; use App\Entities\Partners\Customer;
use App\Http\Controllers\Controller; use App\Http\Controllers\Controller;
use App\Http\Requests\Partners\CustomerCreateRequest;
class CustomersController extends Controller class CustomersController extends Controller
{ {
/** /**
* Display a listing of the customer. * Display a listing of the customer.
* *
* @return \Illuminate\Http\Response
* @return \Illuminate\View\View
*/ */
public function index() public function index()
{ {
@ -28,7 +29,7 @@ class CustomersController extends Controller
/** /**
* Show the create customer form. * Show the create customer form.
* *
* @return \Illuminate\Http\Response
* @return \Illuminate\View\View
*/ */
public function create() public function create()
{ {
@ -38,25 +39,13 @@ class CustomersController extends Controller
/** /**
* Store a newly created customer in storage. * 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'); return redirect()->route('customers.index');
} }
@ -64,9 +53,8 @@ class CustomersController extends Controller
/** /**
* Show the specified customer. * 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) public function show(Customer $customer)
{ {
@ -76,9 +64,8 @@ class CustomersController extends Controller
/** /**
* Show the edit customer form. * 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) public function edit(Customer $customer)
{ {
@ -88,10 +75,9 @@ class CustomersController extends Controller
/** /**
* Update the specified customer in storage. * 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) public function update(Request $request, Customer $customer)
{ {
@ -108,7 +94,7 @@ class CustomersController extends Controller
$customer->update($customerData); $customer->update($customerData);
flash(trans('customer.updated'), 'success');
flash(__('customer.updated'), 'success');
return redirect()->route('customers.show', $customer->id); return redirect()->route('customers.show', $customer->id);
} }
@ -116,26 +102,25 @@ class CustomersController extends Controller
/** /**
* Remove the specified customer from storage. * 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) public function destroy(Customer $customer)
{ {
// TODO: user cannot delete customer that has been used in other table // TODO: user cannot delete customer that has been used in other table
$this->validate(request(), [
request()->validate([
'customer_id' => 'required', 'customer_id' => 'required',
]); ]);
$routeParam = request()->only('page', 'q'); $routeParam = request()->only('page', 'q');
if (request('customer_id') == $customer->id && $customer->delete()) { if (request('customer_id') == $customer->id && $customer->delete()) {
flash(trans('customer.deleted'), 'warning');
flash(__('customer.deleted'), 'warning');
return redirect()->route('customers.index', $routeParam); return redirect()->route('customers.index', $routeParam);
} }
flash(trans('customer.undeleted'), 'danger');
flash(__('customer.undeleted'), 'danger');
return back(); return back();
} }

37
app/Http/Requests/Partners/CustomerCreateRequest.php

@ -0,0 +1,37 @@
<?php
namespace App\Http\Requests\Partners;
use App\Entities\Partners\Customer;
use Illuminate\Foundation\Http\FormRequest;
class CustomerCreateRequest extends FormRequest
{
/**
* Determine if the user is authorized to make this request.
*
* @return bool
*/
public function authorize()
{
return $this->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',
];
}
}
Loading…
Cancel
Save