d3a0353078b3eff67f4f0fa928c05ad3e65243c4
[freeside.git] / httemplate / search / svc_broadband.cgi
1 %die "access denied"
2 %  unless $FS::CurrentUser::CurrentUser->access_right('List services');
3 %
4 %my $conf = new FS::Conf;
5 %
6 %my @svc_broadband = ();
7 %my $sortby=\*svcnum_sort;
8 %if ( $cgi->param('magic') =~ /^(all|unlinked)$/ ) {
9 %
10 %  @svc_broadband=qsearch('svc_broadband',{});
11 %
12 %  if ( $cgi->param('magic') eq 'unlinked' ) {
13 %    @svc_broadband = grep { qsearchs('cust_svc', {
14 %                                                   'svcnum' => $_->svcnum,
15 %                                                   'pkgnum' => '',
16 %                                                 }
17 %                                    )
18 %                          }
19 %                     @svc_broadband;
20 %  }
21 %
22 %  if ( $cgi->param('sortby') =~ /^(\w+)$/ ) {
23 %    my $sortby = $1;
24 %    if ( $sortby eq 'blocknum' ) {
25 %      $sortby = \*blocknum_sort;
26 %    }
27 %  }
28 %
29 %} elsif ( $cgi->param('svcpart') =~ /^(\d+)$/ ) {
30 %
31 %  @svc_broadband =
32 %    qsearch( {
33 %               'table'     => 'svc_broadband',
34 %               'addl_from' => 'LEFT JOIN cust_svc USING ( svcnum )',
35 %               'extra_sql' => "WHERE svcpart = $1",
36 %             }
37 %           );
38 %
39 %} elsif ( $cgi->param('ip_addr') =~ /^(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})$/ ) {
40 %  my $ip_addr = $1;
41 %  @svc_broadband = qsearchs('svc_broadband',{'ip_addr'=>$ip_addr});
42 %}
43 %
44 %my %routerbyblock = ();
45 %foreach my $router (qsearch('router', {})) {
46 %  foreach ($router->addr_block) {
47 %    $routerbyblock{$_->blocknum} = $router;
48 %  }
49 %}
50 %
51 %if ( scalar(@svc_broadband) == 1 ) {
52 %  print $cgi->redirect(popurl(2). "view/svc_broadband.cgi?". $svc_broadband[0]->svcnum);
53 %  #exit;
54 %} elsif ( scalar(@svc_broadband) == 0 ) {
55 %
56
57 <!-- mason kludge -->
58 %
59 % errorpage("No matching broadband services found!");
60 %} else {
61 %
62
63 <!-- mason kludge -->
64 %
65 %  my($total)=scalar(@svc_broadband);
66 %  print header("Broadband Search Results",''), <<END;
67 %
68 %    $total matching broadband services found
69 %    <TABLE BORDER=4 CELLSPACING=0 CELLPADDING=0>
70 %      <TR>
71 %        <TH>Service #</TH>
72 %       <TH>Router</TH>
73 %        <TH>IP Address</TH>
74 %      </TR>
75 %END
76 %
77 %  foreach my $svc_broadband (
78 %    sort $sortby (@svc_broadband)
79 %  ) {
80 %    my($svcnum,$ip_addr,$routername,$routernum)=(
81 %      $svc_broadband->svcnum,
82 %      $svc_broadband->ip_addr,
83 %      $routerbyblock{$svc_broadband->blocknum}->routername,
84 %      $routerbyblock{$svc_broadband->blocknum}->routernum,
85 %    );
86 %
87 %    my $rowspan = 1;
88 %
89 %    print <<END;
90 %    <TR>
91 %      <TD ROWSPAN=$rowspan><A HREF="${p}view/svc_broadband.cgi?$svcnum">$svcnum</A></TD>
92 %      <TD ROWSPAN=$rowspan><A HREF="${p}view/router.cgi?$routernum">$routername</A></TD>
93 %      <TD ROWSPAN=$rowspan><A HREF="${p}view/svc_broadband.cgi?$svcnum">$ip_addr</A></TD>
94 %END
95 %
96 %    #print @rows;
97 %    print "</TR>";
98 %
99 %  }
100
101 %  print <<END;
102 %    </TABLE>
103 %  </BODY>
104 %</HTML>
105 %END
106 %
107 %}
108 %
109 %sub svcnum_sort {
110 %  $a->getfield('svcnum') <=> $b->getfield('svcnum');
111 %}
112 %
113 %sub blocknum_sort {
114 %  if ($a->getfield('blocknum') == $b->getfield('blocknum')) {
115 %    $a->getfield('ip_addr') cmp $b->getfield('ip_addr');
116 %  } else {
117 %    $a->getfield('blocknum') cmp $b->getfield('blocknum');
118 %  }
119 %}
120 %
121 %
122 %
123