Browse Source

Merge branch 'partner-controllers-refactor'

pull/24/head
Nafies Luthfi 7 years ago
parent
commit
e724d6a9b5
  1. 82
      app/Http/Controllers/Partners/CustomersController.php
  2. 49
      app/Http/Controllers/Partners/VendorsController.php
  3. 37
      app/Http/Requests/Partners/CustomerCreateRequest.php
  4. 39
      app/Http/Requests/Partners/CustomerUpdateRequest.php

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

@ -5,22 +5,21 @@ 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;
use App\Http\Requests\Partners\CustomerUpdateRequest;
class CustomersController extends Controller
{
/**
* Display a listing of the customer.
*
* @return \Illuminate\Http\Response
* @return \Illuminate\View\View
*/
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'));
}
@ -28,7 +27,7 @@ class CustomersController extends Controller
/**
* Show the create customer form.
*
* @return \Illuminate\Http\Response
* @return \Illuminate\View\View
*/
public function create()
{
@ -38,25 +37,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');
}
@ -65,8 +52,7 @@ class CustomersController extends Controller
* Show the specified customer.
*
* @param \App\Entities\Partners\Customer $customer
*
* @return \Illuminate\Http\Response
* @return \Illuminate\View\View
*/
public function show(Customer $customer)
{
@ -77,8 +63,7 @@ class CustomersController extends Controller
* Show the edit customer form.
*
* @param \App\Entities\Partners\Customer $customer
*
* @return \Illuminate\Http\Response
* @return \Illuminate\View\View
*/
public function edit(Customer $customer)
{
@ -88,27 +73,14 @@ 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\Response
* @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);
flash(trans('customer.updated'), 'success');
$customer->update($customerUpdateForm->validated());
flash(__('customer.updated'), 'success');
return redirect()->route('customers.show', $customer->id);
}
@ -117,25 +89,19 @@ class CustomersController extends Controller
* Remove the specified customer from storage.
*
* @param \App\Entities\Partners\Customer $customer
*
* @return \Illuminate\Http\Response
* @return \Illuminate\Http\RedirectResponse
*/
public function destroy(Customer $customer)
{
// TODO: user cannot delete customer that has been used in other table
$this->validate(request(), [
'customer_id' => 'required',
]);
$routeParam = request()->only('page', 'q');
request()->validate(['customer_id' => 'required']);
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', request(['page', 'q']));
}
flash(trans('customer.undeleted'), 'danger');
flash(__('customer.undeleted'), 'danger');
return back();
}

49
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'));
@ -31,20 +31,17 @@ class VendorsController extends Controller
* Store a newly created vendor in storage.
*
* @param \Illuminate\Http\Request $request
*
* @return \Illuminate\Http\Response
* @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');
}
@ -54,25 +51,20 @@ class VendorsController extends Controller
*
* @param \Illuminate\Http\Request $request
* @param \App\Entities\Partners\Vendor $vendor
*
* @return \Illuminate\Http\Response
* @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']));
}
/**
@ -90,24 +82,19 @@ class VendorsController extends Controller
* Remove the specified vendor from storage.
*
* @param \App\Entities\Partners\Vendor $vendor
*
* @return \Illuminate\Http\Response
* @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();
}

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',
];
}
}

39
app/Http/Requests/Partners/CustomerUpdateRequest.php

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