package RequestForm::Validate; use Data::FormValidator; use Data::FormValidator::Constraints qw(:closures); use Data::Dumper::Concise; use Moo; use LIMS::Local::Utils; sub validate { my $self = shift; my $vars = shift; my $defaults = _dfv_defaults(); my $dfv = Data::FormValidator->new({}, $defaults); my $dfv_profile = dfv_profile(); # DEBUG($dfv_profile); my $results = $dfv->check($vars, $dfv_profile); # DEBUG($results); return $results; } sub dfv_profile { my @required = qw( last_name first_name nhs_number gender location referrer day month year ); my @optional = qw( patient_number tb ); return { required => \@required, optional => \@optional, dependencies => { doi => 'tb', }, constraint_methods => { nhs_number => _check_nhs_number(), year => _check_date(), }, msgs => { constraints => { }, }, } } sub _dfv_defaults { return { missing_optional_valid => 1, filters => 'trim', # trims white space pre/post field param field_filters => { }, # use for forcing field formats eg foo => 'uc' msgs => { any_errors => 'dfv_errors', # default err__ invalid => 'INVALID', # default 'Invalid' missing => 'MISSING', # default 'Missing' format => '