split the 'name' column in the customer addresses into 'first_name' and 'last_name' - it is more common to save the data in this structure
This commit is contained in:
parent
81c928025b
commit
7eee7e3134
|
|
@ -16,6 +16,13 @@ class AddCompanyNameAndVatIdToCustomerAddresses extends Migration
|
|||
Schema::table('customer_addresses', function (Blueprint $table) {
|
||||
$table->string('company_name')->nullable()->before('address1');
|
||||
$table->string('vat_id')->nullable()->after('company_name');
|
||||
|
||||
|
||||
// split 'name' column into first_name and last_name
|
||||
$table->dropColumn('name');
|
||||
|
||||
$table->string('first_name')->after('company_name');
|
||||
$table->string('last_name')->after('first_name');
|
||||
});
|
||||
}
|
||||
|
||||
|
|
@ -29,6 +36,9 @@ class AddCompanyNameAndVatIdToCustomerAddresses extends Migration
|
|||
Schema::table('customer_addresses', function (Blueprint $table) {
|
||||
$table->dropColumn('company_name');
|
||||
$table->dropColumn('vat_id');
|
||||
$table->dropColumn('first_name');
|
||||
$table->dropColumn('last_name');
|
||||
$table->string('name');
|
||||
});
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -76,13 +76,15 @@ class AddressController extends Controller
|
|||
$data = collect(request()->input())->except('_token')->toArray();
|
||||
|
||||
$this->validate(request(), [
|
||||
'address1' => 'string|required',
|
||||
'country' => 'string|required',
|
||||
'state' => 'string|required',
|
||||
'city' => 'string|required',
|
||||
'postcode' => 'required',
|
||||
'phone' => 'required',
|
||||
'vat_id' => new VatIdRule(),
|
||||
'first_name' => 'string|required',
|
||||
'last_name' => 'string|required',
|
||||
'address1' => 'string|required',
|
||||
'country' => 'string|required',
|
||||
'state' => 'string|required',
|
||||
'city' => 'string|required',
|
||||
'postcode' => 'required',
|
||||
'phone' => 'required',
|
||||
'vat_id' => new VatIdRule(),
|
||||
]);
|
||||
|
||||
$cust_id['customer_id'] = $this->customer->id;
|
||||
|
|
@ -132,13 +134,15 @@ class AddressController extends Controller
|
|||
request()->merge(['address1' => implode(PHP_EOL, array_filter(request()->input('address1')))]);
|
||||
|
||||
$this->validate(request(), [
|
||||
'address1' => 'string|required',
|
||||
'country' => 'string|required',
|
||||
'state' => 'string|required',
|
||||
'city' => 'string|required',
|
||||
'postcode' => 'required',
|
||||
'phone' => 'required',
|
||||
'vat_id' => new VatIdRule(),
|
||||
'first_name' => 'string|required',
|
||||
'last_name' => 'string|required',
|
||||
'address1' => 'string|required',
|
||||
'country' => 'string|required',
|
||||
'state' => 'string|required',
|
||||
'city' => 'string|required',
|
||||
'postcode' => 'required',
|
||||
'phone' => 'required',
|
||||
'vat_id' => new VatIdRule(),
|
||||
]);
|
||||
|
||||
$data = collect(request()->input())->except('_token')->toArray();
|
||||
|
|
|
|||
|
|
@ -12,6 +12,8 @@ class CustomerAddress extends Model implements CustomerAddressContract
|
|||
protected $fillable = [
|
||||
'customer_id',
|
||||
'company_name',
|
||||
'first_name',
|
||||
'last_name',
|
||||
'vat_id',
|
||||
'address1',
|
||||
'address2',
|
||||
|
|
|
|||
|
|
@ -221,6 +221,8 @@ return [
|
|||
'create' => [
|
||||
'page-title' => 'Add Address Form',
|
||||
'company_name' => 'Company name',
|
||||
'first_name' => 'First name',
|
||||
'last_name' => 'Last name',
|
||||
'vat_id' => 'Vat id',
|
||||
'title' => 'Add Address',
|
||||
'street-address' => 'Street Address',
|
||||
|
|
@ -238,6 +240,8 @@ return [
|
|||
'edit' => [
|
||||
'page-title' => 'Edit Address',
|
||||
'company_name' => 'Company name',
|
||||
'first_name' => 'First name',
|
||||
'last_name' => 'Last name',
|
||||
'vat_id' => 'Vat id',
|
||||
'title' => 'Edit Address',
|
||||
'street-address' => 'Street Address',
|
||||
|
|
|
|||
|
|
@ -29,7 +29,7 @@
|
|||
|
||||
{!! view_render_event('bagisto.shop.customers.account.address.create.before') !!}
|
||||
|
||||
<form method="post" action="{{ route('customer.address.create') }}" @submit.prevent="onSubmit">
|
||||
<form id="customer-address-form" method="post" action="{{ route('customer.address.create') }}" @submit.prevent="onSubmit">
|
||||
|
||||
<div class="account-table-content">
|
||||
@csrf
|
||||
|
|
@ -42,6 +42,18 @@
|
|||
<span class="control-error" v-if="errors.has('company_name')">@{{ errors.first('company_name') }}</span>
|
||||
</div>
|
||||
|
||||
<div class="control-group" :class="[errors.has('first_name') ? 'has-error' : '']">
|
||||
<label for="first_name" class="required">{{ __('shop::app.customer.account.address.edit.first_name') }}</label>
|
||||
<input type="text" v-validate="'required'" class="control" name="first_name" data-vv-as=""{{ __('shop::app.customer.account.address.edit.first_name') }}"">
|
||||
<span class="control-error" v-if="errors.has('first_name')">@{{ errors.first('first_name') }}</span>
|
||||
</div>
|
||||
|
||||
<div class="control-group" :class="[errors.has('last_name') ? 'has-error' : '']">
|
||||
<label for="last_name" class="required">{{ __('shop::app.customer.account.address.edit.last_name') }}</label>
|
||||
<input type="text" v-validate="'required'" class="control" name="last_name" data-vv-as=""{{ __('shop::app.customer.account.address.edit.last_name') }}"">
|
||||
<span class="control-error" v-if="errors.has('last_name')">@{{ errors.first('last_name') }}</span>
|
||||
</div>
|
||||
|
||||
<div class="control-group" :class="[errors.has('vat_id') ? 'has-error' : '']">
|
||||
<label for="vat_id">{{ __('shop::app.customer.account.address.create.vat_id') }}</label>
|
||||
<input type="text" class="control" name="vat_id" data-vv-as=""{{ __('shop::app.customer.account.address.create.vat_id') }}"">
|
||||
|
|
|
|||
|
|
@ -29,7 +29,7 @@
|
|||
|
||||
{!! view_render_event('bagisto.shop.customers.account.address.edit.before', ['address' => $address]) !!}
|
||||
|
||||
<form method="post" action="{{ route('customer.address.edit', $address->id) }}" @submit.prevent="onSubmit">
|
||||
<form id="customer-address-form" method="post" action="{{ route('customer.address.edit', $address->id) }}" @submit.prevent="onSubmit">
|
||||
|
||||
<div class="account-table-content">
|
||||
@method('PUT')
|
||||
|
|
@ -43,6 +43,18 @@
|
|||
<span class="control-error" v-if="errors.has('company_name')">@{{ errors.first('company_name') }}</span>
|
||||
</div>
|
||||
|
||||
<div class="control-group" :class="[errors.has('first_name') ? 'has-error' : '']">
|
||||
<label for="first_name" class="required">{{ __('shop::app.customer.account.address.edit.first_name') }}</label>
|
||||
<input type="text" value="{{ $address->first_name }}" v-validate="'required'" class="control" name="first_name" data-vv-as=""{{ __('shop::app.customer.account.address.edit.first_name') }}"">
|
||||
<span class="control-error" v-if="errors.has('first_name')">@{{ errors.first('first_name') }}</span>
|
||||
</div>
|
||||
|
||||
<div class="control-group" :class="[errors.has('last_name') ? 'has-error' : '']">
|
||||
<label for="last_name" class="required">{{ __('shop::app.customer.account.address.edit.last_name') }}</label>
|
||||
<input type="text" value="{{ $address->last_name }}" v-validate="'required'" class="control" name="last_name" data-vv-as=""{{ __('shop::app.customer.account.address.edit.last_name') }}"">
|
||||
<span class="control-error" v-if="errors.has('last_name')">@{{ errors.first('last_name') }}</span>
|
||||
</div>
|
||||
|
||||
<div class="control-group" :class="[errors.has('vat_id') ? 'has-error' : '']">
|
||||
<label for="vat_id">{{ __('shop::app.customer.account.address.edit.vat_id') }}</label>
|
||||
<input type="text" value="{{ $address->vat_id }}" class="control" name="vat_id" data-vv-as=""{{ __('shop::app.customer.account.address.edit.vat_id') }}"">
|
||||
|
|
@ -94,7 +106,7 @@
|
|||
</div>
|
||||
</div>
|
||||
|
||||
</form>
|
||||
</formi>
|
||||
|
||||
{!! view_render_event('bagisto.shop.customers.account.address.edit.after', ['address' => $address]) !!}
|
||||
|
||||
|
|
|
|||
|
|
@ -6,95 +6,108 @@
|
|||
|
||||
@section('content-wrapper')
|
||||
|
||||
<div class="account-content">
|
||||
<div class="account-content">
|
||||
|
||||
@include('shop::customers.account.partials.sidemenu')
|
||||
@include('shop::customers.account.partials.sidemenu')
|
||||
|
||||
<div class="account-layout">
|
||||
<div class="account-layout">
|
||||
|
||||
<div class="account-head">
|
||||
<span class="back-icon"><a href="{{ route('customer.account.index') }}"><i class="icon icon-menu-back"></i></a></span>
|
||||
<span class="account-heading">{{ __('shop::app.customer.account.address.index.title') }}</span>
|
||||
<div class="account-head">
|
||||
<span class="back-icon"><a href="{{ route('customer.account.index') }}"><i
|
||||
class="icon icon-menu-back"></i></a></span>
|
||||
<span
|
||||
class="account-heading">{{ __('shop::app.customer.account.address.index.title') }}</span>
|
||||
|
||||
@if (! $addresses->isEmpty())
|
||||
<span class="account-action">
|
||||
@if (! $addresses->isEmpty())
|
||||
<span class="account-action">
|
||||
<a href="{{ route('customer.address.create') }}">{{ __('shop::app.customer.account.address.index.add') }}</a>
|
||||
</span>
|
||||
@else
|
||||
<span></span>
|
||||
@endif
|
||||
<div class="horizontal-rule"></div>
|
||||
</div>
|
||||
@else
|
||||
<span></span>
|
||||
@endif
|
||||
<div class="horizontal-rule"></div>
|
||||
</div>
|
||||
|
||||
{!! view_render_event('bagisto.shop.customers.account.address.list.before', ['addresses' => $addresses]) !!}
|
||||
{!! view_render_event('bagisto.shop.customers.account.address.list.before', ['addresses' => $addresses]) !!}
|
||||
|
||||
<div class="account-table-content">
|
||||
@if ($addresses->isEmpty())
|
||||
<div>{{ __('shop::app.customer.account.address.index.empty') }}</div>
|
||||
<br/>
|
||||
<a href="{{ route('customer.address.create') }}">{{ __('shop::app.customer.account.address.index.add') }}</a>
|
||||
@else
|
||||
<div class="address-holder">
|
||||
@foreach ($addresses as $address)
|
||||
<div class="address-card">
|
||||
<div class="details">
|
||||
<span class="bold">{{ auth()->guard('customer')->user()->name }}</span>
|
||||
<ul class="address-card-list">
|
||||
<li class="mt-5">
|
||||
{{ $address->name }}
|
||||
</li>
|
||||
<div class="account-table-content">
|
||||
@if ($addresses->isEmpty())
|
||||
<div>{{ __('shop::app.customer.account.address.index.empty') }}</div>
|
||||
<br/>
|
||||
<a href="{{ route('customer.address.create') }}">{{ __('shop::app.customer.account.address.index.add') }}</a>
|
||||
@else
|
||||
<div class="address-holder">
|
||||
@foreach ($addresses as $address)
|
||||
<div class="address-card">
|
||||
<div class="details">
|
||||
<span
|
||||
class="bold">{{ auth()->guard('customer')->user()->name }}</span>
|
||||
<ul class="address-card-list">
|
||||
<li class="mt-5">
|
||||
{{ $address->company_name }}
|
||||
</li>
|
||||
|
||||
<li class="mt-5">
|
||||
{{ $address->address1 }},
|
||||
</li>
|
||||
<li class="mt-5">
|
||||
{{ $address->first_name }}
|
||||
</li>
|
||||
|
||||
<li class="mt-5">
|
||||
{{ $address->city }}
|
||||
</li>
|
||||
<li class="mt-5">
|
||||
{{ $address->last_name }}
|
||||
</li>
|
||||
|
||||
<li class="mt-5">
|
||||
{{ $address->state }}
|
||||
</li>
|
||||
<li class="mt-5">
|
||||
{{ $address->address1 }},
|
||||
</li>
|
||||
|
||||
<li class="mt-5">
|
||||
{{ core()->country_name($address->country) }} {{ $address->postcode }}
|
||||
</li>
|
||||
<li class="mt-5">
|
||||
{{ $address->city }}
|
||||
</li>
|
||||
|
||||
<li class="mt-10">
|
||||
{{ __('shop::app.customer.account.address.index.contact') }} : {{ $address->phone }}
|
||||
</li>
|
||||
</ul>
|
||||
<li class="mt-5">
|
||||
{{ $address->state }}
|
||||
</li>
|
||||
|
||||
<div class="control-links mt-20">
|
||||
<li class="mt-5">
|
||||
{{ core()->country_name($address->country) }} {{ $address->postcode }}
|
||||
</li>
|
||||
|
||||
<li class="mt-10">
|
||||
{{ __('shop::app.customer.account.address.index.contact') }}
|
||||
: {{ $address->phone }}
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
<div class="control-links mt-20">
|
||||
<span>
|
||||
<a href="{{ route('customer.address.edit', $address->id) }}">
|
||||
{{ __('shop::app.customer.account.address.index.edit') }}
|
||||
</a>
|
||||
</span>
|
||||
|
||||
<span>
|
||||
<a href="{{ route('address.delete', $address->id) }}" onclick="deleteAddress('{{ __('shop::app.customer.account.address.index.confirm-delete') }}')">
|
||||
<span>
|
||||
<a href="{{ route('address.delete', $address->id) }}"
|
||||
onclick="deleteAddress('{{ __('shop::app.customer.account.address.index.confirm-delete') }}')">
|
||||
{{ __('shop::app.customer.account.address.index.delete') }}
|
||||
</a>
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@endforeach
|
||||
</div>
|
||||
@endif
|
||||
</div>
|
||||
@endforeach
|
||||
</div>
|
||||
@endif
|
||||
</div>
|
||||
|
||||
{!! view_render_event('bagisto.shop.customers.account.address.list.after', ['addresses' => $addresses]) !!}
|
||||
{!! view_render_event('bagisto.shop.customers.account.address.list.after', ['addresses' => $addresses]) !!}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@endsection
|
||||
|
||||
@push('scripts')
|
||||
<script>
|
||||
function deleteAddress(message) {
|
||||
if (!confirm(message))
|
||||
event.preventDefault();
|
||||
event.preventDefault();
|
||||
}
|
||||
</script>
|
||||
@endpush
|
||||
|
|
|
|||
|
|
@ -11,7 +11,7 @@ class CustomerCest
|
|||
|
||||
public function updateCustomerProfile(FunctionalTester $I)
|
||||
{
|
||||
$customer = $I->loginAsCustomer();
|
||||
$I->loginAsCustomer();
|
||||
|
||||
$I->amOnPage('/');
|
||||
|
||||
|
|
@ -37,9 +37,9 @@ class CustomerCest
|
|||
{
|
||||
$faker = Faker\Factory::create();
|
||||
|
||||
$formCssSelector = '.account-layout > form:nth-child(2)';
|
||||
$formCssSelector = '#customer-address-form';
|
||||
|
||||
$customer = $I->loginAsCustomer();
|
||||
$I->loginAsCustomer();
|
||||
|
||||
$I->amOnPage('/');
|
||||
|
||||
|
|
@ -51,6 +51,8 @@ class CustomerCest
|
|||
|
||||
$fields = [
|
||||
'company_name' => $faker->company,
|
||||
'first_name' => $faker->firstName,
|
||||
'last_name' => $faker->lastName,
|
||||
'vat_id' => $faker->randomNumber(9),
|
||||
'address1[]' => $faker->streetAddress,
|
||||
'country' => $faker->countryCode,
|
||||
|
|
@ -90,6 +92,8 @@ class CustomerCest
|
|||
|
||||
$I->seeRecord(CustomerAddress::class, [
|
||||
'company_name' => $fields['company_name'],
|
||||
'first_name' => $fields['first_name'],
|
||||
'last_name' => $fields['last_name'],
|
||||
'vat_id' => $fields['vat_id'],
|
||||
'address1' => $fields['address1[]'],
|
||||
'country' => $fields['country'],
|
||||
|
|
|
|||
Loading…
Reference in New Issue