@ -19,8 +19,6 @@ sub get_form {
my ( $ self , $ c ) = @ _ ;
if ( $ c - > user - > roles eq "subscriber" ) {
return NGCP::Panel::Form:: get ( "NGCP::Panel::Form::CallForward::CFSourceSetSubAPI" , $ c ) ;
} elsif ( $ c - > user - > roles eq "subscriberadmin" ) {
return NGCP::Panel::Form:: get ( "NGCP::Panel::Form::CallForward::CFSourceSetSubAPI" , $ c ) ;
} else {
return NGCP::Panel::Form:: get ( "NGCP::Panel::Form::CallForward::CFSourceSetAPI" , $ c ) ;
}
@ -137,40 +135,13 @@ sub update_item {
resource = > $ resource ,
) ;
if ( ! exists $ resource - > { sources } ) {
$ resource - > { sources } = [] ;
}
if ( ref $ resource - > { sources } ne "ARRAY" ) {
$ self - > error ( $ c , HTTP_UNPROCESSABLE_ENTITY , "Invalid field 'sources'. Must be an array." ) ;
return ;
}
if ( $ c - > user - > roles eq "subscriber" || $ c - > user - > roles eq "subscriberadmin" ) {
$ resource - > { subscriber_id } = $ c - > user - > voip_subscriber - > id ;
}
# elsif($c->user->roles eq "subscriberadmin") {
# $resource->{subscriber_id} //= $c->user->id;
#}
my $ b_subscriber = $ schema - > resultset ( 'voip_subscribers' ) - > find ( $ resource - > { subscriber_id } ) ;
unless ( $ b_subscriber ) {
$ self - > error ( $ c , HTTP_UNPROCESSABLE_ENTITY , "Invalid 'subscriber_id'." ) ;
return ;
}
my $ subscriber = $ b_subscriber - > provisioning_voip_subscriber ;
unless ( $ subscriber ) {
$ self - > error ( $ c , HTTP_UNPROCESSABLE_ENTITY , "Invalid subscriber." ) ;
last ;
}
#if($c->user->roles eq "subscriberadmin" && $subscriber->account_id != $c->user->account_id) {
# $self->error($c, HTTP_UNPROCESSABLE_ENTITY, "Invalid subscriber.");
# last;
#}
return unless $ self - > process_form_resource ( $ c , $ item , $ old_resource , $ resource , $ form ) ;
return unless $ self - > check_duplicate ( $ c , $ item , $ old_resource , $ resource , $ form ) ;
return unless $ self - > check_resource ( $ c , $ item , $ old_resource , $ resource , $ form ) ;
my $ b_subscriber = $ schema - > resultset ( 'voip_subscribers' ) - > find ( $ resource - > { subscriber_id } ) ;
my $ subscriber = $ b_subscriber - > provisioning_voip_subscriber ;
try {
$ item - > update ( {
name = > $ resource - > { name } ,
@ -196,7 +167,9 @@ sub update_item {
sub process_form_resource {
my ( $ self , $ c , $ item , $ old_resource , $ resource , $ form , $ process_extras ) = @ _ ;
if ( $ c - > user - > roles eq "subscriberadmin" || $ c - > user - > roles eq "subscriber" ) {
if ( $ c - > user - > roles eq "subscriberadmin" ) {
$ resource - > { subscriber_id } || = $ c - > user - > voip_subscriber - > id ;
} elsif ( $ c - > user - > roles eq "subscriber" ) {
$ resource - > { subscriber_id } = $ c - > user - > voip_subscriber - > id ;
} elsif ( ! defined $ resource - > { subscriber_id } ) {
$ self - > error ( $ c , HTTP_UNPROCESSABLE_ENTITY , "Missing mandatory field 'subscriber_id'" ) ;
@ -211,9 +184,20 @@ sub check_resource {
my $ schema = $ c - > model ( 'DB' ) ;
my $ b_subscriber = $ schema - > resultset ( 'voip_subscribers' ) - > find ( {
id = > $ resource - > { subscriber_id } ,
} ) ;
my $ b_subscriber ;
if ( $ c - > user - > roles eq "subscriberadmin" ) {
my $ customer_id = $ c - > user - > account_id ;
$ b_subscriber = $ schema - > resultset ( 'voip_subscribers' ) - > search ( {
id = > $ resource - > { subscriber_id } ,
contract_id = > $ customer_id ,
} ) - > first ;
} else {
$ b_subscriber = $ schema - > resultset ( 'voip_subscribers' ) - > find ( {
id = > $ resource - > { subscriber_id } ,
} ) ;
}
unless ( $ b_subscriber ) {
$ self - > error ( $ c , HTTP_UNPROCESSABLE_ENTITY , "Invalid 'subscriber_id'." ) ;
return ;