1
+ const validatePAN = ( pan ) => {
2
+ const panRegex = / ^ [ A - Z ] { 5 } [ 0 - 9 ] { 4 } [ A - Z ] { 1 } $ / ;
3
+ return panRegex . test ( pan ) ;
4
+ } ;
5
+
6
+ const validateAadhaar = ( aadhaar ) => {
7
+ const aadhaarRegex = / ^ \d { 12 } $ / ;
8
+ return aadhaarRegex . test ( aadhaar ) ;
9
+ } ;
10
+
11
+ const validateGSTIN = ( gstin ) => {
12
+ const gstinRegex = / ^ [ 0 - 9 ] { 2 } [ A - Z ] { 5 } [ 0 - 9 ] { 4 } [ A - Z ] { 1 } [ 1 - 9 A - Z ] { 1 } Z [ 0 - 9 A - Z ] { 1 } $ / ;
13
+ return gstinRegex . test ( gstin ) ;
14
+ } ;
15
+
16
+ const validateUDYAM = ( udyam ) => {
17
+ const udyamRegex = / ^ U D Y A M - [ A - Z ] { 2 } - \d { 2 } - \d { 7 } $ / ;
18
+ return udyamRegex . test ( udyam ) ;
19
+ } ;
20
+
<
F438
code> 21
+ const validateAge = ( dob ) => {
22
+ const today = new Date ( ) ;
23
+ const birthDate = new Date ( dob ) ;
24
+ let age = today . getFullYear ( ) - birthDate . getFullYear ( ) ;
25
+ const monthDiff = today . getMonth ( ) - birthDate . getMonth ( ) ;
26
+
27
+ if ( monthDiff < 0 || ( monthDiff === 0 && today . getDate ( ) < birthDate . getDate ( ) ) ) {
28
+ age -- ;
29
+ }
30
+
31
+ return age >= 18 ;
32
+ } ;
33
+
34
+ exports . validateUserData = ( userData ) => {
35
+ const { name, dob, pan, aadhaar, gstin, udyam } = userData ;
36
+
37
+ if ( ! name || name . trim ( ) . length < 2 ) {
38
+ return 'Name must be at least 2 characters long' ;
39
+ }
40
+
41
+ if ( ! dob || ! validateAge ( dob ) ) {
42
+ return 'User must be at least 18 years old' ;
43
+ }
44
+
45
+ if ( ! pan || ! validatePAN ( pan ) ) {
46
+ return 'Invalid PAN format. Should be like ABCDE1234F' ;
47
+ }
48
+
49
+ if ( ! aadhaar || ! validateAadhaar ( aadhaar ) ) {
50
+ return 'Invalid Aadhaar format. Should be 12 digits' ;
51
+ }
52
+
53
+ if ( ! gstin || ! validateGSTIN ( gstin ) ) {
54
+ return 'Invalid GSTIN format. Should be like 27AAPFU0939F1ZV' ;
55
+ }
56
+
57
+ if ( ! udyam || ! validateUDYAM ( udyam ) ) {
58
+ return 'Invalid UDYAM format. Should be like UDYAM-MH-02-0000001' ;
59
+ }
60
+
61
+ return null ;
62
+ } ;
63
+
64
+ exports . validateLoanData = ( loanData ) => {
65
+ const { amount, interestRate, tenure, disbursementDate } = loanData ;
66
+
67
+ if ( ! amount || amount <= 0 ) {
68
+ return 'Loan amount must be greater than 0' ;
69
+ }
70
+
71
+ if ( ! interestRate || interestRate <= 0 || interestRate > 100 ) {
72
+ return 'Interest rate must be between 0 and 100' ;
73
+ }
74
+
75
+ if ( ! tenure || tenure <= 0 ) {
76
+ return 'Tenure must be greater than 0' ;
77
+ }
78
+
79
+ if ( ! disbursementDate ) {
80
+ return 'Disbursement date is required' ;
81
+ }
82
+
83
+ const disbursementDateTime = new Date ( disbursementDate ) . getTime ( ) ;
84
+ const today = new Date ( ) . getTime ( ) ;
85
+
86
+ if ( isNaN ( disbursementDateTime ) || disbursementDateTime < today ) {
87
+ return 'Disbursement date must be today or a future date' ;
88
+ }
89
+
90
+ return null ;
91
+ } ;
92
+
93
+ exports . validateObjectId = ( id ) => {
94
+ const objectIdRegex = / ^ [ 0 - 9 a - f A - F ] { 24 } $ / ;
95
+ return objectIdRegex . test ( id ) ;
96
+ } ;
0 commit comments