MT#56432 add time set support to ncos levels

* add NCOS Levels UI Time Set support
* add NCOS Levels API Time Set support

Change-Id: I03201c09462f0f0ceff39da271bcf8ca1fc797b8
mr11.3
Kirill Solomko 3 years ago
parent 3650b813b4
commit 2a0b8dcc1e

@ -140,6 +140,19 @@ sub POST :Allow {
last; last;
} }
if ($resource->{time_set_id}) {
my $time_set = $c->model('DB')->resultset('voip_time_sets')->find({
id => $resource->{time_set_id},
reseller_id => $c->user->reseller_id
});
if (!$time_set) {
my $err = "Time set with id '$resource->{time_set_id}' does not exist or does not belong to this reseller";
$c->log->error($err);
$self->error($c, HTTP_UNPROCESSABLE_ENTITY, $err);
last;
}
}
try { try {
$item = $c->model('DB')->resultset('ncos_levels')->create($resource); $item = $c->model('DB')->resultset('ncos_levels')->create($resource);
} catch($e) { } catch($e) {

@ -29,6 +29,7 @@ sub levels_list :Chained('/') :PathPart('ncos') :CaptureArgs(0) {
{ name => 'reseller.name', search => 1, title => $c->loc('Reseller') }, { name => 'reseller.name', search => 1, title => $c->loc('Reseller') },
{ name => 'level', search => 1, title => $c->loc('Level Name') }, { name => 'level', search => 1, title => $c->loc('Level Name') },
{ name => 'mode', search => 1, title => $c->loc('Mode') }, { name => 'mode', search => 1, title => $c->loc('Mode') },
{ name => 'timeset.name', search => 1, title => $c->loc('Timeset') },
{ name => 'description', search => 1, title => $c->loc('Description') }, { name => 'description', search => 1, title => $c->loc('Description') },
]); ]);
@ -37,14 +38,20 @@ sub levels_list :Chained('/') :PathPart('ncos') :CaptureArgs(0) {
sub _levels_resultset_admin { sub _levels_resultset_admin {
my ($self, $c) = @_; my ($self, $c) = @_;
my $rs = $c->model('DB')->resultset('ncos_levels'); my $rs = $c->model('DB')->resultset('ncos_levels')->search({
},{
join => 'timeset'
});
return $rs; return $rs;
} }
sub _levels_resultset_reseller { sub _levels_resultset_reseller {
my ($self, $c) = @_; my ($self, $c) = @_;
my $rs = $c->model('DB')->resultset('admins') my $rs = $c->model('DB')->resultset('ncos_levels')->search({
->find($c->user->id)->reseller->ncos_levels; reseller_id => $c->user->reseller_id
},{
join => 'timeset'
});
return $rs; return $rs;
} }
@ -92,6 +99,7 @@ sub edit :Chained('base') :PathPart('edit') {
my $level = $c->stash->{level_result}; my $level = $c->stash->{level_result};
my $params = { $level->get_inflated_columns }; my $params = { $level->get_inflated_columns };
$params->{reseller}{id} = delete $params->{reseller_id}; $params->{reseller}{id} = delete $params->{reseller_id};
$params->{timeset}{id} = delete $params->{time_set_id};
$params = merge($params, $c->session->{created_objects}); $params = merge($params, $c->session->{created_objects});
if($c->user->is_superuser) { if($c->user->is_superuser) {
$form = NGCP::Panel::Form::get("NGCP::Panel::Form::NCOS::AdminLevel", $c); $form = NGCP::Panel::Form::get("NGCP::Panel::Form::NCOS::AdminLevel", $c);
@ -108,6 +116,7 @@ sub edit :Chained('base') :PathPart('edit') {
form => $form, form => $form,
fields => { fields => {
'reseller.create' => $c->uri_for('/reseller/create'), 'reseller.create' => $c->uri_for('/reseller/create'),
'timeset.create' => $c->uri_for('/timeset/create'),
}, },
back_uri => $c->req->uri, back_uri => $c->req->uri,
); );
@ -115,6 +124,8 @@ sub edit :Chained('base') :PathPart('edit') {
try { try {
$form->values->{reseller_id} = $form->values->{reseller}{id}; $form->values->{reseller_id} = $form->values->{reseller}{id};
delete $form->values->{reseller}; delete $form->values->{reseller};
$form->values->{time_set_id} = $form->values->{timeset}{id};
delete $form->values->{reseller};
$level->update($form->values); $level->update($form->values);
delete $c->session->{created_objects}->{reseller}; delete $c->session->{created_objects}->{reseller};
NGCP::Panel::Utils::Message::info( NGCP::Panel::Utils::Message::info(
@ -192,6 +203,7 @@ sub create :Chained('levels_list') :PathPart('create') :Args(0) {
form => $form, form => $form,
fields => { fields => {
'reseller.create' => $c->uri_for('/reseller/create'), 'reseller.create' => $c->uri_for('/reseller/create'),
'timeset.create' => $c->uri_for('/timeset/create'),
}, },
back_uri => $c->req->uri, back_uri => $c->req->uri,
); );
@ -201,6 +213,7 @@ sub create :Chained('levels_list') :PathPart('create') :Args(0) {
unless($c->user->is_superuser) { unless($c->user->is_superuser) {
$form->values->{reseller}{id} = $c->user->reseller_id; $form->values->{reseller}{id} = $c->user->reseller_id;
} }
$form->values->{time_set_id} = $form->values->{timeset}{id};
$level->create($form->values); $level->create($form->values);
delete $c->session->{created_objects}->{reseller}; delete $c->session->{created_objects}->{reseller};
NGCP::Panel::Utils::Message::info( NGCP::Panel::Utils::Message::info(

@ -28,7 +28,7 @@ sub group_list :Chained('/') :PathPart('peering') :CaptureArgs(0) {
{ name => 'name', search => 1, title => $c->loc('Name') }, { name => 'name', search => 1, title => $c->loc('Name') },
{ name => 'priority', search => 1, title => $c->loc('Priority') }, { name => 'priority', search => 1, title => $c->loc('Priority') },
{ name => 'description', search => 1, title => $c->loc('Description') }, { name => 'description', search => 1, title => $c->loc('Description') },
{ name => 'time_set.name', search => 0, title => $c->loc('Time Set') }, { name => 'timeset.name', search => 0, title => $c->loc('Time Set') },
]); ]);
$c->stash(template => 'peering/list.tt'); $c->stash(template => 'peering/list.tt');

@ -30,6 +30,10 @@ has_field 'description' => (
required => 0, required => 0,
); );
has_field 'timeset' => (
type => '+NGCP::Panel::Field::TimeSet',
);
has_field 'save' => ( has_field 'save' => (
type => 'Submit', type => 'Submit',
value => 'Save', value => 'Save',
@ -40,7 +44,7 @@ has_field 'save' => (
has_block 'fields' => ( has_block 'fields' => (
tag => 'div', tag => 'div',
class => [qw/modal-body/], class => [qw/modal-body/],
render_list => [qw/level mode description/], render_list => [qw/level mode description timeset/],
); );
has_block 'actions' => ( has_block 'actions' => (

@ -60,6 +60,15 @@ has_field 'intra_pbx' => (
}, },
); );
has_field 'time_set_id' => (
type => 'PosInteger',
required => 0,
element_attr => {
rel => ['tooltip'],
title => ['The timeset id to use for this level']
},
);
1; 1;
# vim: set tabstop=4 expandtab: # vim: set tabstop=4 expandtab:

@ -88,6 +88,19 @@ sub update_item {
$resource->{reseller_id} = $c->user->reseller_id; $resource->{reseller_id} = $c->user->reseller_id;
} }
if ($resource->{time_set_id}) {
my $time_set = $c->model('DB')->resultset('voip_time_sets')->find({
id => $resource->{time_set_id},
reseller_id => $c->user->reseller_id
});
if (!$time_set) {
my $err = "Time set with id '$resource->{time_set_id}' does not exist or does not belong to this reseller";
$c->log->error($err);
$self->error($c, HTTP_UNPROCESSABLE_ENTITY, $err);
return;
}
}
my $dup_item = $c->model('DB')->resultset('ncos_levels')->find({ my $dup_item = $c->model('DB')->resultset('ncos_levels')->find({
reseller_id => $resource->{reseller_id}, reseller_id => $resource->{reseller_id},
level => $resource->{level}, level => $resource->{level},

Loading…
Cancel
Save