Skip to content

Commit 527614f

Browse files
authored
AYS-504 | Phone Format Validation (#79)
1 parent 01cc57f commit 527614f

File tree

2 files changed

+28
-44
lines changed

2 files changed

+28
-44
lines changed

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
"version": "1.1.0 MVP",
44
"private": true,
55
"scripts": {
6-
"dev": "next dev",
6+
"dev": "next dev -p 5173",
77
"build": "next build",
88
"start": "next start",
99
"format": "prettier --check './**/*.{js,jsx,ts,tsx,css,md,json}' --config ./.prettierrc",

src/components/EmergencyForm/schema/formSchema.ts

Lines changed: 27 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -1,53 +1,45 @@
11
import { z } from 'zod'
22

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-zA-ZğüşıöçĞÜŞİÖÇ\s]*$/, { message: 'Özel karakter içeremez' })
16+
17+
const requiredFieldValidation = (): z.ZodString =>
18+
z.string().min(1, { message: `Bu alan zorunludur` })
19+
320
const phoneNumberSchema = z.object({
421
countryCode: z
522
.string()
623
.min(1, { message: 'Bir ülke kodu seçilmeli' })
724
.regex(/^\d+$/, { message: 'Ülke kodu sadece rakamlardan oluşmalıdır' }),
825
lineNumber: z
926
.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' })
1129
.regex(/^\d+$/, {
1230
message: 'Telefon numarası sadece rakamlardan oluşmalıdır',
1331
}),
1432
})
1533

1634
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-zA-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-zA-ZğüşıöçĞÜŞİÖÇ\s]*$/, { message: 'Özel karakter içeremez' })
28-
.optional(),
35+
applicantFirstName: noSpecialCharAndLengthValidaton(2, 100).optional(),
36+
applicantLastName: noSpecialCharAndLengthValidaton(2, 100).optional(),
2937
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-zA-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-zA-ZğüşıöçĞÜŞİÖÇ\s]*$/, { message: 'Özel karakter içeremez' }),
38+
firstName: noSpecialCharAndLengthValidaton(2, 100),
39+
lastName: noSpecialCharAndLengthValidaton(2, 100),
4040
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-zA-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-zA-ZğüşıöçĞÜŞİÖÇ\s]*$/, { message: 'Özel karakter içeremez' }),
41+
sourceCity: requiredFieldValidation(),
42+
sourceDistrict: requiredFieldValidation(),
5143
address: z
5244
.string()
5345
.min(20, { message: 'Minimum 20 karakter uzunluğunda olmalıdır' })
@@ -56,16 +48,8 @@ const formSchema = z.object({
5648
.number({ message: 'Koltuk sayısı belirtmelisin' })
5749
.positive({ message: 'Pozitif bir sayı olmalıdır' })
5850
.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-zA-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-zA-ZğüşıöçĞÜŞİÖÇ\s]*$/, { message: 'Özel karakter içeremez' }),
51+
targetCity: requiredFieldValidation(),
52+
targetDistrict: requiredFieldValidation(),
6953
})
7054

7155
export { formSchema }

0 commit comments

Comments
 (0)