diff --git a/lib/NGCP/Panel/Controller/Subscriber.pm b/lib/NGCP/Panel/Controller/Subscriber.pm index 193eff294d..27c9d6504f 100644 --- a/lib/NGCP/Panel/Controller/Subscriber.pm +++ b/lib/NGCP/Panel/Controller/Subscriber.pm @@ -43,7 +43,7 @@ sub sub_list :Chained('/') :PathPart('subscriber') :CaptureArgs(0) { template => 'subscriber/list.tt', ); - NGCP::Panel::Utils::Datatables::set_columns($c, [ + $c->stash->{dt_columns} = NGCP::Panel::Utils::Datatables::set_columns($c, [ { name => "id", search => 1, title => "#" }, { name => "username", search => 1, title => "Username" }, { name => "domain.domain", search => 1, title => "Domain" }, @@ -201,7 +201,7 @@ sub ajax :Chained('sub_list') :PathPart('ajax') :Args(0) { my $resultset = $self->$dispatch_to($c); - NGCP::Panel::Utils::Datatables::process($c, $resultset); + NGCP::Panel::Utils::Datatables::process($c, $resultset, $c->stash->{dt_columns}); $c->detach( $c->view("JSON") ); } @@ -1283,14 +1283,42 @@ sub load_preference_list :Private { ); } -sub master :Chained('/') :PathPart('subscriber') :Args(1) { - my ($self, $c, $subscriber_id) = @_; +sub master :Chained('base') :PathPart('details') :CaptureArgs(0) { + my ($self, $c) = @_; + + $c->stash->{calls_dt_columns} = NGCP::Panel::Utils::Datatables::set_columns($c, [ + { name => "source_user", search => 1, title => "Caller" }, + { name => "destination_user", search => 1, title => "Callee" }, + { name => "call_status", search => 1, title => "Status" }, + { name => "start_time", search => 1, title => "Start Time" }, + { name => "duration", search => 1, title => "Duration" }, + ]); $c->stash( template => 'subscriber/master.tt', ); +} + +sub details :Chained('master') :PathPart('') :Args(0) { + my ($self, $c) = @_; +} + +sub ajax_calls :Chained('master') :PathPart('calls/ajax') :Args(0) { + my ($self, $c) = @_; + + my $out_rs = $c->model('DB')->resultset('cdr')->search({ + source_user_id => $c->stash->{subscriber}->uuid, + }); + my $in_rs = $c->model('DB')->resultset('cdr')->search({ + destination_user_id => $c->stash->{subscriber}->uuid, + }); + my $rs = $out_rs->union($in_rs); + NGCP::Panel::Utils::Datatables::process($c, $rs, $c->stash->{calls_dt_columns}); + + $c->detach( $c->view("JSON") ); } + =head1 AUTHOR Andreas Granig,,, diff --git a/lib/NGCP/Panel/Utils/Datatables.pm b/lib/NGCP/Panel/Utils/Datatables.pm index 7998d8a1f5..8d22b11dbc 100644 --- a/lib/NGCP/Panel/Utils/Datatables.pm +++ b/lib/NGCP/Panel/Utils/Datatables.pm @@ -7,9 +7,7 @@ use List::Util qw/first/; use Scalar::Util qw/blessed/; sub process { - my ($c, $rs) = @_; - - my $cols = $c->stash->{dt_columns}; + my ($c, $rs, $cols) = @_; my $aaData = []; my $totalRecords = $rs->count; @@ -114,7 +112,7 @@ sub set_columns { $c->{accessor} = $c->{name}; $c->{accessor} =~ s/\./_/g; } - $c->stash->{dt_columns} = $cols; + return $cols; } sub _prune_row { @@ -124,7 +122,10 @@ sub _prune_row { delete $row{$k}; next; } - $row{$k} = $v->datetime if blessed($v) && $v->isa('DateTime'); + if(blessed($v) && $v->isa('DateTime')) { + $row{$k} = $v->datetime; + $row{$k} .= '.'.$v->millisecond if $v->millisecond > 0.0; + } } return { %row }; } diff --git a/share/templates/helpers/datatables.tt b/share/templates/helpers/datatables.tt index 7608559f49..a41ace05b8 100644 --- a/share/templates/helpers/datatables.tt +++ b/share/templates/helpers/datatables.tt @@ -2,7 +2,7 @@ IF helper.dt_columns; helper.column_titles = []; helper.column_fields = []; - FOR col IN dt_columns; + FOR col IN helper.dt_columns; NEXT UNLESS col.title; helper.column_titles.push(col.title); helper.column_fields.push(col.accessor); diff --git a/share/templates/subscriber/master.tt b/share/templates/subscriber/master.tt index b7a8ea1b1a..14b696290b 100644 --- a/share/templates/subscriber/master.tt +++ b/share/templates/subscriber/master.tt @@ -1,4 +1,4 @@ -[% site_config.title = 'Subscriber' -%] +[% site_config.title = 'Subscriber ' _ subscriber.username _ '@' _ subscriber.domain.domain -%] [% IF messages -%]
| Setting | +Values | ++ |
|---|---|---|
| Customer # | +[% subscriber.contract.id %] | +
+
+ Customer Details
+
+ |
+
| CSC Username | +[% subscriber.webusername %] | +
+
+ Preferences
+
+ |
+
| CSC Password | +[% subscriber.webpassword%] | +
+
+ Preferences
+
+ |
+
| SIP URI | +[% subscriber.username %]@[% subscriber.domain.domain %] | +
+
+ Preferences
+
+ |
+
| SIP Password | +[% subscriber.password %] | +
+
+ Preferences
+
+ |
+
| Primary Number | +[% subscriber.primary_number.cc %] [% subscriber.primary_number.ac %] [% subscriber.primary_number.sn %] | +
+
+ Preferences
+
+ |
+
| Alias Numbers | +[% subscriber.primary_number.cc %] [% subscriber.primary_number.ac %] [% subscriber.primary_number.sn %] | +
+
+ Preferences
+
+ |
+
| Administrative | +[% subscriber.administrative ? 'yes' : 'no' %] | +
+
+ Preferences
+
+ |
+
| UUID | +[% subscriber.uuid %] | +
+
+ Preferences
+
+ |
+
| External # | +[% subscriber.external_id %] | +
+
+ Preferences
+
+ |
+