Bug 28375: (QA follow-up) Remove two remaining interface params
[srvgit] / opac / opac-request-article.pl
index dd02b4d..dcf9f21 100755 (executable)
@@ -25,8 +25,12 @@ use C4::Auth qw( get_template_and_user );
 use C4::Output qw( output_html_with_http_headers );
 
 use Koha::Biblios;
+use Koha::Logger;
 use Koha::Patrons;
 
+use Scalar::Util qw( blessed );
+use Try::Tiny;
+
 my $cgi = CGI->new;
 
 my ( $template, $borrowernumber, $cookie ) = get_template_and_user(
@@ -58,27 +62,49 @@ if ( $action eq 'create' ) {
     my $chapters     = $cgi->param('chapters')     || undef;
     my $patron_notes = $cgi->param('patron_notes') || undef;
     my $format       = $cgi->param('format')       || undef;
+    my $toc_request  = $cgi->param('toc_request');
+
+
+    my $success;
 
-    my $ar = Koha::ArticleRequest->new(
-        {
-            borrowernumber => $borrowernumber,
-            biblionumber   => $biblionumber,
-            branchcode     => $branchcode,
-            itemnumber     => $itemnumber,
-            title          => $title,
-            author         => $author,
-            volume         => $volume,
-            issue          => $issue,
-            date           => $date,
-            pages          => $pages,
-            chapters       => $chapters,
-            patron_notes   => $patron_notes,
-            format         => $format,
+    try {
+        my $ar = Koha::ArticleRequest->new(
+            {
+                borrowernumber => $borrowernumber,
+                biblionumber   => $biblionumber,
+                branchcode     => $branchcode,
+                itemnumber     => $itemnumber,
+                title          => $title,
+                author         => $author,
+                volume         => $volume,
+                issue          => $issue,
+                date           => $date,
+                pages          => $pages,
+                chapters       => $chapters,
+                patron_notes   => $patron_notes,
+                format         => $format,
+                toc_request    => $toc_request ? 1 : 0,
+            }
+        )->request;
+        $success = 1;
+    } catch {
+        if ( blessed $_ and $_->isa('Koha::Exceptions::ArticleRequest::LimitReached') ) {
+            $template->param(
+                error_message => 'article_request_limit_reached'
+            );
         }
-    )->store();
+        else {
+            Koha::Logger->get->debug("Unhandled exception when placing an article request ($_)");
+            $template->param(
+                error_message => 'article_request_unhandled_exception'
+            );
+        }
+    };
 
-    print $cgi->redirect("/cgi-bin/koha/opac-user.pl#opac-user-article-requests");
-    exit;
+    if ( $success ) {
+        print $cgi->redirect("/cgi-bin/koha/opac-user.pl#opac-user-article-requests");
+        exit;
+    }
 # Should we redirect?
 }
 elsif ( !$action && C4::Context->preference('ArticleRequestsOpacHostRedirection') ) {
@@ -96,6 +122,15 @@ elsif ( !$action && C4::Context->preference('ArticleRequestsOpacHostRedirection'
 
 my $patron = Koha::Patrons->find($borrowernumber);
 
+if(!$patron->can_request_article) {
+    $template->param(
+        error_message => 'article_request_limit_reached'
+    );
+}
+
+$template->param( article_request_fee => $patron->article_request_fee )
+  if $action ne 'create';
+
 $template->param(
     biblio => $biblio,
     patron => $patron,