package RequestForm::Validate::Ajax; use Dancer2; use LIMS::Local::Utils; use RequestForm::Class; # provides Moo, Local::MooX::Types & LIMS::Local::Debug::p prefix '/ajax'; # nhs number ajax validation ('get' returns a string, 'post' returns json): any [ qw(get post) ] => '/validate_nhs_number' => sub { my $var = params->{nhs_number}; # p $var; my $is_valid = LIMS::Local::Utils::check_nhsno($var) ? 'OK' : 'invalid'; # web form jquery $.ajax function sends a 'post' request, alternative is $.get if (request->is_post) { my $json = to_json({ result => $is_valid }); return $json; } else { return $is_valid } }; # bsn.AutoSuggest.jQuery method, returns json: get '/autosuggest_location' => sub { my $params = params; return unless $params->{ref_src} && length $params->{ref_src} >= 3; my $results = _get_referral_sources($params); # p $data; # AoH my $json = to_json({ results => $results }); # p $json; return $json; }; sub _get_referral_sources { my $params = shift; p $params; my $str = $params->{ref_src}; my $ctr = $params->{centre}; my $db = RequestForm::DB->new(dbname => $ctr); my $results = $db->get_referral_sources($str); # p $sources; # manipulate $results to provide keys for AJAX caller: my @data = map { { id => $_->{id}, value => $_->{display_name}, info => $_->{organisation_code}, } } @$results; return \@data; } 1;