@@ -6,6 +6,28 @@ class ProfileCreation::Contract::Create < Dry::Validation::Contract
66 required ( :locale ) . filled ( :string , included_in? : %w[ pl en ] )
77 required ( :first_name ) . filled ( :string )
88 required ( :last_name ) . filled ( :string )
9+ required ( :email ) . filled ( :string , format? : URI ::MailTo ::EMAIL_REGEXP )
10+ required ( :gender ) . filled ( :string , included_in? : %w[ male female ] )
11+ required ( :birth_place ) . filled ( :string )
12+ required ( :birth_date ) . filled ( :date )
13+ required ( :city ) . filled ( :string )
14+ required ( :postal_code ) . filled ( :string )
15+ required ( :main_address ) . filled ( :string )
16+ optional ( :optional_address ) . filled ( :string )
17+ required ( :phone ) . filled ( :string )
18+ required ( :acomplished_courses ) . filled ( :array ) . each ( :string ) . value ( included_in? : %w[ basic_kw basic basic_without_second second second_winter cave cave_kw ski list blank instructors other_club ] )
19+ required ( :recommended_by ) . filled ( :array ) . each ( :string ) . value ( included_in? : %w[ google facebook friends festival poster course ] )
20+ required ( :sections ) . filled ( :array ) . each ( :string ) . value ( included_in? : %w[ snw sww stj gtw kts ] )
21+ required ( :positions ) . filled ( :array ) . each ( :string ) . value ( included_in? : %w[ candidate regular honorable_kw honorable_pza management senior instructor canceled stj released retired ] )
22+ required ( :photo ) . filled ( :string )
23+ required ( :course_cert ) . filled ( :string )
24+ required ( :plastic ) . filled ( :bool )
25+ required ( :main_discussion_group ) . filled ( :bool )
26+ required ( :terms_of_service ) . value ( :true? )
927 end
1028 end
29+
30+ rule ( profile : :email ) do
31+ key . failure ( I18n . t ( 'errors.email.taken' ) ) if Db ::Profile . exists? ( email : value )
32+ end
1133end
0 commit comments