@@ -4,8 +4,14 @@ import { action, computed } from '@ember/object';
4
4
import { groupBy , orderBy } from 'lodash-es' ;
5
5
import { or } from '@ember/object/computed' ;
6
6
import { tracked } from '@glimmer/tracking' ;
7
- import { languageForms1 } from 'open-event-frontend/utils/dictionary/language-form-1' ;
8
- import { languageForms2 } from 'open-event-frontend/utils/dictionary/language-form-2' ;
7
+ import { nativeLanguage } from 'open-event-frontend/utils/dictionary/native-language' ;
8
+ import { fluentLanguage } from 'open-event-frontend/utils/dictionary/fluent-language' ;
9
+ import { genders } from 'open-event-frontend/utils/dictionary/genders' ;
10
+ import { ageGroups } from 'open-event-frontend/utils/dictionary/age-groups' ;
11
+ import { countries } from 'open-event-frontend/utils/dictionary/demography' ;
12
+ import { homeWikis } from 'open-event-frontend/utils/dictionary/home-wikis' ;
13
+ import { booleanComplex } from 'open-event-frontend/utils/dictionary/boolean_complex' ;
14
+ import { wikiScholarship } from 'open-event-frontend/utils/dictionary/wiki-scholarship' ;
9
15
10
16
@classic
11
17
export default class AttendeeList extends Component {
@@ -17,20 +23,24 @@ export default class AttendeeList extends Component {
17
23
return this . data . user ;
18
24
}
19
25
26
+ @tracked nativeLanguage = nativeLanguage ;
27
+ @tracked fluentLanguage = fluentLanguage ;
28
+ @tracked genders = genders ;
29
+
20
30
@computed ( 'data.attendees' )
21
31
get holders ( ) {
22
32
this . data . attendees . forEach ( attendee => {
23
33
if ( attendee . native_language ) {
24
- this . languageFormMapCodeToName ( attendee , 'native_language' , languageForms1 ) ;
34
+ this . languageFormMapCodeToName ( attendee , 'native_language' , this . nativeLanguage ) ;
25
35
}
26
36
if ( attendee . fluent_language ) {
27
- this . languageFormMapCodeToName ( attendee , 'fluent_language' , languageForms2 ) ;
37
+ this . languageFormMapCodeToName ( attendee , 'fluent_language' , this . fluentLanguage ) ;
28
38
}
29
39
if ( attendee . language_form_1 ) {
30
- this . languageFormMapCodeToName ( attendee , 'language_form_1' , languageForms1 ) ;
40
+ this . languageFormMapCodeToName ( attendee , 'language_form_1' , this . nativeLanguage ) ;
31
41
}
32
42
if ( attendee . language_form_2 ) {
33
- this . languageFormMapCodeToName ( attendee , 'language_form_2' , languageForms2 ) ;
43
+ this . languageFormMapCodeToName ( attendee , 'language_form_2' , this . fluentLanguage ) ;
34
44
}
35
45
if ( attendee . gender ) {
36
46
this . genderAddSpaces ( attendee ) ;
@@ -45,15 +55,66 @@ export default class AttendeeList extends Component {
45
55
possibleLanguages . forEach ( languageForm => {
46
56
languageFormList . forEach ( item => {
47
57
if ( item === languageForm . code ) {
58
+ languageForm . isChecked = true ;
48
59
languageFormMap . push ( languageForm . name ) ;
49
60
}
50
61
} ) ;
51
62
} ) ;
52
63
return attendee . set ( key . concat ( '_name_mapping' ) , languageFormMap . map ( select => select ) . join ( ', ' ) ) ;
53
64
}
54
65
66
+ @computed ( 'genders' )
67
+ get genders ( ) {
68
+ return orderBy ( this . genders , 'position' ) ;
69
+ }
70
+
71
+ @computed ( 'ageGroups' )
72
+ get ageGroups ( ) {
73
+ return orderBy ( ageGroups , 'position' ) ;
74
+ }
75
+
76
+ @computed ( 'countries' )
77
+ get countries ( ) {
78
+ return orderBy ( countries , 'name' ) ;
79
+ }
80
+
81
+ @computed ( 'nativeLanguage' )
82
+ get nativeLanguage ( ) {
83
+ return orderBy ( this . nativeLanguage , 'position' ) ;
84
+ }
85
+
86
+ @computed ( 'fluentLanguage' )
87
+ get fluentLanguage ( ) {
88
+ return orderBy ( this . fluentLanguage , 'position' ) ;
89
+ }
90
+
91
+ @computed ( 'homeWikis' )
92
+ get homeWikis ( ) {
93
+ return orderBy ( homeWikis , 'item' ) ;
94
+ }
95
+
96
+ @computed ( 'wikiScholarship' )
97
+ get wikiScholarship ( ) {
98
+ return orderBy ( wikiScholarship , 'position' ) ;
99
+ }
100
+
101
+ @computed ( 'booleanComplex' )
102
+ get booleanComplex ( ) {
103
+ return orderBy ( booleanComplex , 'position' ) ;
104
+ }
105
+
55
106
genderAddSpaces ( attendee ) {
56
- return attendee . set ( 'gender' . concat ( '_name_mapping' ) , attendee . gender . split ( ',' ) . join ( ', ' ) ) ;
107
+ const listMap = [ ] ;
108
+ const genderList = attendee . gender . split ( ',' ) ;
109
+ this . genders . forEach ( gender => {
110
+ genderList . forEach ( item => {
111
+ if ( item === gender . code || item === gender . name ) {
112
+ gender . isChecked = true ;
113
+ listMap . push ( gender . name ) ;
114
+ }
115
+ } ) ;
116
+ } ) ;
117
+ return attendee . set ( 'gender' . concat ( '_name_mapping' ) , listMap . join ( ', ' ) ) ;
57
118
}
58
119
59
120
@or ( 'event.isBillingInfoMandatory' , 'data.isBillingEnabled' )
@@ -64,12 +125,14 @@ export default class AttendeeList extends Component {
64
125
const current_locale = this . cookies . read ( 'current_locale' ) ;
65
126
const customFields = orderBy ( this . fields . toArray ( ) ?. map ( field => {
66
127
const { main_language } = field ;
128
+ field . nameConvert = field . name ;
129
+ if ( field . name === 'Consent of refund policy' ) {
130
+ field . nameConvert = 'I agree to the terms of the refund policy of the event.' ;
131
+ }
67
132
if ( ( main_language && main_language . split ( '-' ) [ 0 ] === current_locale ) || ! field . translations || ! field . translations . length ) {
68
133
field . transName = field . name ;
69
134
} else if ( field . translations ?. length ) {
70
-
71
135
const transName = field . translations . filter ( trans => trans . language_code . split ( '-' ) [ 0 ] === current_locale ) ;
72
-
73
136
if ( transName . length ) {
74
137
field . transName = transName [ 0 ] . name ;
75
138
} else {
@@ -90,9 +153,9 @@ export default class AttendeeList extends Component {
90
153
}
91
154
92
155
@action
93
- async saveHolder ( holder ) {
156
+ async saveHolder ( ) {
94
157
try {
95
- await holder . save ( ) ;
158
+ await this . holders . forEach ( holder => holder . save ( ) ) ;
96
159
await this . data . save ( ) ;
97
160
} catch ( error ) {
98
161
console . warn ( error ) ;
@@ -125,4 +188,14 @@ export default class AttendeeList extends Component {
125
188
console . warn ( error ) ;
126
189
}
127
190
}
191
+
192
+ @action
193
+ updateLanguageFormsSelection ( checked , changed , selectedOptions , holder , field ) {
194
+ holder . set ( field . fieldIdentifier , selectedOptions . map ( select => select . value ) . join ( ',' ) ) ;
195
+ }
196
+
197
+ @action
198
+ updateGendersSelection ( checked , changed , selectedOptions , holder , field ) {
199
+ holder . set ( field . fieldIdentifier , selectedOptions . map ( select => select . value ) . join ( ',' ) ) ;
200
+ }
128
201
}
0 commit comments