MT#4025 Manage customer sound-sets in details view

agranig/peering-route
Andreas Granig 12 years ago
parent 3acdd72dc6
commit e93c68c58c

@ -18,6 +18,7 @@ use NGCP::Panel::Utils::Message;
use NGCP::Panel::Utils::Navigation;
use NGCP::Panel::Utils::DateTime;
use NGCP::Panel::Utils::Subscriber;
use NGCP::Panel::Utils::Sounds;
use Template;
=head1 NAME
@ -179,6 +180,7 @@ sub base :Chained('list_customer') :PathPart('') :CaptureArgs(1) {
sub details :Chained('base') :PathPart('details') :Args(0) {
my ($self, $c) = @_;
NGCP::Panel::Utils::Sounds::stash_soundset_list(c => $c, contract => $c->stash->{contract});
$c->stash->{contact_hash} = { $c->stash->{contract}->contact->get_inflated_columns };
}

@ -48,6 +48,7 @@ sub auto :Private {
unless($product) {
$c->detach('/denied_page');
}
$c->stash->{contract_rs} = $contract_select_rs;
}
return 1;
@ -56,30 +57,14 @@ sub auto :Private {
sub sets_list :Chained('/') :PathPart('sound') :CaptureArgs(0) {
my ( $self, $c ) = @_;
my $sets_rs = $c->model('DB')->resultset('voip_sound_sets');
my $dt_fields = [
{ name => 'id', search => 1, title => '#' },
{ name => 'name', search => 1, title => 'Name' },
{ name => 'description', search => 1, title => 'Description' },
];
if($c->user->roles eq "admin") {
splice @{ $dt_fields }, 1, 0,
{ name => 'reseller.name', search => 1, title => 'Reseller' };
splice @{ $dt_fields }, 2, 0,
{ name => 'contract.contact.email', search => 1, title => 'Customer' };
} elsif($c->user->roles eq "reseller") {
splice @{ $dt_fields }, 1, 0,
{ name => 'contract.contact.email', search => 1, title => 'Customer' };
$sets_rs = $sets_rs->search({ reseller_id => $c->user->reseller_id });
} elsif($c->user->roles eq "subscriberadmin") {
$sets_rs = $sets_rs->search({ contract_id => $c->user->account_id });
if($c->stash->{contract_rs}) {
NGCP::Panel::Utils::Sounds::stash_soundset_list(
c => $c,
contract => $c->stash->{contract_rs}->first
);
} else {
NGCP::Panel::Utils::Sounds::stash_soundset_list(c => $c);
}
$c->stash->{soundset_dt_columns} = NGCP::Panel::Utils::Datatables::set_columns($c, $dt_fields);
$c->stash(sets_rs => $sets_rs);
$c->stash(template => 'sound/list.tt');
}

@ -47,6 +47,43 @@ sub transcode_data {
return $out;
}
sub stash_soundset_list {
my (%params) = @_;
my $c = $params{c};
my $contract = $params{contract};
my $sets_rs = $c->model('DB')->resultset('voip_sound_sets');
if($contract) {
$sets_rs = $sets_rs->search({ contract_id => $contract->id });
}
my $dt_fields = [
{ name => 'id', search => 1, title => '#' },
{ name => 'name', search => 1, title => 'Name' },
{ name => 'description', search => 1, title => 'Description' },
];
if($c->user->roles eq "admin") {
splice @{ $dt_fields }, 1, 0,
{ name => 'reseller.name', search => 1, title => 'Reseller' };
splice @{ $dt_fields }, 2, 0,
{ name => 'contract.contact.email', search => 1, title => 'Customer' };
} elsif($c->user->roles eq "reseller") {
splice @{ $dt_fields }, 1, 0,
{ name => 'contract.contact.email', search => 1, title => 'Customer' };
$sets_rs = $sets_rs->search({ reseller_id => $c->user->reseller_id });
} elsif($c->user->roles eq "subscriberadmin" && !$contract) {
$sets_rs = $sets_rs->search({ contract_id => $c->user->account_id });
}
$c->stash->{soundset_dt_columns} = NGCP::Panel::Utils::Datatables::set_columns($c, $dt_fields);
$c->stash(sets_rs => $sets_rs);
return;
}
1;
# vim: set tabstop=4 expandtab:

@ -296,6 +296,44 @@
</div>
[% END -%]
[% IF
c.config.features.cloudpbx &&
(c.user.roles == 'admin' || c.user.roles == 'reseller' || c.user.roles == 'subscriberadmin')
-%]
<div class="accordion-group">
<div class="accordion-heading">
<a class="accordion-toggle" data-toggle="collapse" data-parent="#customer_details" href="#collapse_soundsets">Sound Sets</a>
</div>
<div class="accordion-body collapse" id="collapse_soundsets">
<div class="accordion-inner">
[%
helper.name = 'Sound Sets';
helper.dt_columns = soundset_dt_columns;
helper.ajax_uri = c.uri_for('/sound/ajax');
UNLESS c.user.read_only;
helper.dt_buttons = [
{ name = 'Edit', uri = "/sound/'+full.id+'/edit", class = 'btn-small btn-primary', icon = 'icon-edit' },
{ name = 'Delete', uri = "/sound/'+full.id+'/delete", class = 'btn-small btn-secondary', icon = 'icon-trash' },
{ name = 'Files', uri = "/sound/'+full.id+'/handles", class = 'btn-small btn-tertiary', icon = 'icon-list' },
];
helper.top_buttons = [
{ name = 'Create Sound Set', uri = c.uri_for('/sound/create'), icon = 'icon-star', accordion_button = 1 },
];
ELSE;
helper.dt_buttons = [
{ name = 'Files', uri = "/sound/'+full.id+'/handles", class = 'btn-small btn-tertiary', icon = 'icon-list' },
];
END;
PROCESS 'helpers/datatables.tt';
%]
</div>
</div>
</div>
[% END -%]
<div class="accordion-group">
<div class="accordion-heading">
<a class="accordion-toggle" data-toggle="collapse" data-parent="#customer_details" href="#collapse_balance">Contract Balance</a>

@ -156,7 +156,11 @@ $(document).ready(function() {
</form>
[% ELSE -%]
<span class="pull-left" style="margin:0 5px 0 5px;">
[% IF button.accordion_button == 1 && loop.count == 1 -%]
<a class="btn btn-primary btn-large" href="[% button.uri %]" style="margin-left:25px;"><i class="[% button.icon %]"></i> [% button.name %]</a>
[% ELSIF loop.count == 1-%]
<a class="btn btn-primary btn-large" href="[% button.uri %]"><i class="[% button.icon %]"></i> [% button.name %]</a>
[% END -%]
</span>
[% END -%]
[% END -%]

Loading…
Cancel
Save