Skip to content

Commit 73e8c4c

Browse files
committed
Create user payment information form
1 parent 974e2f5 commit 73e8c4c

File tree

8 files changed

+159
-48
lines changed

8 files changed

+159
-48
lines changed
Lines changed: 92 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,92 @@
1+
import Component from '@ember/component';
2+
import FormMixin from 'open-event-frontend/mixins/form';
3+
import { validPhoneNumber } from 'open-event-frontend/utils/validators';
4+
import { computed } from "@ember/object";
5+
6+
export default Component.extend(FormMixin, {
7+
8+
getValidationRules() {
9+
return {
10+
inline : true,
11+
delay : false,
12+
on : 'blur',
13+
14+
fields: {
15+
name: {
16+
identifier : 'contactName',
17+
rules : [
18+
{
19+
type : 'empty',
20+
prompt : this.l10n.t('Please enter your name')
21+
}
22+
]
23+
},
24+
company: {
25+
identifier : 'company',
26+
rules : [
27+
{
28+
type : 'empty',
29+
prompt : this.l10n.t('Please enter your company')
30+
}
31+
]
32+
},
33+
address: {
34+
identifier : 'address',
35+
rules : [
36+
{
37+
type : 'empty',
38+
prompt : this.l10n.t('Please enter your billing address')
39+
}
40+
]
41+
},
42+
city: {
43+
identifier : 'city',
44+
rules : [
45+
{
46+
type : 'empty',
47+
prompt : this.l10n.t('Please enter your billing city')
48+
}
49+
]
50+
},
51+
zipCode: {
52+
identifier : 'zip',
53+
rules : [
54+
{
55+
type : 'empty',
56+
prompt : this.l10n.t('Please enter the zip code')
57+
}
58+
]
59+
},
60+
phone: {
61+
identifier : 'phone',
62+
rules : [
63+
{
64+
type : 'empty',
65+
prompt : this.l10n.t('Please enter a phone number.')
66+
},
67+
{
68+
type : 'regExp',
69+
value : validPhoneNumber,
70+
prompt : this.l10n.t('Please enter a valid phone number.')
71+
}
72+
]
73+
}
74+
}
75+
};
76+
},
77+
user: computed(function() {
78+
return this.authManager.currentUser;
79+
}),
80+
actions: {
81+
submit() {
82+
this.onValid(async() => {
83+
try {
84+
await this.user.save();
85+
this.notify.success(this.l10n.t('Your billing details has been updated'));
86+
} catch (error) {
87+
this.notify.error(this.l10n.t('An unexpected error occurred'));
88+
}
89+
});
90+
}
91+
}
92+
});

app/controllers/account/password.js

Lines changed: 0 additions & 31 deletions
This file was deleted.

app/controllers/account/profile.js

Lines changed: 0 additions & 16 deletions
This file was deleted.

app/models/user.js

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,20 @@ export default ModelBase.extend({
4747
deletedAt : attr('moment'),
4848
lastAccessedAt : attr('moment', { readOnly: true }),
4949

50+
/**
51+
* Billing Contact Information
52+
*/
53+
54+
billingContactName : attr('string'),
55+
billingPhone : attr('string'),
56+
billingCountry : attr('string'),
57+
company : attr('string'),
58+
billingAddress : attr('string'),
59+
billingCity : attr('string'),
60+
billingZipCode : attr('string'),
61+
billingTaxInfo : attr('string'),
62+
billingAdditionalInfo : attr('string'),
63+
5064
status: computed('lastAccessedAt', 'deletedAt', function() {
5165
if (this.deletedAt == null) {
5266
if (this.lastAccessedAt == null) {

app/routes/account/billing-info.js

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,5 +4,9 @@ import AuthenticatedRouteMixin from 'ember-simple-auth/mixins/authenticated-rout
44
export default Route.extend(AuthenticatedRouteMixin, {
55
titleToken() {
66
return this.l10n.t('Billing Info');
7+
},
8+
beforeModel() {
9+
this._super(...arguments);
10+
this.replaceWith('account.billing-info.payment-info');
711
}
812
});
Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,8 @@
11
import Route from '@ember/routing/route';
2+
import AuthenticatedRouteMixin from 'ember-simple-auth/mixins/authenticated-route-mixin';
23

3-
export default Route.extend({
4+
export default Route.extend(AuthenticatedRouteMixin, {
5+
titleToken() {
6+
return this.l10n.t('Payment Info');
7+
}
48
});
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
<div class="ui basic {{if isLoading 'loading' ''}} segment">
2+
{{forms/user-payment-info-form}}
3+
</div>
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
<form class="ui form" {{action 'submit' on='submit'}}>
2+
<h3 class="ui header">
3+
{{t 'Payment Information'}}
4+
</h3>
5+
<div class="field">
6+
<label class="required" for="contactName">{{t 'Contact Name'}}</label>
7+
{{input type='text' id='contactName' value=(mut user.billingContactName)}}
8+
</div>
9+
<div class="field">
10+
<label class="required" for="phone">{{t 'Phone'}}</label>
11+
{{input type='text' id='phone' value=(mut user.billingPhone)}}
12+
</div>
13+
<div class="field">
14+
<label class="required" for="company">{{t 'Company'}}</label>
15+
{{input type='text' id='company' value=(mut user.company)}}
16+
</div>
17+
<div class="field">
18+
<label for="taxID">{{t 'Tax ID or Business ID'}}</label>
19+
{{input type='text' id='taxID' value=(mut user.billingTaxInfo)}}
20+
</div>
21+
<div class="field">
22+
<label class="required" for="address">{{t 'Address'}}</label>
23+
{{textarea rows='2' id='address' value=(mut user.billingAddress)}}
24+
</div>
25+
<div class="field">
26+
<label class="required" for="city">{{t 'City'}}</label>
27+
{{input type='text' id='city' value=(mut user.billingCity)}}
28+
</div>
29+
<div class="field">
30+
<label class="required" for="zip">{{t 'Zip Code'}}</label>
31+
{{input type='text' id='zip' value=(mut user.billingZipCode)}}
32+
</div>
33+
<div class="field">
34+
<label for="additionalInfo">{{t 'Additional Information'}}</label>
35+
{{textarea rows='4' id='additionalInfo' value=(mut user.billingAdditionalInfo)}}
36+
</div>
37+
38+
<button type="submit" class="ui teal submit button update-changes">
39+
{{t 'Submit'}}
40+
</button>
41+
</form>

0 commit comments

Comments
 (0)