File size: 5,321 Bytes
a6fbb8d
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
import joi from 'joi';

export class userBaseValidation {
    static createValidation = {
        body: joi.object().required().keys({
            name: joi.string().empty().required().messages({
                "string.base": "please enter a valid name",
                "any.required": "name is required",
                "string.empty": "name can not be empty",
            }),
            email: joi.string().required().email({ minDomainSegments: 2, tlds: { allow: ['com', 'net', 'org', 'eg', 'io'] } }).empty().messages({
                "string.email": "please enter a valid email",
                "any.required": "email must be entered",
                "string.empty": "email can not be empty",
            }),
            password: joi.string().empty().min(8).required().messages({
                "string.base": "please enter a valid password",
                "any.required": "password must be entered",
                "string.empty": "password cannot be empty",
                "string.min": "password must be at least 8 characters"
            }),
            confirmPassword: joi.string().empty().min(8).required().messages({
                "string.base": "please enter a valid password",
                "any.required": "password must be entered",
                "string.empty": "password cannot be empty",
                "string.min": "password must be at least 8 characters"
            }),
            image: joi.object().optional().keys({
                url: joi.string().optional().messages({
                    "string.base": "please enter a valid url",
                }),
                public_id: joi.string().optional().messages({
                    "string.base": "please enter a valid public_id",
                })
            }),
            gender: joi.string().empty().required().messages({
                "string.base": "please enter a valid gender",
                "any.required": "gender must be entered",
                "string.empty": "gender cannot be empty",
            }),
            height: joi.number().empty().required().messages({
                "number.base": "please enter a valid height number",
                "any.required": "height must be entered",
                "number.empty": "height cannot be empty",
            }),
            weight: joi.number().empty().required().messages({
                "number.base": "please enter a valid weight number",
                "any.required": "weight must be entered",
                "number.empty": "weight cannot be empty",
            }),
            fitness_level: joi.string().empty().required().messages({
                "string.base": "please enter a valid fitness_level",
                "any.required": "fitness_level must be entered",
                "string.empty": "fitness_level cannot be empty",
            }),
            preferences: joi.object().optional().keys({
                fitness_goal: joi.string().empty().required().messages({
                    "string.base": "please enter a valid fitness_goal",
                    "any.required": "fitness_goal must be entered",
                    "string.empty": "fitness_goal cannot be empty",
                }),
                target_weight: joi.number().empty().required().messages({
                    "number.base": "please enter a valid target_weight number",
                    "any.required": "target_weight must be entered",
                    "number.empty": "target_weight cannot be empty",
                }),
                workout_frequency: joi.number().empty().required().messages({
                    "number.base": "please enter a valid workout_frequency number",
                    "any.required": "workout_frequency must be entered",
                    "number.empty": "workout_frequency cannot be empty",
                }),
                preferred_days: joi.array().empty().required().items(joi.string().empty().required().messages({
                    "string.base": "please enter a valid preferred_days",
                    "any.required": "preferred_days must be entered",
                    "string.empty": "preferred_days cannot be empty",
                })),
                workout_place: joi.string().empty().required().messages({
                    "string.base": "please enter a valid workout_place",
                    "any.required": "workout_place must be entered",
                    "string.empty": "workout_place cannot be empty",
                }),
                preferred_equipment: joi.array().empty().required().items(joi.string().empty().required().messages({
                    "string.base": "please enter a valid preferred_equipment",
                    "any.required": "preferred_equipment must be entered",
                    "string.empty": "preferred_equipment cannot be empty",
                }))
            }),
            injuries: joi.array().empty().required().items(joi.string().empty().required().messages({
                "string.base": "please enter a valid injuries",
                "any.required": "injuries must be entered",
                "string.empty": "injuries cannot be empty",
            })),
            dob: joi.date().empty().optional().messages({
                "date.base": "please enter a valid date",
            })
        })
    }
}