The Perl and Raku Conference 2025: Greenville, South Carolina - June 27-29 Learn more

use strict;
use Log::Log4perl qw( get_logger );
use Workflow::Exception qw( persist_error );
use Workflow::Factory qw( FACTORY );
$App::Action::TicketCreate::VERSION = '1.06';
sub execute {
my ( $self, $wf ) = @_;
my $log = get_logger();
$log->debug( "Action '", $self->name, "' with class ",
"'", ref( $self ), "' executing..." );
my $context = $wf->context;
my @fields = qw( type subject description due_date creator );
foreach my $field ( @fields ) {
$self->param( $field, $context->param( $field ) );
$log->debug( "Value for '$field' : ", $self->param( $field ) );
}
my $creator = $self->param( 'creator' ) || $context->param( 'current_user' );
$log->debug( "Assigned creator as '$creator'" );
my $ticket = App::Ticket->new({
type => $self->param( 'type' ),
status => $wf->state,
subject => $self->param( 'subject' ),
description => $self->param( 'description' ),
creator => $creator,
due_date => $self->param( 'due_date' ),
last_update => $self->param( 'last_update' ),
});
$log->debug( "Created ticket object ok" );
eval { $ticket->create };
if ( $@ ) {
$log->error( $@ );
die $@;
}
$log->debug( "Stored ticket object ok" );
$context->param( ticket => $ticket );
$log->info( "Ticket created correctly with ID ", $ticket->id );
my $sql = q{
INSERT INTO workflow_ticket ( workflow_id, ticket_id )
VALUES ( ?, ? )
};
$log->debug( "Will run SQL\n$sql" );
$log->debug( "Will use parameters: ", join( ', ', $wf->id, $ticket->id ) );
my $dbh = FACTORY->get_persister( 'TestPersister' )->handle;
my ( $sth );
eval {
$sth = $dbh->prepare( $sql );
$sth->execute( $wf->id, $ticket->id );
};
if ( $@ ) {
die "Failed to save additional ticket info: $@\n";
}
$log->info( "Link table record inserted correctly" );
$wf->add_history(
Workflow::History->new({
action => 'Create ticket',
description => sprintf( "New ticket created of type '%s' and subject '%s'",
$self->param( 'type' ), $self->param( 'subject' ) ),
user => $creator,
})
);
$log->info( "History record added to workflow ok" );
}
1;