File Coverage

blib/lib/App/bif/update/project.pm
Criterion Covered Total %
statement 18 37 48.6
branch 0 8 0.0
condition 0 3 0.0
subroutine 6 7 85.7
pod 1 1 100.0
total 25 56 44.6


line stmt bran cond sub pod time code
1             package App::bif::update::project;
2 1     1   6456 use strict;
  1         2  
  1         26  
3 1     1   5 use warnings;
  1         2  
  1         29  
4 1     1   5 use Bif::Mo;
  1         7  
  1         9  
5 1     1   749 use DBIx::ThinSQL qw/sq qv/;
  1         27906  
  1         7  
6 1     1   822 use IO::Prompt::Tiny qw/prompt/;
  1         534  
  1         454  
7              
8             our $VERSION = '0.1.5_7';
9             extends 'App::bif';
10              
11             sub run {
12 1     1 1 3 my $self = shift;
13 1         4 my $opts = $self->opts;
14 1         6 my $dbw = $self->dbw;
15              
16             $dbw->txn(
17             sub {
18 0     0     $self->pause_work;
19 0           my $start = time;
20              
21             my $info =
22 0 0         $self->get_project( $opts->{id} ? $opts->{id} : $opts->{path} );
23              
24 0           my ( $status_ids, $invalid );
25 0 0         if ( $opts->{status} ) {
26              
27             ( $status_ids, $invalid ) =
28 0           $dbw->status_ids( $info->{id}, 'project', $opts->{status} );
29              
30 0 0         return $self->err( 'InvalidStatus',
31             'unknown status(s): ' . join( ', ', @$invalid ) )
32             if @$invalid;
33             }
34              
35 0 0         if ( $opts->{reply} ) {
36             my $uinfo =
37 0           $self->get_change( $opts->{reply}, $info->{first_change_id} );
38 0           $opts->{parent_uid} = $uinfo->{id};
39             }
40             else {
41 0           $opts->{parent_uid} = $info->{first_change_id};
42             }
43              
44             $opts->{message} ||=
45 0   0       $self->prompt_edit( opts => $self, id => $info->{id} );
46              
47             $opts->{change_id} =
48 0           $self->new_change( parent_id => $opts->{parent_uid}, );
49              
50             $dbw->xdo(
51             insert_into => 'func_update_project',
52             values => {
53             id => $info->{id},
54             change_id => $opts->{change_id},
55             title => $opts->{title},
56 0           project_status_id => $status_ids->[0],
57             }
58             );
59              
60             $self->save_new_work(
61             change_id => $opts->{change_id},
62             node_id => $info->{id},
63 0           start => $start,
64             stop => time,
65             bill => 1,
66             );
67              
68             $self->end_change(
69             id => $opts->{change_id},
70             action_format => "update project $info->{path} (%s)",
71             action_node_id_1 => $info->{id},
72             message => $opts->{message},
73 0           );
74              
75 0           $self->resume_work;
76             }
77 0           );
78              
79 0           return $self->ok('ChangeProject');
80             }
81              
82             1;
83             __END__