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/Plugin/SubscriberCFOverview.pm

67 lines
1.7 KiB

package NGCP::Panel::Widget::Plugin::SubscriberCFOverview;
use Moose::Role;
has 'template' => (
is => 'ro',
isa => 'Str',
default => 'widgets/subscriber_cf_overview.tt'
);
has 'type' => (
is => 'ro',
isa => 'Str',
default => 'dashboard_widgets',
);
has 'priority' => (
is => 'ro',
isa => 'Int',
default => 30,
);
around handle => sub {
my ($foo, $self, $c) = @_;
my $prov_subscriber = $c->user;
my $cfs = {};
foreach my $type(qw/cfu cfna cft cfb/) {
my $maps = $prov_subscriber->voip_cf_mappings
->search({ type => $type });
$cfs->{$type} = [];
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) {
$d->{as_string} = NGCP::Panel::Utils::Subscriber::destination_as_string($d);
}
my @tset = ();
if($map->time_set) {
@tset = map { { $_->get_columns } } $map->time_set->voip_cf_periods->all;
foreach my $t(@tset) {
$t->{as_string} = NGCP::Panel::Utils::Subscriber::period_as_string($t);
}
}
push @{ $cfs->{$type} }, { destinations => \@dset, periods => \@tset };
}
}
$c->stash(cf_destinations => $cfs);
return;
};
sub filter {
my ($self, $c, $type) = @_;
return $self if(
$type eq $self->type &&
($c->user->roles eq 'subscriber' || $c->user->roles eq 'subscriberadmin') &&
ref $c->controller eq 'NGCP::Panel::Controller::Dashboard'
);
return;
}
1;
# vim: set tabstop=4 expandtab: