From 371012a6beb4594e54c0f97bd0cc483796a8d8e8 Mon Sep 17 00:00:00 2001 From: prashant-webkul Date: Fri, 24 Aug 2018 10:48:53 +0530 Subject: [PATCH] Customer profile and customer review completed --- .../Http/Controllers/AccountController.php | 46 ++++++++++ .../Http/Controllers/AddressController.php | 84 ++++++++++++++++--- .../Http/Controllers/CustomerController.php | 4 + .../Controllers/RegistrationController.php | 2 + .../Customer/src/Models/CustomersAddress.php | 2 + .../CustomerAddressRepository.php | 2 +- packages/Webkul/Shop/src/Http/routes.php | 9 +- .../assets/js/components/category-item.vue | 3 +- .../account/address/address.blade.php | 15 ++-- .../account/address/create.blade.php | 4 +- .../customers/account/address/edit.blade.php | 17 ++-- public/themes/default/assets/js/shop.js | 3 +- 12 files changed, 154 insertions(+), 37 deletions(-) create mode 100644 packages/Webkul/Customer/src/Http/Controllers/AccountController.php diff --git a/packages/Webkul/Customer/src/Http/Controllers/AccountController.php b/packages/Webkul/Customer/src/Http/Controllers/AccountController.php new file mode 100644 index 000000000..2584d09db --- /dev/null +++ b/packages/Webkul/Customer/src/Http/Controllers/AccountController.php @@ -0,0 +1,46 @@ + + * @copyright 2018 Webkul Software Pvt Ltd (http://www.webkul.com) + */ +class AccountController extends Controller +{ + /** + * Display a listing of the resource. + * + * @return \Illuminate\Http\Response + */ + protected $_config; + protected $customer; + protected $address; + + + public function __construct(CustomerRepository $customer, CustomerAddressRepository $address) + { + + $this->middleware('auth:customer'); + $this->_config = request('_config'); + $this->customer = $customer; + $this->address = $address; + + } + + public function index() { + return view($this->_config['view']); + } + +} diff --git a/packages/Webkul/Customer/src/Http/Controllers/AddressController.php b/packages/Webkul/Customer/src/Http/Controllers/AddressController.php index 1b2915b31..8b5523b9c 100644 --- a/packages/Webkul/Customer/src/Http/Controllers/AddressController.php +++ b/packages/Webkul/Customer/src/Http/Controllers/AddressController.php @@ -33,8 +33,11 @@ class AddressController extends Controller { $this->middleware('auth:customer'); + $this->_config = request('_config'); + $this->customer = $customer; + $this->address = $address; } @@ -45,6 +48,7 @@ class AddressController extends Controller * @return Array */ private function getCustomer($id) { + $customer = collect($this->customer->findOneWhere(['id'=>$id])); return $customer; @@ -57,9 +61,11 @@ class AddressController extends Controller * @return Array */ private function getAddress($id) { - $address = collect($this->address->findOneWhere(['id'=>$id])); + + $address = collect($this->address->findOneWhere(['customer_id'=>$id])); return $address; + } @@ -75,10 +81,7 @@ class AddressController extends Controller $address = $this->getAddress($id); - if(count($address)==0) - return view($this->_config['view'])->with('address', 'You don\'t have any addresses saved yet, create new.'); - else - return view($this->_config['view'])->with('address', $address); + return view($this->_config['view'])->with('address', $address); } /** @@ -101,19 +104,44 @@ class AddressController extends Controller $id = auth()->guard('customer')->user()->id; + $data = collect(request()->input())->except('_token')->toArray(); + $this->validate(request(), [ 'address1' => 'string|required', - 'address1' => 'string|required', + 'address2' => 'string|required', 'country' => 'string|required', 'state' => 'string|required', 'city' => 'string|required', - 'pincode' => 'numeric|required', + 'postcode' => 'numeric|required', ]); - $data = collect(request()->input())->except('_token')->toArray(); - dd($data); + $cust_id['customer_id'] = $id; + + $data = array_merge($cust_id, $data); + + $address = $this->getAddress($id); + + + if(count($address) == 0 || $address->isEmpty()) { + if($this->address->create($data)) { + session()->flash('success', 'Address have been successfully added.'); + + return redirect()->route($this->_config['redirect']); + + } else { + session()->flash('error', 'Address cannot be added.'); + + return redirect()->back(); + } + } else { + session()->flash('error', 'Cannot create a new address due to previously existing address'); + + return redirect()-route('customer.address.edit'); + } + + } @@ -124,9 +152,43 @@ class AddressController extends Controller * * @return View */ - public function edit() { + public function showEdit() { - return view($this->_config['view']); + $id = auth()->guard('customer')->user()->id; + + $address = $this->getAddress($id); + + return view($this->_config['view'])->with('address', $address); } + + public function edit() { + + $id = auth()->guard('customer')->user()->id; + + $this->validate(request(), [ + + 'address1' => 'string|required', + 'address2' => 'string|required', + 'country' => 'string|required', + 'state' => 'string|required', + 'city' => 'string|required', + 'postcode' => 'numeric|required', + + ]); + + $data = collect(request()->input())->except('_token')->toArray(); + + $address = $this->getAddress($id); + + if($this->address->update($data, $id)) { + Session()->flash('success','Address Updated Successfully.'); + + return redirect()->route('customer.address.index'); + } else { + Session()->flash('success','Address Cannot be Updated.'); + + return redirect()->route('customer.address.edit'); + } + } } diff --git a/packages/Webkul/Customer/src/Http/Controllers/CustomerController.php b/packages/Webkul/Customer/src/Http/Controllers/CustomerController.php index dd73d4904..fb0a31a9b 100644 --- a/packages/Webkul/Customer/src/Http/Controllers/CustomerController.php +++ b/packages/Webkul/Customer/src/Http/Controllers/CustomerController.php @@ -104,9 +104,11 @@ class CustomerController extends Controller $data = collect(request()->input())->except(['_token','password','password_confirmation','oldpassword'])->toArray(); if($this->customer->update($data, $id)) { Session()->flash('success','Profile Updated Successfully'); + return redirect()->back(); } else { Session()->flash('success','Profile Updated Successfully'); + return redirect()->back(); } @@ -118,9 +120,11 @@ class CustomerController extends Controller if($this->customer->update($data, $id)) { Session()->flash('success','Profile Updated Successfully'); + return redirect()->back(); } else { Session()->flash('success','Profile Updated Successfully'); + return redirect()->back(); } } diff --git a/packages/Webkul/Customer/src/Http/Controllers/RegistrationController.php b/packages/Webkul/Customer/src/Http/Controllers/RegistrationController.php index c06755239..67ea8ba65 100644 --- a/packages/Webkul/Customer/src/Http/Controllers/RegistrationController.php +++ b/packages/Webkul/Customer/src/Http/Controllers/RegistrationController.php @@ -61,11 +61,13 @@ class RegistrationController extends Controller if ($this->customer->create($registrationData)) { session()->flash('success', 'Account created successfully.'); + return redirect()->route($this->_config['redirect']); } else { session()->flash('error', 'Cannot Create Your Account.'); + return redirect()->back(); } diff --git a/packages/Webkul/Customer/src/Models/CustomersAddress.php b/packages/Webkul/Customer/src/Models/CustomersAddress.php index 600f26719..2e9ffbd2e 100644 --- a/packages/Webkul/Customer/src/Models/CustomersAddress.php +++ b/packages/Webkul/Customer/src/Models/CustomersAddress.php @@ -6,4 +6,6 @@ use Illuminate\Database\Eloquent\Model; class CustomersAddress extends Model { protected $table = 'customer_addresses'; + + protected $fillable = ['customer_id' ,'address1', 'address2', 'country', 'state', 'city', 'postcode']; } diff --git a/packages/Webkul/Customer/src/Repositories/CustomerAddressRepository.php b/packages/Webkul/Customer/src/Repositories/CustomerAddressRepository.php index b766536a4..621c91bae 100644 --- a/packages/Webkul/Customer/src/Repositories/CustomerAddressRepository.php +++ b/packages/Webkul/Customer/src/Repositories/CustomerAddressRepository.php @@ -45,7 +45,7 @@ class CustomerAddressRepository extends Repository public function update(array $data, $id, $attribute = "id") { - $address = $this->find($id); + $address = $this->findOneByField('customer_id', $id); $address->update($data); diff --git a/packages/Webkul/Shop/src/Http/routes.php b/packages/Webkul/Shop/src/Http/routes.php index 69ad8d0ae..f3e8bf0be 100644 --- a/packages/Webkul/Shop/src/Http/routes.php +++ b/packages/Webkul/Shop/src/Http/routes.php @@ -42,7 +42,7 @@ Route::group(['middleware' => ['web']], function () { 'redirect' => 'customer.session.index' ])->name('customer.session.destroy'); - Route::view('/cart', 'shop::store.product.view.cart.index')->name('customer.cart'); + Route::view('/cart', 'shop::store.product.cart.cart.index')->name('customer.cart'); Route::view('/product', 'shop::store.product.details.home.index')->name('customer.product'); @@ -83,11 +83,12 @@ Route::group(['middleware' => ['web']], function () { ])->name('customer.address.create'); Route::post('address/create', 'Webkul\Customer\Http\Controllers\AddressController@create')->defaults('_config', [ - 'view' => 'shop::customers.account.address.address' + 'view' => 'shop::customers.account.address.address', + 'redirect' => 'customer.address.index' ])->name('customer.address.create'); - Route::get('address/edit', 'Webkul\Customer\Http\Controllers\AddressController@edit')->defaults('_config', [ - 'view' => 'shop::customers.account.address.address' + Route::get('address/edit', 'Webkul\Customer\Http\Controllers\AddressController@showEdit')->defaults('_config', [ + 'view' => 'shop::customers.account.address.edit' ])->name('customer.address.edit'); Route::post('address/edit', 'Webkul\Customer\Http\Controllers\AddressController@edit')->defaults('_config', [ diff --git a/packages/Webkul/Shop/src/Resources/assets/js/components/category-item.vue b/packages/Webkul/Shop/src/Resources/assets/js/components/category-item.vue index e072840f4..4ff3508ad 100644 --- a/packages/Webkul/Shop/src/Resources/assets/js/components/category-item.vue +++ b/packages/Webkul/Shop/src/Resources/assets/js/components/category-item.vue @@ -1,6 +1,6 @@