1
1
import { z } from 'zod'
2
2
3
+ const noSpecialCharAndLengthValidaton = (
4
+ minLength : number ,
5
+ maxLength : number
6
+ ) : z . ZodString =>
7
+ z
8
+ . string ( )
9
+ . min ( minLength , {
10
+ message : `Minimum ${ minLength } karakter uzunluğunda olmalıdır` ,
11
+ } )
12
+ . max ( maxLength , {
13
+ message : `Maksimum ${ maxLength } karakter uzunluğunda olabilir` ,
14
+ } )
15
+ . regex ( / ^ [ a - z A - Z ğ ü ş ı ö ç Ğ Ü Ş İ Ö Ç \s ] * $ / , { message : 'Özel karakter içeremez' } )
16
+
17
+ const requiredFieldValidation = ( ) : z . ZodString =>
18
+ z . string ( ) . min ( 1 , { message : `Bu alan zorunludur` } )
19
+
3
20
const phoneNumberSchema = z . object ( {
4
21
countryCode : z
5
22
. string ( )
6
23
. min ( 1 , { message : 'Bir ülke kodu seçilmeli' } )
7
24
. regex ( / ^ \d + $ / , { message : 'Ülke kodu sadece rakamlardan oluşmalıdır' } ) ,
8
25
lineNumber : z
9
26
. string ( )
10
- . min ( 1 , { message : 'Bir numara girmelisin' } )
27
+ . min ( 10 , { message : 'Lütfen geçerli bir telefon numarası girin' } )
28
+ . max ( 10 , { message : 'Lütfen geçerli bir telefon numarası girin' } )
11
29
. regex ( / ^ \d + $ / , {
12
30
message : 'Telefon numarası sadece rakamlardan oluşmalıdır' ,
13
31
} ) ,
14
32
} )
15
33
16
34
const formSchema = z . object ( {
17
- applicantFirstName : z
18
- . string ( )
19
- . min ( 2 , { message : 'Minimum 2 karakter uzunluğunda olmalıdır' } )
20
- . max ( 100 , { message : 'Maksimum 100 karakter uzunluğunda olabilir' } )
21
- . regex ( / ^ [ a - z A - Z ğ ü ş ı ö ç Ğ Ü Ş İ Ö Ç \s ] * $ / , { message : 'Özel karakter içeremez' } )
22
- . optional ( ) ,
23
- applicantLastName : z
24
- . string ( )
25
- . min ( 2 , { message : 'Minimum 2 karakter uzunluğunda olmalıdır' } )
26
- . max ( 100 , { message : 'Maksimum 100 karakter uzunluğunda olabilir' } )
27
- . regex ( / ^ [ a - z A - Z ğ ü ş ı ö ç Ğ Ü Ş İ Ö Ç \s ] * $ / , { message : 'Özel karakter içeremez' } )
28
- . optional ( ) ,
35
+ applicantFirstName : noSpecialCharAndLengthValidaton ( 2 , 100 ) . optional ( ) ,
36
+ applicantLastName : noSpecialCharAndLengthValidaton ( 2 , 100 ) . optional ( ) ,
29
37
applicantPhoneNumber : phoneNumberSchema . optional ( ) ,
30
- firstName : z
31
- . string ( )
32
- . min ( 2 , { message : 'Minimum 2 karakter uzunluğunda olmalıdır' } )
33
- . max ( 100 , { message : 'Maksimum 100 karakter uzunluğunda olabilir' } )
34
- . regex ( / ^ [ a - z A - Z ğ ü ş ı ö ç Ğ Ü Ş İ Ö Ç \s ] * $ / , { message : 'Özel karakter içeremez' } ) ,
35
- lastName : z
36
- . string ( )
37
- . min ( 2 , { message : 'Minimum 2 karakter uzunluğunda olmalıdır' } )
38
- . max ( 100 , { message : 'Maksimum 100 karakter uzunluğunda olabilir' } )
39
- . regex ( / ^ [ a - z A - Z ğ ü ş ı ö ç Ğ Ü Ş İ Ö Ç \s ] * $ / , { message : 'Özel karakter içeremez' } ) ,
38
+ firstName : noSpecialCharAndLengthValidaton ( 2 , 100 ) ,
39
+ lastName : noSpecialCharAndLengthValidaton ( 2 , 100 ) ,
40
40
phoneNumber : phoneNumberSchema ,
41
- sourceCity : z
42
- . string ( )
43
- . min ( 1 , { message : 'Bir şehir seçmelisin' } )
44
- . max ( 100 , { message : 'Maksimum 100 karakter uzunluğunda olabilir' } )
45
- . regex ( / ^ [ a - z A - Z ğ ü ş ı ö ç Ğ Ü Ş İ Ö Ç \s ] * $ / , { message : 'Özel karakter içeremez' } ) ,
46
- sourceDistrict : z
47
- . string ( )
48
- . min ( 1 , { message : 'Bir ilçe seçmelisin' } )
49
- . max ( 100 , { message : 'Maksimum 100 karakter uzunluğunda olabilir' } )
50
- . regex ( / ^ [ a - z A - Z ğ ü ş ı ö ç Ğ Ü Ş İ Ö Ç \s ] * $ / , { message : 'Özel karakter içeremez' } ) ,
41
+ sourceCity : requiredFieldValidation ( ) ,
42
+ sourceDistrict : requiredFieldValidation ( ) ,
51
43
address : z
52
44
. string ( )
53
45
. min ( 20 , { message : 'Minimum 20 karakter uzunluğunda olmalıdır' } )
@@ -56,16 +48,8 @@ const formSchema = z.object({
56
48
. number ( { message : 'Koltuk sayısı belirtmelisin' } )
57
49
. positive ( { message : 'Pozitif bir sayı olmalıdır' } )
58
50
. max ( 999 , { message : 'Maksimum 3 haneli bir sayı olmalıdır' } ) ,
59
- targetCity : z
60
- . string ( )
61
- . min ( 1 , { message : 'Bir şehir seçmelisin' } )
62
- . max ( 100 , { message : 'Maksimum 100 karakter uzunluğunda olabilir' } )
63
- . regex ( / ^ [ a - z A - Z ğ ü ş ı ö ç Ğ Ü Ş İ Ö Ç \s ] * $ / , { message : 'Özel karakter içeremez' } ) ,
64
- targetDistrict : z
65
- . string ( )
66
- . min ( 1 , { message : 'Bir ilçe seçmelisin' } )
67
- . max ( 100 , { message : 'Maksimum 100 karakter uzunluğunda olabilir' } )
68
- . regex ( / ^ [ a - z A - Z ğ ü ş ı ö ç Ğ Ü Ş İ Ö Ç \s ] * $ / , { message : 'Özel karakter içeremez' } ) ,
51
+ targetCity : requiredFieldValidation ( ) ,
52
+ targetDistrict : requiredFieldValidation ( ) ,
69
53
} )
70
54
71
55
export { formSchema }
0 commit comments