Skip to content

Commit 25f1a18

Browse files
committed
feat: add validations to discount code
1 parent b24c288 commit 25f1a18

File tree

5 files changed

+63
-16
lines changed

5 files changed

+63
-16
lines changed

app/components/forms/events/view/create-discount-code.js

Lines changed: 47 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ import { computed } from '@ember/object';
33
import FormMixin from 'open-event-frontend/mixins/form';
44
import { later } from '@ember/runloop';
55
import { currencySymbol } from 'open-event-frontend/helpers/currency-symbol';
6-
6+
import moment from 'moment';
77
export default Component.extend(FormMixin, {
88
getValidationRules() {
99
window.$.fn.form.settings.rules.checkMaxMin = () => {
@@ -21,6 +21,12 @@ export default Component.extend(FormMixin, {
2121
}
2222
return false;
2323
};
24+
25+
window.$.fn.form.settings.rules.checkDates = () => {
26+
let startDatetime = moment(this.get('data.validFrom'));
27+
let endDatetime = moment(this.get('data.validTill'));
28+
return (endDatetime.diff(startDatetime, 'minutes') > 0);
29+
};
2430
return {
2531
inline : true,
2632
delay : false,
@@ -107,6 +113,46 @@ export default Component.extend(FormMixin, {
107113
prompt : this.l10n.t('Please select atleast 1 ticket.')
108114
}
109115
]
116+
},
117+
startDate: {
118+
optional : true,
119+
identifier : 'start_date',
120+
rules : [
121+
{
122+
type : 'checkDates',
123+
prompt : this.l10n.t('Valid Till date & time should be after valid from date and time')
124+
}
125+
]
126+
},
127+
startTime: {
128+
optional : true,
129+
identifier : 'start_time',
130+
rules : [
131+
{
132+
type : 'checkDates',
133+
prompt : this.l10n.t('Valid Till date & time should be after valid from date and time')
134+
}
135+
]
136+
},
137+
endDate: {
138+
optional : true,
139+
identifier : 'end_date',
140+
rules : [
141+
{
142+
type : 'checkDates',
143+
prompt : this.l10n.t('Valid Till date & time should be after valid from date and time')
144+
}
145+
]
146+
},
147+
endTime: {
148+
optional : true,
149+
identifier : 'end_time',
150+
rules : [
151+
{
152+
type : 'checkDates',
153+
prompt : this.l10n.t('Valid Till date & time should be after valid from date and time')
154+
}
155+
]
110156
}
111157
}
112158
};

app/components/widgets/forms/time-picker.js

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import { FORM_TIME_FORMAT } from 'open-event-frontend/utils/dictionary/date-time
55

66
export default Component.extend({
77

8-
classNames : ['ui', 'calendar', 'time', 'picker', 'input', 'fluid'],
8+
classNames : ['ui', 'calendar', 'time', 'picker', 'input', 'fluid', 'field'],
99
classNameBindings : ['icon:left', 'icon'],
1010

1111
icon: true,
@@ -28,14 +28,14 @@ export default Component.extend({
2828
}
2929
};
3030

31-
switch (this.rangePosition) {
32-
case 'start':
33-
defaultOptions.endCalendar = this.$().closest('.fields').find('.ui.calendar.time.picker');
34-
break;
35-
case 'end':
36-
defaultOptions.startCalendar = this.$().closest('.fields').find('.ui.calendar.time.picker');
37-
break;
38-
}
31+
// switch (this.rangePosition) {
32+
// case 'start':
33+
// defaultOptions.endCalendar = this.$().closest('.fields').find('.ui.calendar.time.picker');
34+
// break;
35+
// case 'end':
36+
// defaultOptions.startCalendar = this.$().closest('.fields').find('.ui.calendar.time.picker');
37+
// break;
38+
// }
3939

4040
this.$().calendar(merge(defaultOptions, this.options));
4141
},

app/models/discount-code.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,9 +22,9 @@ export default ModelBase.extend({
2222
ticketsNumber : attr('number'), // For form (1) this holds the max. times this can be used for events
2323
minQuantity : attr('number', { defaultValue: 0 }), // Not of any significance for form (1)
2424
maxQuantity : attr('number'), // For form (1) this holds the number of months this code is valid for events
25-
validFrom : attr('moment'),
25+
validFrom : attr('moment', { defaultValue: () => moment().startOf('day') }),
2626
discountUrl : attr('string'),
27-
validTill : attr('moment', { defaultValue: () => moment.tz(detectedTimezone).add(1, 'months').startOf('day') }),
27+
validTill : attr('moment', { defaultValue: () => moment().add(1, 'months').startOf('day') }),
2828
usedFor : attr('string'),
2929
isActive : attr('boolean', { defaultValue: true }),
3030
createdAt : attr('moment'),

app/templates/components/forms/events/view/create-discount-code.hbs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -69,15 +69,15 @@
6969
<div class="fields">
7070
<div class="wide field {{if device.isMobile 'sixteen' 'five'}}">
7171
<label>{{t 'Valid from'}}</label>
72-
{{widgets/forms/date-picker id='start_date' value=data.validFromDate rangePosition='start'}}
72+
{{widgets/forms/date-picker name='start_date' value=data.validFromDate rangePosition='start'}}
7373
<div class="ui hidden divider"></div>
74-
{{widgets/forms/time-picker inputId='start_time' value=data.validFromTime rangePosition='start'}}
74+
{{widgets/forms/time-picker name='start_time' value=data.validFromTime}}
7575
</div>
7676
<div class="wide field {{if device.isMobile 'sixteen' 'five'}}">
7777
<label>{{t 'Expires on'}}</label>
78-
{{widgets/forms/date-picker type="text" inputId='end_date' value=data.validTillDate rangePosition='end'}}
78+
{{widgets/forms/date-picker type="text" name='end_date' value=data.validTillDate rangePosition='end'}}
7979
<div class="ui hidden divider"></div>
80-
{{widgets/forms/time-picker type="text" inputId='end_time' value=data.validTillTime rangePosition='end'}}
80+
{{widgets/forms/time-picker type="text" name='end_time' value=data.validTillTime}}
8181
</div>
8282
</div>
8383
{{/if}}

app/templates/components/widgets/forms/date-picker.hbs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
12
{{#if icon}}
23
<i class="calendar icon"></i>
34
{{/if}}

0 commit comments

Comments
 (0)