package Ġbr . com . lu an 2 . lg util sk . utils čĊč Ċ /** čĊ Ġ* ĠCreated Ġby Ġl uan Ġsil va Ġon Ġ 1 9 / 0 4 / 1 8 . čĊ Ġ*/ čĊčĊ Ġval Ġpes o CP F Ġ= Ġint ArrayOf ( 1 1 , Ġ 1 0 , Ġ 9 , Ġ 8 , Ġ 7 , Ġ 6 , Ġ 5 , Ġ 4 , Ġ 3 , Ġ 2 ) čĊ Ġval Ġpes o CN PJ Ġ= Ġint ArrayOf ( 6 , Ġ 5 , Ġ 4 , Ġ 3 , Ġ 2 , Ġ 9 , Ġ 8 , Ġ 7 , Ġ 6 , Ġ 5 , Ġ 4 , Ġ 3 , Ġ 2 ) čĊč Ċ enum Ġclass ĠValidate Type { čĊĠĠĠ ĠC PF , čĊĠĠĠ ĠE MAIL , čĊĠĠĠ ĠNUM ERIC , čĊĠĠĠ ĠC RED IT _ CARD , čĊĠĠĠ ĠPH ONE , čĊĠĠĠ ĠEMPTY , čĊĠĠĠ ĠCN PJ č Ċ } č Ċ fun ĠString . isValid (): ĠBoolean Ġ{ čĊĠĠĠ Ġvar Ġc np j _ cpf Ġ= Ġthis čĊčĊĠĠĠ Ġif Ġ( c np j _ cpf Ġ== Ġ" NA ") Ġ{ čĊĠĠĠĠĠĠĠ Ġreturn Ġtrue čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġc np j _ cpf Ġ= Ġc np j _ cpf . replace ("\\ D +". to Regex (), Ġ"") čĊčĊĠĠĠ Ġif Ġ( c np j _ cpf . length Ġ== Ġ 1 1 ) Ġ{ čĊĠĠĠĠĠĠĠ Ġreturn Ġc np j _ cpf . isValid CP F () čĊĠĠĠ Ġ} Ġelse Ġif Ġ( c np j _ cpf . length Ġ== Ġ 1 4 ) Ġ{ čĊĠĠĠĠĠĠĠ Ġreturn Ġc np j _ cpf . isValid CN PJ () čĊĠĠĠ Ġ} čĊĠĠĠ Ġreturn Ġfalse č Ċ } čĊč Ċ private Ġfun ĠString . isValid CP F (): ĠBoolean Ġ{ čĊĠĠĠ Ġif Ġ( this Ġ== Ġ" 0 0 0 0 0 0 0 0 0 0 0 " Ġ|| Ġthis Ġ== Ġ" 1 1 1 1 1 1 1 1 1 1 1 " Ġ|| čĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis Ġ== Ġ" 2 2 2 2 2 2 2 2 2 2 2 " Ġ|| Ġthis Ġ== Ġ" 3 3 3 3 3 3 3 3 3 3 3 " Ġ|| čĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis Ġ== Ġ" 4 4 4 4 4 4 4 4 4 4 4 " Ġ|| Ġthis Ġ== Ġ" 5 5 5 5 5 5 5 5 5 5 5 " Ġ|| čĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis Ġ== Ġ" 6 6 6 6 6 6 6 6 6 6 6 " Ġ|| Ġthis Ġ== Ġ" 7 7 7 7 7 7 7 7 7 7 7 " Ġ|| čĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis Ġ== Ġ" 8 8 8 8 8 8 8 8 8 8 8 " Ġ|| Ġthis Ġ== Ġ" 9 9 9 9 9 9 9 9 9 9 9 " Ġ|| čĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . length Ġ!= Ġ 1 1 ) čĊĠĠĠĠĠĠĠ Ġreturn Ġfalse čĊčĊĠĠĠ Ġval Ġdig ito 1 Ġ= Ġcalc ular Dig ito ( this . substring ( 0 , Ġ 9 ), Ġpes o CP F ) čĊĠĠĠ Ġval Ġdig ito 2 Ġ= Ġcalc ular Dig ito ( this . substring ( 0 , Ġ 9 ) Ġ+ Ġdig ito 1 , Ġpes o CP F ) čĊĠĠĠ Ġreturn Ġthis Ġ== Ġthis . substring ( 0 , Ġ 9 ) Ġ+ Ġdig ito 1 . toString () Ġ+ Ġdig ito 2 . toString () č Ċ } čĊč Ċ private Ġfun ĠString . isValid CN PJ (): ĠBoolean Ġ{ čĊĠĠĠ Ġval Ġc np j Ġ= Ġthis čĊĠĠĠ Ġif Ġ( c np j Ġ== Ġ" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 " Ġ|| Ġc np j Ġ== Ġ" 1 1 1 1 1 1 1 1 1 1 1 1 1 1 " Ġ|| čĊĠĠĠĠĠĠĠĠĠĠĠ Ġc np j Ġ== Ġ" 2 2 2 2 2 2 2 2 2 2 2 2 2 2 " Ġ|| Ġc np j Ġ== Ġ" 3 3 3 3 3 3 3 3 3 3 3 3 3 3 " Ġ|| čĊĠĠĠĠĠĠĠĠĠĠĠ Ġc np j Ġ== Ġ" 4 4 4 4 4 4 4 4 4 4 4 4 4 4 " Ġ|| Ġc np j Ġ== Ġ" 5 5 5 5 5 5 5 5 5 5 5 5 5 5 " Ġ|| čĊĠĠĠĠĠĠĠĠĠĠĠ Ġc np j Ġ== Ġ" 6 6 6 6 6 6 6 6 6 6 6 6 6 6 " Ġ|| Ġc np j Ġ== Ġ" 7 7 7 7 7 7 7 7 7 7 7 7 7 7 " Ġ|| čĊĠĠĠĠĠĠĠĠĠĠĠ Ġc np j Ġ== Ġ" 8 8 8 8 8 8 8 8 8 8 8 8 8 8 " Ġ|| Ġc np j Ġ== Ġ" 9 9 9 9 9 9 9 9 9 9 9 9 9 9 " Ġ|| čĊĠĠĠĠĠĠĠĠĠĠĠ Ġc np j . length Ġ!= Ġ 1 4 ) čĊĠĠĠĠĠĠĠ Ġreturn Ġfalse čĊčĊĠĠĠ Ġval Ġdig ito 1 Ġ= Ġcalc ular Dig ito ( c np j . substring ( 0 , Ġ 1 2 ), Ġpes o CN PJ ) čĊĠĠĠ Ġval Ġdig ito 2 Ġ= Ġcalc ular Dig ito ( c np j . substring ( 0 , Ġ 1 2 ) Ġ+ Ġdig ito 1 , Ġpes o CN PJ ) čĊĠĠĠ Ġreturn Ġc np j Ġ== Ġc np j . substring ( 0 , Ġ 1 2 ) Ġ+ Ġdig ito 1 . toString () Ġ+ Ġdig ito 2 . toString () č Ċ } čĊč Ċ private Ġfun Ġcalc ular Dig ito ( str : ĠString , Ġpes o : ĠInt Array ): ĠInt Ġ{ čĊĠĠĠ Ġvar Ġsom a Ġ= Ġ 0 čĊĠĠĠ Ġvar Ġind ice Ġ= Ġstr . length Ġ- Ġ 1 čĊĠĠĠ Ġvar Ġdig ito : ĠInt čĊĠĠĠ Ġwhile Ġ( ind ice Ġ>= Ġ 0 ) Ġ{ čĊĠĠĠĠĠĠĠ Ġdig ito Ġ= ĠInteger . parseInt ( str . substring ( ind ice , Ġind ice Ġ+ Ġ 1 )) čĊĠĠĠĠĠĠĠ Ġsom a Ġ+= Ġdig ito Ġ* Ġpes o [ pes o . size Ġ- Ġstr . length Ġ+ Ġind ice ] čĊĠĠĠĠĠĠĠ Ġind ice -- čĊĠĠĠ Ġ} čĊĠĠĠ Ġsom a Ġ= Ġ 1 1 Ġ- Ġsom a Ġ% Ġ 1 1 čĊĠĠĠ Ġreturn Ġif Ġ( s oma Ġ> Ġ 9 ) Ġ 0 Ġelse Ġsom a č Ċ } čĊč Ċ private Ġfun ĠString . is Id card (): ĠBoolean Ġ{ čĊĠĠĠ Ġval Ġp 1 8 Ġ= Ġ"^ [ 1 - 9 ]\\ d { 5 }( 1 8 | 1 9 | ([ 2 3 ]\\ d )) \\ d { 2 } (( 0 [ 1 - 9 ]) |( 1 0 | 1 1 | 1 2 )) (([ 0 - 2 ][ 1 - 9 ]) | 1 0 | 2 0 | 3 0 | 3 1 )\\ d { 3 }[ 0 - 9 Xx ]\ $ ". to Regex () čĊĠĠĠ Ġval Ġp 1 5 Ġ= Ġ"^ [ 1 - 9 ]\\ d { 5 }\\ d { 2 } (( 0 [ 1 - 9 ]) |( 1 0 | 1 1 | 1 2 )) (([ 0 - 2 ][ 1 - 9 ]) | 1 0 | 2 0 | 3 0 | 3 1 )\\ d { 2 }[ 0 - 9 Xx ]\ $ ". to Regex () čĊĠĠĠ Ġreturn Ġmatches ( p 1 8 ) Ġ|| Ġmatches ( p 1 5 ) č Ċ } čĊč Ċ private Ġfun ĠString . is Phone (): ĠBoolean Ġ{ čĊĠĠĠ Ġval Ġp Ġ= Ġ"^ 1 ([ 3 4 5 7 8 ]) \\ d { 9 }\ $ ". to Regex () čĊĠĠĠ Ġreturn Ġmatches ( p ) č Ċ } čĊč Ċ private Ġfun ĠString . is Email (): ĠBoolean Ġ{ čĊĠĠĠ Ġval Ġp Ġ= Ġ"^ (\\ w )+( \\. \\ w + )* @( \\ w )+ (( \\. \\ w + )+ )\ $ ". to Regex () čĊĠĠĠ Ġreturn Ġmatches ( p ) č Ċ } čĊč Ċ private Ġfun ĠString . is Numeric (): ĠBoolean Ġ{ čĊĠĠĠ Ġval Ġp Ġ= Ġ"^ [ 0 - 9 ]+ $ ". to Regex () čĊĠĠĠ Ġreturn Ġmatches ( p ) č Ċ } čĊčĊč Ċ fun ĠString . validate Field ( type : ĠValidate Type ){ čĊĠĠĠ Ġwhen ( type ){ čĊĠĠĠĠĠĠĠ ĠValidate Type . CN PJ Ġ-> ĠisValid CN PJ () čĊĠĠĠĠĠĠĠ ĠValidate Type . CP F Ġ-> ĠisValid CP F () čĊĠĠĠĠĠĠĠ ĠValidate Type . EMAIL Ġ-> Ġis Email () čĊĠĠĠĠĠĠĠ ĠValidate Type . NUMERIC Ġ-> Ġis Numeric () čĊĠĠĠĠĠĠĠ ĠValidate Type . PHONE Ġ-> Ġis Phone () čĊĠĠĠĠĠĠĠ ĠValidate Type . CRED IT _ CARD Ġ-> Ġis Id card () čĊĠĠĠĠĠĠĠ ĠValidate Type . EMPTY Ġ-> ĠisEmpty () čĊĠĠĠĠĠĠĠ Ġelse Ġ-> Ġreturn čĊĠĠĠ Ġ} č Ċ } čĊ