You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
ngcp-panel/lib/NGCP/Panel/Widget/Dashboard/SubscriberCFOverview.pm

71 lines
2.0 KiB

package NGCP::Panel::Widget::Dashboard::SubscriberCFOverview;
use warnings;
use strict;
sub template {
return 'widgets/subscriber_cf_overview.tt';
}
sub filter {
my ($self, $c) = @_;
return 1 if(
($c->user->roles eq 'subscriber' || $c->user->roles eq 'subscriberadmin')
);
return;
}
sub _get_cf_type_descriptions {
my ($self, $c) = @_;
return { cfu => $c->loc("Call Forward Unconditional"),
cfb => $c->loc("Call Forward Busy"),
cft => $c->loc("Call Forward Timeout"),
cfna => $c->loc("Call Forward Unavailable") };
}
sub cfs {
my ($self, $c) = @_;
my $prov_subscriber = $c->user;
my $cfs = {};
my $descriptions = $self->_get_cf_type_descriptions($c);
foreach my $type (qw/cfu cfna cft cfb/) {
my $maps = $prov_subscriber->voip_cf_mappings
->search({ type => $type });
my @mappings = ();
foreach my $map ($maps->all) {
my @dset = map { { $_->get_columns } } $map->destination_set->voip_cf_destinations->search({},
{ order_by => { -asc => 'priority' }})->all;
foreach my $d (@dset) {
my $as_string = NGCP::Panel::Utils::Subscriber::destination_as_string($c, $d);
delete @$d{keys %$d};
$d->{as_string} = $as_string;
}
my @tset = ();
if ($map->time_set) {
@tset = map { { $_->get_columns } } $map->time_set->voip_cf_periods->all;
foreach my $t (@tset) {
my $as_string = NGCP::Panel::Utils::Subscriber::period_as_string($t);
delete @$t{keys %$t};
$t->{as_string} = $as_string;
}
}
push @mappings, {
destinations => \@dset,
periods => \@tset,
};
}
$cfs->{$type} = {
mappings => \@mappings,
desc => $descriptions->{$type},
};
}
return $cfs;
}
1;
# vim: set tabstop=4 expandtab: