use CGI qw ( -utf8 );
-use C4::Auth;
-use C4::Output;
+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(
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') ) {
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,