File Coverage

blib/lib/App/bif/update/issue.pm
Criterion Covered Total %
statement 12 29 41.3
branch 0 8 0.0
condition 0 3 0.0
subroutine 4 5 80.0
pod 1 1 100.0
total 17 46 36.9


line stmt bran cond sub pod time code
1             package App::bif::update::issue;
2 1     1   4438 use strict;
  1         1  
  1         30  
3 1     1   5 use warnings;
  1         1  
  1         23  
4 1     1   2 use Bif::Mo;
  1         1  
  1         6  
5              
6             our $VERSION = '0.1.5_5';
7             extends 'App::bif';
8              
9             sub run {
10 1     1 1 2 my $self = shift;
11 1         3 my $opts = $self->opts;
12 1         5 my $dbw = $self->dbw;
13 0           my $info = $self->get_node( $self->uuid2id( $opts->{id} ), 'issue' );
14              
15             my $project_id = $dbw->xval(
16             select => 'i.project_id',
17             from => 'issues i',
18             where => { 'i.id' => $info->{id} },
19 0           );
20              
21             my ( $status_ids, $invalid ) =
22 0           $dbw->status_ids( $project_id, 'issue', $opts->{status} );
23              
24 0 0         return $self->err( 'InvalidStatus',
25             'unknown status(s): ' . join( ', ', @$invalid ) )
26             if @$invalid;
27              
28 0 0         if ( $opts->{reply} ) {
29             my $uinfo =
30 0           $self->get_change( $opts->{reply}, $info->{first_change_id} );
31 0           $opts->{parent_uid} = $uinfo->{id};
32             }
33             else {
34 0           $opts->{parent_uid} = $info->{first_change_id};
35             }
36              
37             $dbw->txn(
38             sub {
39             $self->start_work(
40             node_id => $info->{id},
41 0     0     start => time,
42             start_comment => "update issue",
43             billable => 1,
44             save => 1,
45             );
46              
47 0   0       $opts->{message} ||= $self->prompt_edit( opts => $self );
48              
49             $opts->{change_id} =
50 0           $self->new_change( parent_id => $opts->{parent_uid}, );
51              
52             $dbw->xdo(
53             insert_into => 'func_update_issue',
54             values => {
55             id => $info->{id},
56             change_id => $opts->{change_id},
57 0 0         $opts->{title} ? ( title => $opts->{title} ) : (),
    0          
58             @$status_ids ? ( issue_status_id => $status_ids->[0] ) : (),
59             },
60             );
61              
62 0           $self->stop_work(
63             stop => time,
64             restore => 1,
65             );
66              
67             $self->save_work(
68             node_id => $info->{id},
69             change_id => $opts->{change_id}
70 0           );
71              
72             $self->end_change(
73             id => $opts->{change_id},
74             action_format => "update issue %s",
75             action_node_id_1 => $info->{id},
76             message => $opts->{message},
77 0           );
78              
79             }
80 0           );
81              
82 0           return $self->ok('ChangeIssue');
83             }
84              
85             1;
86             __END__