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