
use strict;
use warnings;

package RT::Action::SLA;

use base qw(RT::Extension::SLA RT::Action);

=head1 NAME

RT::Action::SLA - base class for all actions in the extension

=head1 DESCRIPTION

It's not a real action, but container for subclassing which provide
help methods for other actions.

=head1 METHODS

=head2 SetDateField NAME VALUE

Sets specified ticket's date field to the value, doesn't update
if field is set already. VALUE is unix time.

=cut

sub SetDateField {
    my $self = shift;
    my ($type, $value) = (@_);

    my $ticket = $self->TicketObj;

    my $method = $type .'Obj';
    if ( defined $value ) {
        return 1 if $ticket->$method->Unix == $value;
    } else {
        return 1 if $ticket->$method->Unix <= 0;
    }

    my $date = RT::Date->new( $RT::SystemUser );
    $date->Set( Format => 'unix', Value => $value );

    $method = 'Set'. $type;
    my ($status, $msg) = $ticket->$method( $date->ISO );
    unless ( $status ) {
        $RT::Logger->error("Couldn't set $type date: $msg");
        return 0;
    }

    return 1;
}

1;
