search services by tower/sector, #15950
[freeside.git] / httemplate / browse / tower.html
1 <% include( 'elements/browse.html',
2                  'title'       => 'Towers',
3                  'name'        => 'towers',
4                  'menubar'     => [ 'Add a new tower' =>
5                                       $p.'edit/tower.html',
6                                   ],
7                  'query'       => { 'table' => 'tower', },
8                  'count_query' => 'SELECT COUNT(*) FROM tower',
9                  'disableable' => 1,
10                  'disabled_statuspos' => 1,
11                  'header'      => [ 'Name', 'Sectors', ],
12                  'fields'      => [ $tower_sub,
13                                     $sector_sub,
14                                   ],
15                  'links'       => [ ],
16              )
17 %>
18 <%init>
19
20 die "access denied"
21   unless $FS::CurrentUser::CurrentUser->access_right('Configuration');
22
23 my $num_svc_links = sub {
24   my ($query_string, $sectors) = @_;
25   my $num_svc_broadband = FS::svc_broadband->count("sectornum IN($sectors)");
26   my $num_svc_acct =      FS::svc_acct->count("sectornum IN($sectors)");
27
28   {
29     'data' => $num_svc_broadband ? 
30                 '<B>'.$num_svc_broadband.'</B>'.
31                 ' broadband'
32                 : '',
33     'link' => $p.'search/svc_broadband.cgi?'.$query_string,
34     'size' => '-1',
35     'align'=> 'right',
36     'colspan'=> 2,
37   },
38
39   {
40     'data' => $num_svc_acct ? 
41                 '<B>'.$num_svc_acct.'</B>'.
42                 ' login'
43                 : '',
44     'link' => $p.'search/svc_acct.cgi?magic=advanced;'.$query_string,
45     'size' => '-1',
46     'align'=> 'right',
47     'colspan'=> 2,
48   },
49 };
50
51 my $tower_sub = sub {
52   my $tower = shift;
53   my $sectors = join(',', map { $_->sectornum } $tower->tower_sector);
54   [ #rows
55     [
56       { 'data' => $tower->towername, },
57       { 'data' => ' (edit) ', size => '-1', 
58         'link' => $p.'edit/tower.html?' . $tower->towernum },
59     ],
60     # turn these into rows
61     map { [ $_ ] } 
62       &{$num_svc_links}( 'towernum='.$tower->towernum, $sectors )
63   ] #rows
64 };
65
66 my $sector_sub = sub {
67   my $tower = shift;
68   
69   [ #rows
70     map {
71       my $sector = $_;
72       my $sectornum = $sector->sectornum;
73       [
74         {
75           'data' => $sector->sectorname,
76           'link' => ( $sector->ip_addr ? 'http://'. $sector->ip_addr : '' ),
77         },
78         
79         &{$num_svc_links}( 'sectornum='.$sectornum, $sectornum )
80       ]
81     } $tower->tower_sector
82   ] #rows
83
84 };
85
86 </%init>