* @copyright 2018 Webkul Software Pvt Ltd (http://www.webkul.com) */ class CustomerController extends Controller { /** * Contains route related configuration * * @var array */ protected $_config; /** * CustomerRepository object * * @var Object */ protected $customerRepository; /** * Create a new controller instance. * * @param \Webkul\Customer\Repositories\CustomerRepository $customer * @return void */ public function __construct(CustomerRepository $customerRepository) { $this->middleware('customer'); $this->_config = request('_config'); $this->customerRepository = $customerRepository; } /** * Taking the customer to profile details page * * @return View */ public function index() { $customer = $this->customerRepository->find(auth()->guard('customer')->user()->id); return view($this->_config['view'], compact('customer')); } /** * For loading the edit form page. * * @return View */ public function edit() { $customer = $this->customerRepository->find(auth()->guard('customer')->user()->id); return view($this->_config['view'], compact('customer')); } /** * Edit function for editing customer profile. * * @return response */ public function update() { $id = auth()->guard('customer')->user()->id; $this->validate(request(), [ 'first_name' => 'string', 'last_name' => 'string', 'gender' => 'required', 'date_of_birth' => 'date|before:today', 'email' => 'email|unique:customers,email,'.$id, 'oldpassword' => 'required_with:password', 'password' => 'confirmed|min:6' ]); $data = collect(request()->input())->except('_token')->toArray(); if ($data['date_of_birth'] == "") unset($data['date_of_birth']); if ($data['oldpassword'] != "" || $data['oldpassword'] != null) { if(Hash::check($data['oldpassword'], auth()->guard('customer')->user()->password)) { $data['password'] = bcrypt($data['password']); } else { session()->flash('warning', trans('shop::app.customer.account.profile.unmatch')); return redirect()->back(); } } else { unset($data['password']); } if ($this->customerRepository->update($data, $id)) { Session()->flash('success', trans('shop::app.customer.account.profile.edit-success')); return redirect()->route($this->_config['redirect']); } else { Session()->flash('success', trans('shop::app.customer.account.profile.edit-fail')); return redirect()->back($this->_config['redirect']); } } /** * Load the view for the customer account panel, showing approved reviews. * * @return Mixed */ public function reviews() { $reviews = auth()->guard('customer')->user()->all_reviews; return view($this->_config['view'], compact('reviews')); } }