4099a57f514fcb8bb9a41e5d4d73ac07b55c01b2
[freeside.git] / fs_selfservice / FS-SelfService / cgi / view_usage.html
1 <%= $url = "$selfurl?action=";
2     %by_pkg_label = (); # not used yet, but I'm sure it will be...
3     @svc_acct = ();
4     @svc_phone = ();
5     @svc_port = ();
6     @svc_pbx = ();
7
8     foreach (@svcs) {
9       $by_pkg_label{ $_->{pkg_label} } ||= [];
10       push @{ $by_pkg_label{ $_->{pkg_label} } }, $_;
11       if ( $_->{svcdb} eq 'svc_acct' ) {
12         push @svc_acct, $_;
13       } elsif ( $_->{svcdb} eq 'svc_phone' ) {
14         push @svc_phone, $_;
15       } elsif ( $_->{svcdb} eq 'svc_port' ) {
16         push @svc_port, $_;
17       } elsif ( $_->{svcdb} eq 'svc_pbx' ) {
18         push @svc_pbx, $_;
19       }
20     }
21     '';
22 %>
23 <%= include('header', 'Account usage') %>
24
25 <%= if ( $error ) {
26   $OUT .= qq!<FONT SIZE="+1" COLOR="#ff0000">$error</FONT><BR><BR>!;
27 } ''; %>
28
29 <%= if ( @svc_acct ) {
30       $OUT.= '<TABLE BGCOLOR="#cccccc">
31                 <TR>
32                   <TH ALIGN="left">Account</TH>
33                   <TH ALIGN="right">Time remaining</TH>
34                   <TH ALIGN="right">Upload remaining</TH>
35                   <TH ALIGN="right">Download remaining</TH>
36                   <TH ALIGN="right">Total remaining</TH>
37                 </TR>';
38     } else {
39       $OUT .= '';
40     }
41 %>
42
43 <%= foreach my $svc ( @svc_acct ) {
44       my $link = "${url}view_usage_details;".
45         "svcnum=$svc->{'svcnum'};beginning=0;ending=0";
46     my $username = $svc->{'value'};
47     $username =~ s/@.*?$//g if $view_usage_nodomain;
48   $OUT .= '<TR><TD>';
49     $OUT .= qq!<A HREF="$link">!. $svc->{'label'}. ': '. $username .'</A>';
50     $OUT .= '</TD><TD ALIGN="right">';
51     $OUT .= $svc->{'seconds'};
52     $OUT .= '</TD><TD ALIGN="right">';
53     $OUT .=  $svc->{'upbytes'};
54     $OUT .= '</TD><TD ALIGN="right">';
55     $OUT .= $svc->{'downbytes'};
56     $OUT .= '</TD><TD ALIGN="right">';
57     $OUT .= $svc->{'totalbytes'};
58   $OUT .= '</TD></TR>';
59     if ( $svc->{'recharge_amount'} ) {
60       my $link = "${url}process_order_recharge;".
61                  "svcnum=$svc->{'svcnum'}";
62     $OUT .= '<TR><TD ALIGN="right">';
63       $OUT .= qq!<A HREF="$link">!.'Recharge for $';
64       $OUT .= $svc->{'recharge_amount'} . '</A> with';
65       $OUT .= '</TD><TD ALIGN="right">';
66       $OUT .= $svc->{'recharge_seconds'} if $svc->{'recharge_seconds'};
67       $OUT .= '</TD><TD ALIGN="right">';
68       $OUT .=  $svc->{'recharge_upbytes'} if $svc->{'recharge_upbytes'};
69       $OUT .= '</TD><TD ALIGN="right">';
70       $OUT .= $svc->{'recharge_downbytes'} if $svc->{'recharge_downbytes'};
71       $OUT .= '</TD><TD ALIGN="right">';
72       $OUT .= $svc->{'recharge_totalbytes'} if $svc->{'recharge_totalbytes'};
73     $OUT .= '</TD></TR>';
74     }
75   }
76 %>
77
78 <%= scalar(@svc_acct) ? '</TABLE><BR><BR>' : '' %>
79
80 <%= if ( @svc_phone or @svc_pbx ) {
81       %any = ();
82       for my $dir (qw(outbound inbound)) {
83         $any{$dir} = grep { $_->{$dir} } (@svc_phone, @svc_pbx);
84       }
85       $OUT.= '<FONT SIZE="4">Call usage</FONT><BR><BR>
86               <TABLE BGCOLOR="#cccccc" STYLE="display:inline-block">
87                 <TR>
88                   <TH ALIGN="left">Number</TH>';
89       if ( $any{outbound} ) {
90         $OUT .= '
91                   <TH>Dialed</TH>';
92       }
93       if ( $any{inbound} ) {
94         $OUT .= '
95                   <TH>Received</TH>';
96       }
97       $OUT .= '</TR>';
98     } else {
99       $OUT .= '';
100     }
101 %>
102
103 <%= foreach my $svc_x ( @svc_phone, @svc_pbx ) {
104   my $link = $url . 'view_cdr_details;' .
105           'svcnum='.$svc_x->{'svcnum'}.
106           ';beginning=0;ending=0';
107   $OUT .= '<TR><TD>'. $svc_x->{'label'}. ': '. $svc_x->{'value'};
108   $OUT .= '</TD>';
109   # usage summary w/ links
110   for my $dir (qw(outbound inbound)) {
111     if ( $dir eq 'inbound' ) {
112       $link .= ';inbound=1';
113     }
114     if ( $svc_x->{$dir} ) {
115       $OUT .= '<TD ALIGN="right">'.qq!<A HREF="$link">! .
116         sprintf('%d calls (%.0f minutes)',
117           $svc_x->{$dir}->{'count'},
118           $svc_x->{$dir}->{'duration'} / 60
119         ) .
120         '</A></TD>';
121     } elsif ( $any{$dir} )  {
122       $OUT .= '<TD></TD>';
123     }
124   }
125   $OUT .= '</TR>';
126 }
127 '';
128 %>
129
130 <%= if ( @usage_pools ) {
131   $OUT .= '</TABLE>
132   <TABLE BGCOLOR="#cccccc" STYLE="display: inline-block">
133     <TR><TH COLSPAN=4>Remaining minutes</TH></TR>
134     ';
135   my $any_shared = 0;
136   foreach my $usage (@usage_pools) {
137     # false laziness with the back office side
138     my ($description, $remain, $total, $shared) = @$usage;
139     if ( $shared ) {
140       $any_shared = 1;
141       $description .= '*';
142     }
143     my $ratio = 255 * ($remain/$total);
144     $ratio = 255 if $color > 255;
145     my $color = 
146       sprintf('STYLE="font-weight: bold; color: #%02x%02x00"',
147         255 - $ratio, $ratio);
148     $OUT .=
149     qq!<TR>
150       <TD ALIGN="right">$description</TD>
151       <TD $color ALIGN="right">$remain</TD>
152       <TD $color> / </TD>
153       <TD $color>$total</TD>
154     </TR>!;
155   }
156   if ( $any_shared ) {
157     $OUT .= '<TR STYLE="font-size: 80%; font-style: italic">'.
158             '<TD COLSPAN=4>* shared among all your phone plans</TD></TR>';
159   }
160 }
161 if ( @svc_phone or @svc_pbx or @usage_pools ) {
162   $OUT .= '</TABLE><BR><BR>';
163 }
164 '';
165 %>
166
167 <%= if ( @svc_port ) {
168       $OUT.= '<FONT SIZE="4">Bandwidth Graphs</FONT><BR><BR>
169                 <script type="text/javascript">
170                     function preset_range(start,end,prefix){
171                         document.getElementById(prefix+\'_start\').value = start;
172                         document.getElementById(prefix+\'_end\').value = end;
173                     }
174                   </script>
175               <TABLE BGCOLOR="#cccccc">
176                 <TR>
177                   <TH ALIGN="left">Service</TH>
178                   <TH ALIGN="right">
179                   </TH>
180                 </TR>';
181     } 
182     $OUT .= '';
183 %>
184
185 <%=
186
187 sub preset_range {
188     my($start,$end,$label,$date_format,$prefix) = (shift,shift,shift,shift,shift);
189     $start = Date::Format::time2str($date_format,$start);
190     $end = Date::Format::time2str($date_format,$end);
191     return '<A HREF="javascript:void(0);" onclick="preset_range(\''
192             .$start.'\',\''.$end.'\',\''.$prefix.'\')">'.$label.'</A>';
193 }
194
195 foreach my $svc_port ( @svc_port ) {
196   $svcnum = $svc_port->{'svcnum'}; 
197   $default_end = time;
198   $default_start = $default_end-86400;
199
200   $OUT .= '<TR><TD>'. $svc_port->{'label'}. ': '. $svc_port->{'value'}.'</TD>';
201   $OUT .= qq! <TD><FORM ACTION="$url" METHOD="GET">
202                 <INPUT TYPE="hidden" name="svcnum" value="$svcnum">
203                 <INPUT TYPE="hidden" name="action" value="view_port_graph"> !; 
204   $OUT .= preset_range($default_start,$default_end,'Last Day',$date_format,$svcnum)
205         .' | '.preset_range($default_end-86400*7,$default_end,'Last Week',$date_format,$svcnum)
206         .' | '.preset_range($default_end-86400*30,$default_end,'Last Month',$date_format,$svcnum)
207         .' | '.preset_range($default_end-86400*365,$default_end,'Last Year',$date_format,$svcnum);
208   
209   $OUT .= qq! <BR>
210             Start Date <INPUT TYPE="TEXT" id="${svcnum}_start" name="${svcnum}_start" SIZE="10" MAXLENGTH="10">
211             End Date <INPUT TYPE="TEXT" id="${svcnum}_end" name="${svcnum}_end" SIZE="10" MAXLENGTH="10">
212             <BR>
213             <INPUT TYPE="submit" value="Display"> !;
214
215   $OUT .= '</FORM></TD></TR>';
216 }
217 %>
218
219 <%= scalar(@svc_port) ? '</TABLE><BR><BR>' : '' %>
220
221
222 </TD></TR></TABLE>
223 <%= include('footer') %>
224