f261ea9f3fead7d5277d0067adb561c294f1d6ac
[freeside.git] / httemplate / search / svc_domain.cgi
1 <%
2
3 my $conf = new FS::Conf;
4
5 my($query)=$cgi->keywords;
6 $query ||= ''; #to avoid use of unitialized value errors
7
8 my $orderby = 'ORDER BY svcnum';
9 my $join = '';
10 my %svc_domain = ();
11 my $extra_sql = '';
12 if ( $query eq 'svcnum' ) {
13   #$orderby = 'ORDER BY svcnum';
14 } elsif ( $query eq 'domain' ) {
15   $orderby = 'ORDER BY domain';
16 } elsif ( $query eq 'UN_svcnum' ) {
17   #$orderby = 'ORDER BY svcnum';
18   $join = 'LEFT JOIN cust_svc USING ( svcnum )';
19   $extra_sql = ' WHERE pkgnum IS NULL';
20 } elsif ( $query eq 'UN_domain' ) {
21   $orderby = 'ORDER BY domain';
22   $join = 'LEFT JOIN cust_svc USING ( svcnum )';
23   $extra_sql = ' WHERE pkgnum IS NULL';
24 } elsif ( $cgi->param('svcpart') =~ /^(\d+)$/ ) {
25   #$orderby = 'ORDER BY svcnum';
26   $join = 'LEFT JOIN cust_svc USING ( svcnum )';
27   $extra_sql = " WHERE svcpart = $1";
28 } else {
29   $cgi->param('domain') =~ /^([\w\-\.]+)$/; 
30   $join = '';
31   $svc_domain{'domain'} = $1;
32 }
33
34 my $count_query = "SELECT COUNT(*) FROM svc_domain $join $extra_sql";
35 if ( keys %svc_domain ) {
36   $count_query .= ' WHERE '.
37                     join(' AND ', map "$_ = ". dbh->quote($svc_domain{$_}),
38                                       keys %svc_domain
39                         );
40 }
41
42 my $sql_query = {
43   'table'     => 'svc_domain',
44   'hashref'   => \%svc_domain,
45   'select'    => join(', ',
46                    'svc_domain.*',
47                     'cust_main.custnum',
48                     FS::UI::Web::cust_sql_fields(),
49                  ),
50   'extra_sql' => "$extra_sql $orderby",
51   'addl_from' => 'LEFT JOIN cust_svc  USING ( svcnum  ) '.
52                  'LEFT JOIN cust_pkg  USING ( pkgnum  ) '.
53                  'LEFT JOIN cust_main USING ( custnum ) ',
54 };
55
56 my $link = [ "${p}view/svc_domain.cgi?", 'svcnum' ];
57
58 #smaller false laziness w/svc_*.cgi here
59 my $link_cust = sub {
60   my $svc_x = shift;
61   $svc_x->custnum ? [ "${p}view/cust_main.cgi?", 'custnum' ] : '';
62 };
63
64 %><%= include ('elements/search.html',
65                  'title'             => "Domain Search Results",
66                  'name'              => 'domains',
67                  'query'             => $sql_query,
68                  'count_query'       => $count_query,
69                  'redirect'          => $link,
70                  'header'            => [ '#',
71                                           'Domain',
72                                           FS::UI::Web::cust_header(),
73                                         ],
74                  'fields'            => [ 'svcnum',
75                                           'domain',
76                                           \&FS::UI::Web::cust_fields,
77                                         ],
78                  'links'             => [ $link,
79                                           $link,
80                                           ( map { $link_cust }
81                                                 FS::UI::Web::cust_header()
82                                           ),
83                                         ],
84               )
85 %>