teach ML about staged user settings
authorGalen Charlton <gmc@esilibrary.com>
Wed, 3 Aug 2016 19:38:14 +0000 (15:38 -0400)
committerGalen Charlton <gmc@esilibrary.com>
Wed, 3 Aug 2016 19:38:14 +0000 (15:38 -0400)
Signed-off-by: Galen Charlton <gmc@esilibrary.com>
Open-ILS/src/perlmods/lib/OpenILS/Application/Actor/Stage.pm

index 8f094b7..c8be321 100644 (file)
@@ -13,7 +13,8 @@ __PACKAGE__->register_method (
     api_name    => 'open-ils.actor.user.stage.create',
     signature => {
         desc => q/
-            Creates a new pending user account including addresses and statcats.
+            Creates a new pending user account including addresses, statcats, and
+            settings.
             Users are added to staging tables pending staff review.
         /,
         params => [
@@ -21,6 +22,7 @@ __PACKAGE__->register_method (
             {desc => 'Mailing address.  Optional', type => 'object', class => 'stgma'},
             {desc => 'Billing address.  Optional', type => 'object', class => 'stgba'},
             {desc => 'Statcats.  Optional.  This is an array of "stgsc" objects', type => 'array'},
+            {desc => 'Settings.  Optional.  This is an array of "stgs" objects', type => 'array'},
         ],
         return => {
             desc => 'username on success, Event on error',
@@ -31,7 +33,7 @@ __PACKAGE__->register_method (
 );
 
 sub create_user_stage {
-    my($self, $conn, $user, $mail_addr, $bill_addr, $statcats) = @_; # more?
+    my($self, $conn, $user, $mail_addr, $bill_addr, $statcats, $settings) = @_; # more?
 
     return OpenILS::Event->new('BAD_PARAMS') unless $user;
     return 0 unless $U->ou_ancestor_setting_value($user->home_ou, 'opac.allow_pending_user');
@@ -64,6 +66,13 @@ sub create_user_stage {
         }
     }
 
+    if($settings) {
+        foreach (@$settings) {
+            $_->usrname($uname);
+            $e->create_staging_setting_stage($_) or return $e->die_event;
+        }
+    }
+
     $e->commit;
     $conn->respond_complete($uname);
 
@@ -111,7 +120,8 @@ sub flesh_user_stage {
         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})
+        statcats => $e->search_staging_statcat_stage({usrname => $user->usrname}),
+        settings => $e->search_staging_setting_stage({usrname => $user->usrname}),
     };
 }
 
@@ -171,6 +181,10 @@ sub delete_user_stage {
         $e->delete_staging_statcat_stage($statcat) or return $e->die_event;
     }
 
+    for my $setting (@{$data->{settings}}) {
+        $e->delete_staging_setting_stage($setting) or return $e->die_event;
+    }
+
     $e->commit;
     return 1;
 }