Customer profile and customer review completed
This commit is contained in:
parent
1bff70bd7b
commit
371012a6be
|
|
@ -0,0 +1,46 @@
|
|||
<?php
|
||||
|
||||
namespace Webkul\Customer\Http\Controllers;
|
||||
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Http\Response;
|
||||
use Webkul\Customer\Repositories\CustomerRepository;
|
||||
use Webkul\Customer\Repositories\CustomerAddressRepository;
|
||||
use Auth;
|
||||
|
||||
/**
|
||||
* Account Controlller for the customers
|
||||
* basically will control the landing
|
||||
* behavior for custome and group of
|
||||
* customers.
|
||||
*
|
||||
* @author Prashant Singh <prashant.singh852@webkul.com>
|
||||
* @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']);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -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');
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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();
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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();
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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'];
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
||||
|
|
|
|||
|
|
@ -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', [
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
<template>
|
||||
<li>
|
||||
<a href="">{{ this.item['translations'][0].name }} <i class="icon dropdown-right-icon"
|
||||
<a :href="this.item['translations'][0].slug">{{ this.item['translations'][0].name }} <i class="icon dropdown-right-icon"
|
||||
v-if="haveChildren && item.parent_id != null"></i></a>
|
||||
<ul v-if="haveChildren">
|
||||
<category-item
|
||||
|
|
@ -29,6 +29,7 @@ export default {
|
|||
|
||||
computed: {
|
||||
haveChildren() {
|
||||
console.log(this.item);
|
||||
return this.item.children.length ? true : false;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -15,8 +15,7 @@
|
|||
</div>
|
||||
|
||||
<div class="profile-content">
|
||||
|
||||
@if(gettype($address) == "string")
|
||||
@if($address->isEmpty())
|
||||
<div>You don't have any saved addresses here, please create a new one by clicking the link below.</div>
|
||||
<br/>
|
||||
<a href="{{ route('customer.address.create') }}">Create Address</a>
|
||||
|
|
@ -39,17 +38,17 @@
|
|||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>One</td>
|
||||
<td>{{ $address['address1'] }}</td>
|
||||
|
||||
<td>One</td>
|
||||
<td>{{ $address['address2'] }}</td>
|
||||
|
||||
<td>One</td>
|
||||
<td>{{ $address['country'] }}</td>
|
||||
|
||||
<td>One</td>
|
||||
<td>{{ $address['state'] }}</td>
|
||||
|
||||
<td>One</td>
|
||||
<td>{{ $address['city'] }}</td>
|
||||
|
||||
<td>One</td>
|
||||
<td>{{ $address['postcode'] }}</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
|
|
|||
|
|
@ -30,13 +30,13 @@
|
|||
</div>
|
||||
|
||||
<div class="control-group" :class="[errors.has('state') ? 'has-error' : '']">
|
||||
<label for="state">state</label>
|
||||
<label for="state">State</label>
|
||||
<input type="text" class="control" name="state" v-validate="'required'">
|
||||
<span class="control-error" v-if="errors.has('state')">@{{ errors.first('state') }}</span>
|
||||
</div>
|
||||
|
||||
<div class="control-group" :class="[errors.has('city') ? 'has-error' : '']">
|
||||
<label for="city">city</label>
|
||||
<label for="city">City</label>
|
||||
<input type="text" class="control" name="city" v-validate="'required'">
|
||||
<span class="control-error" v-if="errors.has('city')">@{{ errors.first('city') }}</span>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -5,50 +5,49 @@
|
|||
|
||||
<div class="address-form-content">
|
||||
<div class="title">Add Address</div>
|
||||
|
||||
<form method="post" action="{{ route('customer.address.create') }}">
|
||||
<form method="post" action="{{ route('customer.address.edit') }}">
|
||||
|
||||
<div class="edit-form">
|
||||
@csrf
|
||||
|
||||
<div class="control-group" :class="[errors.has('address1') ? 'has-error' : '']">
|
||||
<label for="first_name">Address Line 1</label>
|
||||
<input type="text" class="control" name="address1" v-validate="'required'">
|
||||
<input type="text" class="control" name="address1" v-validate="'required'" value ="{{ $address['address1'] }}">
|
||||
<span class="control-error" v-if="errors.has('address1')">@{{ errors.first('address1') }}</span>
|
||||
</div>
|
||||
|
||||
<div class="control-group" :class="[errors.has('address2') ? 'has-error' : '']">
|
||||
<label for="address2">Address Line 2</label>
|
||||
<input type="text" class="control" name="address2" v-validate="'required'">
|
||||
<input type="text" class="control" name="address2" v-validate="'required'" value ="{{ $address['address2'] }}">
|
||||
<span class="control-error" v-if="errors.has('address2')">@{{ errors.first('address2') }}</span>
|
||||
</div>
|
||||
|
||||
<div class="control-group" :class="[errors.has('country') ? 'has-error' : '']">
|
||||
<label for="country">Country</label>
|
||||
<input type="text" class="control" name="country" v-validate="'required'">
|
||||
<input type="text" class="control" name="country" v-validate="'required'" value ="{{ $address['country'] }}">
|
||||
<span class="control-error" v-if="errors.has('country')">@{{ errors.first('country') }}</span>
|
||||
</div>
|
||||
|
||||
<div class="control-group" :class="[errors.has('state') ? 'has-error' : '']">
|
||||
<label for="state">state</label>
|
||||
<input type="text" class="control" name="state" v-validate="'required'">
|
||||
<input type="text" class="control" name="state" v-validate="'required'" value ="{{ $address['state'] }}">
|
||||
<span class="control-error" v-if="errors.has('state')">@{{ errors.first('state') }}</span>
|
||||
</div>
|
||||
|
||||
<div class="control-group" :class="[errors.has('city') ? 'has-error' : '']">
|
||||
<label for="city">city</label>
|
||||
<input type="text" class="control" name="city" v-validate="'required|digits:10'">
|
||||
<input type="text" class="control" name="city" v-validate="'required|alpha_spaces'" value ="{{ $address['city'] }}">
|
||||
<span class="control-error" v-if="errors.has('city')">@{{ errors.first('city') }}</span>
|
||||
</div>
|
||||
|
||||
<div class="control-group" :class="[errors.has('postcode') ? 'has-error' : '']">
|
||||
<label for="postcode">Postcode</label>
|
||||
<input type="text" class="control" name="postcode" v-validate="'required|digits:10'">
|
||||
<input type="text" class="control" name="postcode" v-validate="'required|digits:10'" value ="{{ $address['postcode'] }}">
|
||||
<span class="control-error" v-if="errors.has('postcode')">@{{ errors.first('postcode') }}</span>
|
||||
</div>
|
||||
|
||||
<div class="button-group">
|
||||
<input class="btn btn-primary btn-lg" type="submit" value="Create Address">
|
||||
<input class="btn btn-primary btn-lg" type="submit" value="Edit Address">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
|
|
|||
|
|
@ -29279,6 +29279,7 @@ Object.defineProperty(__webpack_exports__, "__esModule", { value: true });
|
|||
|
||||
computed: {
|
||||
haveChildren: function haveChildren() {
|
||||
console.log(this.item);
|
||||
return this.item.children.length ? true : false;
|
||||
}
|
||||
}
|
||||
|
|
@ -29293,7 +29294,7 @@ var render = function() {
|
|||
var _h = _vm.$createElement
|
||||
var _c = _vm._self._c || _h
|
||||
return _c("li", [
|
||||
_c("a", { attrs: { href: "" } }, [
|
||||
_c("a", { attrs: { href: this.item["translations"][0].slug } }, [
|
||||
_vm._v(_vm._s(this.item["translations"][0].name) + " "),
|
||||
_vm.haveChildren && _vm.item.parent_id != null
|
||||
? _c("i", { staticClass: "icon dropdown-right-icon" })
|
||||
|
|
|
|||
Loading…
Reference in New Issue