package Reporter::Validation;
# called as $app->model->validate( <form_name> => $params ); eg search_form => $params
use Moo;
has search_form => (
is => 'lazy',
builder => sub { Reporter::Validation::SearchForm->new } );
has report_form => (
is => 'lazy',
builder => sub { Reporter::Validation::ReportForm ->new } );
1;
package Reporter::Validation::SearchForm;
use HTML::FormHandler::Moose;
extends 'HTML::FormHandler';
use Moose::Util::TypeConstraints;
has_field lab_number => (
type => 'Text',
apply => [ 'LabNumFormat' ],
);
subtype 'LabNumFormat'
=> as 'Str'
=> where { $_ =~ m!\d+/\d{2}! }
=> message { 'lab number format incorrect: require nnn/yy' };
no HTML::FormHandler::Moose;
1;
package Reporter::Validation::ReportForm;
use HTML::FormHandler::Moose;
extends 'HTML::FormHandler';
use Moose::Util::TypeConstraints;
has_field diagnosis_id => (
type => 'Integer',
);
no HTML::FormHandler::Moose;
1;