diff options
| author | Ivan Kohler <ivan@freeside.biz> | 2016-06-03 17:23:02 -0700 |
|---|---|---|
| committer | Ivan Kohler <ivan@freeside.biz> | 2016-06-03 17:23:02 -0700 |
| commit | d22baa4e71bfa9e153c1fe1152ff4c748f1d935c (patch) | |
| tree | 16c12b200e2b071679856699f38e5570ffc9abc2 /rt/lib | |
| parent | a60ce94f914fb7380546d19713fece0ed208bdc6 (diff) | |
| parent | 1efab29ccbb2aa15bcb94f1cb46069f32dcabf9f (diff) | |
Merge branch 'master' of git.freeside.biz:/home/git/freeside
Diffstat (limited to 'rt/lib')
| -rw-r--r-- | rt/lib/RT/Search/UnrepliedTickets.pm | 62 |
1 files changed, 62 insertions, 0 deletions
diff --git a/rt/lib/RT/Search/UnrepliedTickets.pm b/rt/lib/RT/Search/UnrepliedTickets.pm new file mode 100644 index 000000000..a99690156 --- /dev/null +++ b/rt/lib/RT/Search/UnrepliedTickets.pm @@ -0,0 +1,62 @@ +=head1 NAME + + RT::Search::UnrepliedTickets + +=head1 SYNOPSIS + +=head1 DESCRIPTION + +Find all unresolved tickets owned by the current user where the last correspondence +from a requestor (or ticket creation) is more recent than the last +correspondence from a non-requestor (if there is any). + +=head1 METHODS + +=cut + +package RT::Search::UnrepliedTickets; + +use strict; +use warnings; +use base qw(RT::Search); + + +sub Describe { + my $self = shift; + return ($self->loc("Tickets awaiting a reply")); +} + +sub Prepare { + my $self = shift; + + my $TicketsObj = $self->TicketsObj; + $TicketsObj->Limit( + FIELD => 'Owner', + VALUE => $TicketsObj->CurrentUser->id + ); + $TicketsObj->Limit( + FIELD => 'Status', + OPERATOR => '!=', + VALUE => 'resolved' + ); + my $txn_alias = $TicketsObj->JoinTransactions; + $TicketsObj->Limit( + ALIAS => $txn_alias, + FIELD => 'Created', + OPERATOR => '>', + VALUE => 'COALESCE(main.Told,\'1970-01-01\')', + QUOTEVALUE => 0, + ); + $TicketsObj->Limit( + ALIAS => $txn_alias, + FIELD => 'Type', + OPERATOR => 'IN', + VALUE => [ 'Correspond', 'Create' ], + ); + + return(1); +} + +RT::Base->_ImportOverlays(); + +1; |
