1 package Koha::REST::V1::ERM::EHoldings::Packages::Manual;
5 use Mojo::Base 'Mojolicious::Controller';
7 use Koha::ERM::EHoldings::Packages;
9 use Scalar::Util qw( blessed );
10 use Try::Tiny qw( catch try );
13 my $c = shift->openapi->valid_input or return;
15 my $packages_set = Koha::ERM::EHoldings::Packages->new;
16 my $packages = $c->objects->search($packages_set);
17 return $c->render( status => 200, openapi => $packages );
20 $c->unhandled_exception($_);
25 my $c = shift->openapi->valid_input or return;
28 my $package_id = $c->validation->param('package_id');
29 my $package = $c->objects->find( Koha::ERM::EHoldings::Packages->search,
35 openapi => { error => "Package not found" }
45 $c->unhandled_exception($_);
51 Controller function that handles adding a new Koha::ERM::EHoldings::Package object
56 my $c = shift->openapi->valid_input or return;
59 Koha::Database->new->schema->txn_do(
62 my $body = $c->validation->param('body');
64 my $package_agreements = delete $body->{package_agreements} // [];
66 my $package = Koha::ERM::EHoldings::Package->new_from_api($body)->store;
67 $package->package_agreements($package_agreements);
69 $c->res->headers->location($c->req->url->to_string . '/' . $package->package_id);
72 openapi => $package->to_api
79 my $to_api_mapping = Koha::ERM::EHoldings::Package->new->to_api_mapping;
82 if ( $_->isa('Koha::Exceptions::Object::DuplicateID') ) {
85 openapi => { error => $_->error, conflict => $_->duplicate_id }
88 elsif ( $_->isa('Koha::Exceptions::Object::FKConstraint') ) {
93 . $to_api_mapping->{ $_->broken_fk }
98 elsif ( $_->isa('Koha::Exceptions::BadParameter') ) {
103 . $to_api_mapping->{ $_->parameter }
110 $c->unhandled_exception($_);
116 Controller function that handles updating a Koha::ERM::EHoldings::Package object
121 my $c = shift->openapi->valid_input or return;
123 my $package_id = $c->validation->param('package_id');
124 my $package = Koha::ERM::EHoldings::Packages->find( $package_id );
129 openapi => { error => "Package not found" }
134 Koha::Database->new->schema->txn_do(
137 my $body = $c->validation->param('body');
139 my $package_agreements = delete $body->{package_agreements} // [];
141 $package->set_from_api($body)->store;
142 $package->package_agreements($package_agreements);
144 $c->res->headers->location($c->req->url->to_string . '/' . $package->package_id);
147 openapi => $package->to_api
153 my $to_api_mapping = Koha::ERM::EHoldings::Package->new->to_api_mapping;
156 if ( $_->isa('Koha::Exceptions::Object::FKConstraint') ) {
161 . $to_api_mapping->{ $_->broken_fk }
166 elsif ( $_->isa('Koha::Exceptions::BadParameter') ) {
171 . $to_api_mapping->{ $_->parameter }
178 $c->unhandled_exception($_);
187 my $c = shift->openapi->valid_input or return;
189 my $package = Koha::ERM::EHoldings::Packages->find( $c->validation->param('package_id') );
193 openapi => { error => "Package not found" }
205 $c->unhandled_exception($_);