package LIMS::Model::Validation; use base 'LIMS::Model::Base'; use strict; # ------------------------------------------------------------------------------ # checks that submitted form param belongs to record under edit: # 1st arg (col_name) needs to be arrayref if unique key is multi-col, sub validate_param_ownership { # warn 'here'; my $self = shift; my $args = shift; # $self->debug($args); # check all required args exist & put into array: my @required = map { $args->{$_} || die "value for \$args->{$_} is required"; } qw(col class data); my ($col_name, $class_name, $data) = @required; my %query; # if $col_name is arrayref: if ( ref $col_name eq 'ARRAY' ) { %query = map { $_ => $data->{$_}; } @$col_name; } else { %query = ( $col_name => $data->{$col_name} ); } # $self->debug(\%query); my $object_class = 'LIMS::DB::'.$class_name; #$self->set_rose_debug(1); my $o = $object_class->new(%query)->load(speculative => 1); #$self->set_rose_debug(0); $o || return 1; # warn $o->id . ' cmp ' . $data->{_record_id}; # param *is* in use, so check it belongs to current record id # return true only if param.id == data.param_id: return ( $o->id == $data->{_record_id} ); } # ------------------------------------------------------------------------------ sub has_storage_vialId { # just need to know if it exists: my ($self, $id) = @_; my $i = LIMS::DB::RequestStorage::Manager ->get_objects_count( query => [ vialId => $id ] ); return $i; # will be 1 or 0 } 1;