Bug 24287: DBRev 19.12.00.014
[srvgit] / Koha / CirculationRules.pm
index 76dc63d..1294eeb 100644 (file)
@@ -20,15 +20,14 @@ package Koha::CirculationRules;
 
 use Modern::Perl;
 
-use Carp qw(croak);
-
+use Koha::Exceptions;
 use Koha::CirculationRule;
 
 use base qw(Koha::Objects);
 
 =head1 NAME
 
-Koha::IssuingRules - Koha IssuingRule Object set class
+Koha::CirculationRules - Koha CirculationRule Object set class
 
 =head1 API
 
@@ -48,7 +47,13 @@ sub get_effective_rule {
     my $itemtype     = $params->{itemtype};
     my $branchcode   = $params->{branchcode};
 
-    croak q{No rule name passed in!} unless $rule_name;
+    Koha::Exceptions::MissingParameter->throw(
+        "Required parameter 'rule_name' missing")
+      unless $rule_name;
+
+    for my $v ( $branchcode, $categorycode, $itemtype ) {
+        $v = undef if $v and $v eq '*';
+    }
 
     my $search_params;
     $search_params->{rule_name} = $rule_name;
@@ -77,16 +82,11 @@ sub get_effective_rule {
 sub set_rule {
     my ( $self, $params ) = @_;
 
-    croak q{set_rule requires the parameter 'branchcode'!}
-      unless exists $params->{branchcode};
-    croak q{set_rule requires the parameter 'categorycode'!}
-      unless exists $params->{categorycode};
-    croak q{set_rule requires the parameter 'itemtype'!}
-      unless exists $params->{itemtype};
-    croak q{set_rule requires the parameter 'rule_name'!}
-      unless exists $params->{rule_name};
-    croak q{set_rule requires the parameter 'rule_value'!}
-      unless exists $params->{rule_value};
+    for my $mandatory_parameter (qw( branchcode categorycode itemtype rule_name rule_value ) ){
+        Koha::Exceptions::MissingParameter->throw(
+            "Required parameter 'branchcode' missing")
+          unless exists $params->{$mandatory_parameter};
+    }
 
     my $branchcode   = $params->{branchcode};
     my $categorycode = $params->{categorycode};
@@ -145,17 +145,36 @@ sub set_rules {
     my $itemtype     = $params->{itemtype};
     my $rules        = $params->{rules};
 
-    foreach my $rule (@$rules) {
-        Koha::CirculationRules->set_rule(
+    my $rule_objects = [];
+    while ( my ( $rule_name, $rule_value ) = each %$rules ) {
+        my $rule_object = Koha::CirculationRules->set_rule(
             {
                 branchcode   => $branchcode,
                 categorycode => $categorycode,
                 itemtype     => $itemtype,
-                rule_name    => $rule->{rule_name},
-                rule_value   => $rule->{rule_value},
+                rule_name    => $rule_name,
+                rule_value   => $rule_value,
             }
         );
+        push( @$rule_objects, $rule_object );
+    }
+
+    return $rule_objects;
+}
+
+=head3 delete
+
+Delete a set of circulation rules, needed for cleaning up when deleting issuingrules
+
+=cut
+
+sub delete {
+    my ( $self ) = @_;
+
+    while ( my $rule = $self->next ){
+        $rule->delete;
     }
+
 }
 
 =head3 type