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