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 2 years ago
parent 3650b813b4
commit 2a0b8dcc1e

@ -140,6 +140,19 @@ sub POST :Allow {
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 {
$item = $c->model('DB')->resultset('ncos_levels')->create($resource);
} catch($e) {

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

@ -30,6 +30,10 @@ has_field 'description' => (
required => 0,
);
has_field 'timeset' => (
type => '+NGCP::Panel::Field::TimeSet',
);
has_field 'save' => (
type => 'Submit',
value => 'Save',
@ -40,7 +44,7 @@ has_field 'save' => (
has_block 'fields' => (
tag => 'div',
class => [qw/modal-body/],
render_list => [qw/level mode description/],
render_list => [qw/level mode description timeset/],
);
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;
# vim: set tabstop=4 expandtab:

@ -88,6 +88,19 @@ sub update_item {
$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({
reseller_id => $resource->{reseller_id},
level => $resource->{level},

Loading…
Cancel
Save