From: erickson Date: Tue, 23 Jun 2009 14:47:05 +0000 (+0000) Subject: added user stage delete. now returning all related objects (addresses, cards, etc... X-Git-Tag: sprint4-merge-nov22~9776 X-Git-Url: https://old-git.evergreen-ils.org/?a=commitdiff_plain;h=8a19f52c857e47171eacc1b203c9551f40b609c7;p=working%2FEvergreen.git added user stage delete. now returning all related objects (addresses, cards, etc.), not just the first one git-svn-id: svn://svn.open-ils.org/ILS/trunk@13444 dcc99617-32d9-48b4-a31d-7c20da2025e4 --- diff --git a/Open-ILS/src/perlmods/OpenILS/Application/Actor/Stage.pm b/Open-ILS/src/perlmods/OpenILS/Application/Actor/Stage.pm index 0bb415f69f..b17ff47a1a 100644 --- a/Open-ILS/src/perlmods/OpenILS/Application/Actor/Stage.pm +++ b/Open-ILS/src/perlmods/OpenILS/Application/Actor/Stage.pm @@ -55,7 +55,7 @@ sub user_stage_by_org { my $e = new_editor(authtoken => $auth); return $e->event unless $e->checkauth; $org_id ||= $e->requestor->ws_ou; - return $e->event unless $e->allowed('VIEW_USER_STAGE', $org_id); + return $e->event unless $e->allowed('VIEW_USER', $org_id); $limit ||= 100; $offset ||= 0; @@ -77,16 +77,56 @@ sub user_stage_by_org { sub flesh_user_stage { my($e, $row_id) = @_; - my $user = $e->retrieve_staging_user_stage($row_id); + my $user = $e->retrieve_staging_user_stage($row_id) or return undef; return { user => $user, - billing_address => $e->search_staging_billing_address_stage({usrname => $user->usrname})->[0], - mailing_address => $e->search_staging_mailing_address_stage({usrname => $user->usrname})->[0], - card => $e->search_staging_card_stage({usrname => $user->usrname})->[0], - statcat => $e->search_staging_statcat_stage({usrname => $user->usrname})->[0], + billing_addresses => $e->search_staging_billing_address_stage({usrname => $user->usrname}), + mailing_addresses => $e->search_staging_mailing_address_stage({usrname => $user->usrname}), + cards => $e->search_staging_card_stage({usrname => $user->usrname}), + statcats => $e->search_staging_statcat_stage({usrname => $user->usrname}) }; } + + +__PACKAGE__->register_method ( + method => 'delete_user_stage', + api_name => 'open-ils.actor.user.stage.delete', +); + +sub delete_user_stage { + my($self, $conn, $auth, $row_id) = @_; + + my $e = new_editor(authtoken => $auth, xact => 1); + return $e->die_event unless $e->checkauth; + my $data = flesh_user_stage($e, $row_id) or return $e->die_event; + + return $e->die_event unless $e->allowed('UPDATE_USER', $data->{user}->home_ou); + + $e->delete_staging_user_stage($data->{user}) or return $e->die_event; + + for my $addr (@{$data->{mailing_addresses}}) { + $e->delete_staging_mailing_address_stage($addr) or return $e->die_event; + } + + for my $addr (@{$data->{billing_addresses}}) { + $e->delete_staging_billing_address_stage($addr) or return $e->die_event; + } + + for my $card (@{$data->{cards}}) { + $e->delete_staging_card_stage($card) or return $e->die_event; + } + + for my $statcat (@{$data->{statcats}}) { + $e->delete_staging_statcat_stage($statcat) or return $e->die_event; + } + + $e->commit; + return 1; +} + + + 1;