Bug 24287: DBRev 19.12.00.014
[srvgit] / Koha / CirculationRules.pm
index 054eb00..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,14 +47,20 @@ 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;
 
-    $search_params->{categorycode} = defined $categorycode ? { 'in' => [ $categorycode, '*' ] } : undef;
-    $search_params->{itemtype}     = defined $itemtype     ? { 'in' => [ $itemtype,     '*' ] } : undef;
-    $search_params->{branchcode}   = defined $branchcode   ? { 'in' => [ $branchcode,   '*' ] } : undef;
+    $search_params->{categorycode} = defined $categorycode ? [ $categorycode, undef ] : undef;
+    $search_params->{itemtype}     = defined $itemtype     ? [ $itemtype, undef ] : undef;
+    $search_params->{branchcode}   = defined $branchcode   ? [ $branchcode,   undef ] : undef;
 
     my $rule = $self->search(
         $search_params,
@@ -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};
@@ -94,6 +94,9 @@ sub set_rule {
     my $rule_name    = $params->{rule_name};
     my $rule_value   = $params->{rule_value};
 
+    for my $v ( $branchcode, $categorycode, $itemtype ) {
+        $v = undef if $v and $v eq '*';
+    }
     my $rule = $self->search(
         {
             rule_name    => $rule_name,
@@ -142,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