indicator on the top bar for new activity on tickets, #41670
[freeside.git] / rt / lib / RT / Search / UnrepliedTickets.pm
1 =head1 NAME
2
3   RT::Search::UnrepliedTickets
4
5 =head1 SYNOPSIS
6
7 =head1 DESCRIPTION
8
9 Find all unresolved tickets owned by the current user where the last correspondence
10 from a requestor (or ticket creation) is more recent than the last
11 correspondence from a non-requestor (if there is any).
12
13 =head1 METHODS
14
15 =cut
16
17 package RT::Search::UnrepliedTickets;
18
19 use strict;
20 use warnings;
21 use base qw(RT::Search);
22
23
24 sub Describe  {
25   my $self = shift;
26   return ($self->loc("Tickets awaiting a reply"));
27 }
28
29 sub Prepare  {
30   my $self = shift;
31
32   my $TicketsObj = $self->TicketsObj;
33   $TicketsObj->Limit(
34     FIELD => 'Owner',
35     VALUE => $TicketsObj->CurrentUser->id
36   );
37   $TicketsObj->Limit(
38     FIELD => 'Status',
39     OPERATOR => '!=',
40     VALUE => 'resolved'
41   );
42   my $txn_alias = $TicketsObj->JoinTransactions;
43   $TicketsObj->Limit(
44     ALIAS => $txn_alias,
45     FIELD => 'Created',
46     OPERATOR => '>',
47     VALUE => 'COALESCE(main.Told,\'1970-01-01\')',
48     QUOTEVALUE => 0,
49   );
50   $TicketsObj->Limit(
51     ALIAS => $txn_alias,
52     FIELD => 'Type',
53     OPERATOR => 'IN',
54     VALUE => [ 'Correspond', 'Create' ],
55   );
56
57   return(1);
58 }
59
60 RT::Base->_ImportOverlays();
61
62 1;