TT#51552 Order pbx extensions by display_name or username

Change-Id: I7a5afd4c752162bd4276c44351194982308afd0b
changes/80/30280/5
Irina Peshinskaya 6 years ago
parent 33dc1a0a22
commit 53118b0988

@ -381,43 +381,54 @@ sub base :Chained('list_customer') :PathPart('') :CaptureArgs(1) {
{ name => "provisioning_voip_subscriber.pbx_hunt_policy", search => 1, title => $c->loc("Hunt Policy") },
{ name => "provisioning_voip_subscriber.pbx_hunt_timeout", search => 1, title => $c->loc("Serial Hunt Timeout") },
]);
$c->stash->{subscribers} = $c->model('DB')->resultset('voip_subscribers')->search({
my $subscribers_rs = $c->model('DB')->resultset('voip_subscribers')->search({
contract_id => $contract_id,
status => { '!=' => 'terminated' },
'provisioning_voip_subscriber.is_pbx_group' => 0,
}, {
join => 'provisioning_voip_subscriber',
order_by => [qw/username/],
alias => 'me',
from => [
{ 'me' => 'billing.voip_subscribers' },
[
{ 'provisioning_voip_subscriber' => 'provisioning.voip_subscribers', '-join_type' => 'left' },
[
{ 'provisioning_voip_subscriber.uuid' => { -ident => 'me.uuid' } },
],
],
[
{ 'attribute' => 'provisioning.voip_preferences', '-join_type' => 'left' },
[
{
'-and' => [
{
'attribute.attribute' => { '-value' => 'display_name'} ,
},
],
},
],
],
[
{ 'voip_usr_preferences' => 'provisioning.voip_usr_preferences', '-join_type' => 'left' },
[
{
'-and' => [
{
'voip_usr_preferences.attribute_id' => { '-ident' => 'attribute.id'} ,
'voip_usr_preferences.subscriber_id' => { -ident => 'provisioning_voip_subscriber.id' }
},
],
},
],
],
],
'+select' => [\'ifnull(voip_usr_preferences.value, me.username)'],
'+as' => ['username_combined'],
order_by => [\'ifnull(voip_usr_preferences.value, me.username)','pbx_extension'],
});
if($c->config->{features}->{cloudpbx}) {
# we maintain the display names in a separate hash identified by
# subscriber uuid, because if we put the display name in the
# above query, we'll implicitly filter subscribers without a
# display name due to the inner join
my $subscriber_display_rs = $c->model('DB')->resultset('voip_subscribers')->search({
contract_id => $contract_id,
status => { '!=' => 'terminated' },
'provisioning_voip_subscriber.is_pbx_group' => 0,
'attribute.attribute' => 'display_name',
}, {
join => { 'provisioning_voip_subscriber' => { 'voip_usr_preferences' => 'attribute' }},
'+select' => ['voip_usr_preferences.value'],
'+as' => ['display_name'],
order_by => [qw/voip_usr_preferences.value pbx_extension/],
});
foreach my $sub ($subscriber_display_rs->all) {
$c->stash->{subscriber_displays}->{$sub->uuid} = $sub->get_column('display_name');
}
$c->stash->{pbx_groups} = NGCP::Panel::Utils::Subscriber::get_pbx_subscribers_rs(
c => $c,
schema => $c->model('DB'),
customer_id => $contract_id,
is_group => 1,
);
$c->stash->{subscribers} = $subscribers_rs->search_rs({'provisioning_voip_subscriber.is_pbx_group' => 0});
if($c->config->{features}->{cloudpbx}) {
$c->stash->{pbx_groups} = $subscribers_rs->search_rs({'provisioning_voip_subscriber.is_pbx_group' => 1});
}
my $field_devs = [ $c->model('DB')->resultset('autoprov_field_devices')->search({

@ -967,10 +967,10 @@ function create_ranges_annotations(id,type,ranges){
'<select class="subselect" name="line.' + linecmt + '.subscriber_id" id="line.' + linecmt + '.subscriber_id">' +
'<option value="0">'+(linekeyCurrent ? '[% c.loc("Subscriber") %]' : '[% c.loc("None") %]' )+'</option>' +
[% FOR sub IN subscribers.all -%]
'<option value="[% sub.provisioning_voip_subscriber.id %]"'+((linekeyCurrent && linekeyCurrent.subid == '[% sub.provisioning_voip_subscriber.id %]')? ' selected="selected"' : '')+'>[% subscriber_displays.${sub.uuid}.defined ? subscriber_displays.${sub.uuid} : sub.username %][% sub.provisioning_voip_subscriber.pbx_extension.defined ? " (" _ sub.provisioning_voip_subscriber.pbx_extension _ ")" : "" %]</option>' +
'<option value="[% sub.provisioning_voip_subscriber.id %]"'+((linekeyCurrent && linekeyCurrent.subid == '[% sub.provisioning_voip_subscriber.id %]')? ' selected="selected"' : '')+'>[% sub.get_column('username_combined') %][% sub.provisioning_voip_subscriber.pbx_extension.defined ? " (" _ sub.provisioning_voip_subscriber.pbx_extension _ ")" : "" %]</option>' +
[% END -%]
[% FOR sub IN pbx_groups.all -%]
'<option value="[% sub.provisioning_voip_subscriber.id %]"'+((linekeyCurrent && linekeyCurrent.subid == '[% sub.provisioning_voip_subscriber.id %]')? ' selected="selected"' : '')+'>[% subscriber_displays.${sub.uuid}.defined ? subscriber_displays.${sub.uuid} : sub.username %][% sub.provisioning_voip_subscriber.pbx_extension.defined ? " (" _ sub.provisioning_voip_subscriber.pbx_extension _ ")" : "" %]</option>' +
'<option value="[% sub.provisioning_voip_subscriber.id %]"'+((linekeyCurrent && linekeyCurrent.subid == '[% sub.provisioning_voip_subscriber.id %]')? ' selected="selected"' : '')+'>[% sub.get_column('username_combined') %][% sub.provisioning_voip_subscriber.pbx_extension.defined ? " (" _ sub.provisioning_voip_subscriber.pbx_extension _ ")" : "" %]</option>' +
[% END -%]
'</select>' +
'<select class="modeselect" name="line.' + linecmt + '.type" id="line.' + linecmt + '.type">' +

Loading…
Cancel
Save