#------------------------------------------------------------
# Copyright (C) 2007 RoyaltyShare, Inc.   All Rights Reserved
# $Id$
#------------------------------------------------------------

package Validate::Rule::Constraint::Territories;
use strict;

use lib '/app/tools/common/lib';
use Common::Log;
use Common::RSApp;
use Common::Assert;

use lib '/app/tools/metadata/lib';
use Validate::Util;

use Validate::Rule::Constraint::Code;
use base 'Validate::Rule::Constraint::Code';

use vars qw($AUTOLOAD);

sub ok {
    my $self = shift;
    my ( $target, %args ) = @_;
    my $res = $self->SUPER::ok(@_);

    if ( !defined($res) || $res != Validate::kStatusOK ) {
        my @invalid = Validate::Util::invalid_territory_list($target);
        $self->{_supplimental_message} = join( ", ", @invalid );
    }

    return $res;
}

sub message {
    my $self    = shift;
    my $message = shift;

    if ($message) {
        $self->{_message} = $message;
    }

    my $out = $self->{_message};
    $out .= " (" . $self->{_supplimental_message} . ")"
      if ( $self->{_supplimental_message} );

    return $out;
}

1;
