Skip to content

Instantly share code, notes, and snippets.

@dlimars
Created January 13, 2016 19:27
Show Gist options
  • Save dlimars/913ffdb1d868179519c3 to your computer and use it in GitHub Desktop.
Save dlimars/913ffdb1d868179519c3 to your computer and use it in GitHub Desktop.
<?php
namespace App\Http\Controllers\Admin;
use App\Repositories\Customers\CustomerRepository;
use App\Repositories\Customers\Criteria\FullNameCriteria;
use App\Repositories\Customers\Criteria\CanceledOrdersCriteria;
use Illuminate\Http\Request;
use App\Http\Requests;
use App\Http\Controllers\Controller;
use Prettus\Repository\Criteria\RequestCriteria;
class CustomerController extends Controller
{
/**
* @var CustomerRepository
*/
private $customerRepository;
public function __construct(CustomerRepository $customerRepository)
{
$this->customerRepository = $customerRepository;
}
/**
* Display customers.
*
* @return \Illuminate\Http\Response
*/
public function index(Request $request)
{
$customers = $this->customerRepository
->pushCriteria(new FullNameCriteria($request))
->paginate();
return view('admin.pages.customer.index', compact('customers'));
}
/**
* Display canceled customers with orders
*
* @param Request $request
* @return \Illuminate\Contracts\View\Factory
*/
public function canceled(Request $request)
{
$customers = $this->customerRepository
->pushCriteria(new RequestCriteria($request))
->pushCriteria(new CanceledOrdersCriteria())
->pushCriteria(new FullNameCriteria($request))
->paginate();
return view('admin.pages.customer.canceled', compact('customers'));
}
/**
* Display customer details
*
* @param $customerId
* @return \Illuminate\Contracts\View\Factory
*/
public function show($customerId)
{
$customer = $this->customerRepository
->with('orders')
->find($customerId);
return view('admin.pages.customer.show', compact('customer'));
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment