service refactor!
[freeside.git] / httemplate / search / svc_forward.cgi
1 %my $conf = new FS::Conf;
2 %
3 %my $orderby = 'ORDER BY svcnum';
4 %my @extra_sql = ();
5 %if ( $cgi->param('magic') =~ /^(all|unlinked)$/ ) {
6 %
7 %  push @extra_sql, 'pkgnum IS NULL'
8 %    if $cgi->param('magic') eq 'unlinked';
9 %
10 %  if ( $cgi->param('sortby') =~ /^(\w+)$/ ) {
11 %    my $sortby = $1;
12 %    $orderby = "ORDER BY $sortby";
13 %  }
14 %
15 %} elsif ( $cgi->param('svcpart') =~ /^(\d+)$/ ) {
16 %  push @extra_sql, "svcpart = $1";
17 %}
18 %
19 %my $addl_from = ' LEFT JOIN cust_svc  USING ( svcnum  ) '.
20 %                ' LEFT JOIN part_svc  USING ( svcpart ) '.
21 %                ' LEFT JOIN cust_pkg  USING ( pkgnum  ) '.
22 %                ' LEFT JOIN cust_main USING ( custnum ) ';
23 %
24 %#here is the agent virtualization
25 %push @extra_sql, $FS::CurrentUser::CurrentUser->agentnums_sql;
26 %
27 %my $extra_sql = 
28 %  scalar(@extra_sql)
29 %    ? ' WHERE '. join(' AND ', @extra_sql )
30 %    : '';
31 %
32 %my $count_query = "SELECT COUNT(*) FROM svc_forward $addl_from $extra_sql";
33 %my $sql_query = {
34 %  'table'     => 'svc_forward',
35 %  'hashref'   => {},
36 %  'select'    => join(', ',
37 %                   'svc_forward.*',
38 %                   'part_svc.svc',
39 %                   'cust_main.custnum',
40 %                   FS::UI::Web::cust_sql_fields(),
41 %                 ),
42 %  'extra_sql' => "$extra_sql $orderby",
43 %  'addl_from' => $addl_from,
44 %};
45 %
46 %#        <TH>Service #<BR><FONT SIZE=-1>(click to view forward)</FONT></TH>
47 %#        <TH>Mail to<BR><FONT SIZE=-1>(click to view account)</FONT></TH>
48 %#        <TH>Forwards to<BR><FONT SIZE=-1>(click to view account)</FONT></TH>
49 %
50 %my $link = [ "${p}view/svc_forward.cgi?", 'svcnum' ];
51 %
52 %my $format_src = sub {
53 %  my $svc_forward = shift;
54 %  if ( $svc_forward->srcsvc_acct ) {
55 %    $svc_forward->srcsvc_acct->email;
56 %  } else {
57 %    my $src = $svc_forward->src;
58 %    $src = "<I>(anything)</I>$src" if $src =~ /^@/;
59 %    $src;
60 %  }
61 %};
62 %
63 %my $link_src = sub {
64 %  my $svc_forward = shift;
65 %  if ( $svc_forward->srcsvc_acct ) {
66 %    [ "${p}view/svc_acct.cgi?", 'srcsvc' ];
67 %  } else {
68 %    '';
69 %  }
70 %};
71 %
72 %my $format_dst = sub {
73 %  my $svc_forward = shift;
74 %  if ( $svc_forward->dstsvc_acct ) {
75 %    $svc_forward->dstsvc_acct->email;
76 %  } else {
77 %    $svc_forward->dst;
78 %  }
79 %};
80 %
81 %my $link_dst = sub {
82 %  my $svc_forward = shift;
83 %  if ( $svc_forward->dstsvc_acct ) {
84 %    [ "${p}view/svc_acct.cgi?", 'dstsvc' ];
85 %  } else {
86 %    '';
87 %  }
88 %};
89 %
90 %#smaller false laziness w/svc_*.cgi here
91 %my $link_cust = sub {
92 %  my $svc_x = shift;
93 %  $svc_x->custnum ? [ "${p}view/cust_main.cgi?", 'custnum' ] : '';
94 %};
95 %
96 %
97 <% include( 'elements/search.html',
98                  'title'             => "Mail forward Search Results",
99                  'name'              => 'mail forwards',
100                  'query'             => $sql_query,
101                  'count_query'       => $count_query,
102                  'redirect'          => $link,
103                  'header'            => [ '#',
104                                           'Service',
105                                           'Mail to',
106                                           'Forwards to',
107                                           FS::UI::Web::cust_header(),
108                                         ],
109                  'fields'            => [ 'svcnum',
110                                           'svc',
111                                           $format_src,
112                                           $format_dst,
113                                           \&FS::UI::Web::cust_fields,
114                                         ],
115                  'links'             => [ $link,
116                                           $link,
117                                           $link_src,
118                                           $link_dst,
119                                           ( map { $link_cust }
120                                                 FS::UI::Web::cust_header()
121                                           ),
122                                         ],
123              )
124 %>