MT#21401 Fix query for the reseller reminder creation

Change-Id: Ife97c6f8b67e62560e8f7b687b2f073d0d37831f
changes/10/7110/4
Irina Peshinskaya 10 years ago
parent 5c3f35f96e
commit ea507b725a

@ -117,7 +117,7 @@ sub GET :Allow {
$hal->resource({
total_count => $total_count,
});
my $response = HTTP::Response->new(HTTP_OK, undef,
my $response = HTTP::Response->new(HTTP_OK, undef,
HTTP::Headers->new($hal->http_headers(skip_links => 1)), $hal->as_json);
$c->response->headers($response->headers);
$c->response->body($response->content);
@ -151,7 +151,7 @@ sub POST :Allow {
my $guard = $c->model('DB')->txn_scope_guard;
{
my $resource = $self->get_valid_post_data(
c => $c,
c => $c,
media_type => 'application/json',
);
last unless $resource;
@ -163,29 +163,11 @@ sub POST :Allow {
form => $form,
exceptions => [ "subscriber_id" ],
);
if($c->user->roles eq "admin") {
} elsif($c->user->roles eq "reseller") {
}
my $sub_rs = $c->model('DB')->resultset('voip_subscribers')->search({
id => $resource->{subscriber_id},
});
if($c->user->roles eq "reseller") {
$sub_rs = $sub_rs->search({
'contact.reseller_id' => $c->user->reseller_id,
},{
join => { contract => 'contact' },
});
}
my $sub = $sub_rs->first;
unless($sub && $sub->provisioning_voip_subscriber) {
$c->log->error("invalid subscriber_id '$$resource{subscriber_id}'"); # TODO: user, message, trace, ...
$self->error($c, HTTP_UNPROCESSABLE_ENTITY, "Subscriber does not exist");
last;
}
my $sub = $self->get_subscriber_by_id($c, $resource->{subscriber_id} );
return unless $sub;
$resource->{subscriber_id} = $sub->provisioning_voip_subscriber->id;
my $item;
$item = $c->model('DB')->resultset('voip_reminder')->find({
subscriber_id => $resource->{subscriber_id},
@ -203,7 +185,7 @@ sub POST :Allow {
$self->error($c, HTTP_INTERNAL_SERVER_ERROR, "Failed to create reminder.");
last;
}
last unless $self->add_create_journal_item_hal($c,sub {
my $self = shift;
my ($c) = @_;

@ -94,23 +94,9 @@ sub update_item {
resource => $resource,
exceptions => [ "subscriber_id" ],
);
my $sub = $self->get_subscriber_by_id($c, $resource->{subscriber_id} );
return unless $sub;
my $sub_rs = $c->model('DB')->resultset('voip_subscribers')->search({
'me.id' => $resource->{subscriber_id},
});
if($c->user->roles eq "reseller") {
$sub_rs = $sub_rs->search({
'contact.reseller_id' => $c->user->reseller_id,
},{
join => { contract => 'contact' },
});
}
my $sub = $sub_rs->first;
unless($sub && $sub->provisioning_voip_subscriber) {
$c->log->error("invalid subscriber_id '$$resource{subscriber_id}'"); # TODO: user, message, trace, ...
$self->error($c, HTTP_UNPROCESSABLE_ENTITY, "Subscriber does not exist");
return;
}
$resource->{subscriber_id} = $sub->provisioning_voip_subscriber->id;
my $dup = $c->model('DB')->resultset('voip_reminder')->search({
@ -128,5 +114,26 @@ sub update_item {
return $item;
}
sub get_subscriber_by_id{
my ($self, $c, $subscriber_id) = @_;
my $sub_rs = $c->model('DB')->resultset('voip_subscribers')->search({
'me.id' => $subscriber_id,
});
if($c->user->roles eq "reseller") {
$sub_rs = $sub_rs->search({
'contact.reseller_id' => $c->user->reseller_id,
},{
join => { contract => 'contact' },
});
}
my $sub = $sub_rs->first;
unless($sub && $sub->provisioning_voip_subscriber) {
$c->log->error("invalid subscriber_id '$subscriber_id'"); # TODO: user, message, trace, ...
$self->error($c, HTTP_UNPROCESSABLE_ENTITY, "Subscriber does not exist");
return;
}
return $sub;
}
1;
# vim: set tabstop=4 expandtab:

@ -0,0 +1,38 @@
use strict;
use Test::Collection;
use Test::FakeData;
use Test::More;
use Data::Dumper;
#use NGCP::Panel::Utils::Subscriber;
my $test_machine = Test::Collection->new(
name => 'reminders',
);
my $fake_data = Test::FakeData->new;
$test_machine->methods->{collection}->{allowed} = {map {$_ => 1} qw(GET HEAD OPTIONS POST)};
$test_machine->methods->{item}->{allowed} = {map {$_ => 1} qw(GET HEAD OPTIONS PUT PATCH DELETE)};
$fake_data->set_data_from_script({
'reminders' => {
'data' => {
subscriber_id => sub { return shift->get_id('subscribers',@_); },
recur => 'weekdays',#never' (only once)|'weekdays' (on weekdays)|'always' (everyday)
'time' => '14:00',
},
'query' => ['subscriber_id'],
},
});
$test_machine->DATA_ITEM_STORE($fake_data->process('reminders'));
$test_machine->form_data_item();
$test_machine->check_create_correct( 1, );
$test_machine->check_get2put();
$test_machine->check_bundle();
$test_machine->clear_test_data_all();#fake data aren't registered in this test machine, so they will stay.
done_testing;
# vim: set tabstop=4 expandtab:
Loading…
Cancel
Save