|
Lines 333-378
sub delete {
Link Here
|
| 333 |
|
333 |
|
| 334 |
my $safe_to_delete = $patron->safe_to_delete; |
334 |
my $safe_to_delete = $patron->safe_to_delete; |
| 335 |
|
335 |
|
| 336 |
if ( $safe_to_delete eq 'ok' ) { |
336 |
if ( !$safe_to_delete ) { |
| 337 |
$patron->_result->result_source->schema->txn_do( |
337 |
# Pick the first error, if any |
| 338 |
sub { |
338 |
my ( $error ) = grep { $_->type eq 'error' } @{ $safe_to_delete->messages }; |
| 339 |
$patron->move_to_deleted; |
339 |
unless ( $error ) { |
| 340 |
$patron->delete; |
340 |
Koha::Exceptions::Exception->throw('Koha::Patron->safe_to_delete returned false but carried no error message'); |
| 341 |
|
341 |
} |
| 342 |
return $c->render( |
342 |
|
| 343 |
status => 204, |
343 |
if ( $error->message eq 'has_checkouts' ) { |
| 344 |
openapi => q{} |
344 |
return $c->render( |
| 345 |
); |
345 |
status => 409, |
| 346 |
} |
346 |
openapi => { error => 'Pending checkouts prevent deletion' } |
| 347 |
); |
347 |
); |
| 348 |
} |
348 |
} elsif ( $error->message eq 'has_debt' ) { |
| 349 |
elsif ( $safe_to_delete eq 'has_checkouts' ) { |
349 |
return $c->render( |
| 350 |
return $c->render( |
350 |
status => 409, |
| 351 |
status => 409, |
351 |
openapi => { error => 'Pending debts prevent deletion' } |
| 352 |
openapi => { error => 'Pending checkouts prevent deletion' } |
352 |
); |
| 353 |
); |
353 |
} elsif ( $error->message eq 'has_guarantees' ) { |
| 354 |
} |
354 |
return $c->render( |
| 355 |
elsif ( $safe_to_delete eq 'has_debt' ) { |
355 |
status => 409, |
| 356 |
return $c->render( |
356 |
openapi => { error => 'Patron is a guarantor and it prevents deletion' } |
| 357 |
status => 409, |
357 |
); |
| 358 |
openapi => { error => 'Pending debts prevent deletion' } |
358 |
} elsif ( $error->message eq 'is_anonymous_patron' ) { |
| 359 |
); |
359 |
return $c->render( |
| 360 |
} |
360 |
status => 403, |
| 361 |
elsif ( $safe_to_delete eq 'has_guarantees' ) { |
361 |
openapi => { error => 'Anonymous patron cannot be deleted' } |
| 362 |
return $c->render( |
362 |
); |
| 363 |
status => 409, |
363 |
} else { |
| 364 |
openapi => { error => 'Patron is a guarantor and it prevents deletion' } |
364 |
Koha::Exceptions::Exception->throw( 'Koha::Patron->safe_to_delete carried an unexpected message: ' . $error->message ); |
| 365 |
); |
365 |
} |
| 366 |
} |
|
|
| 367 |
elsif ( $safe_to_delete eq 'is_anonymous_patron' ) { |
| 368 |
return $c->render( |
| 369 |
status => 403, |
| 370 |
openapi => { error => 'Anonymous patron cannot be deleted' } |
| 371 |
); |
| 372 |
} |
| 373 |
else { |
| 374 |
Koha::Exceptions::Exception->throw( "Koha::Patron->safe_to_delete returned an unexpected value: $safe_to_delete" ); |
| 375 |
} |
366 |
} |
|
|
367 |
|
| 368 |
return $patron->_result->result_source->schema->txn_do( |
| 369 |
sub { |
| 370 |
$patron->move_to_deleted; |
| 371 |
$patron->delete; |
| 372 |
|
| 373 |
return $c->render( |
| 374 |
status => 204, |
| 375 |
openapi => q{} |
| 376 |
); |
| 377 |
} |
| 378 |
); |
| 376 |
} catch { |
379 |
} catch { |
| 377 |
if ( blessed $_ && $_->isa('Koha::Exceptions::Patron::FailedDeleteAnonymousPatron') ) { |
380 |
if ( blessed $_ && $_->isa('Koha::Exceptions::Patron::FailedDeleteAnonymousPatron') ) { |
| 378 |
return $c->render( |
381 |
return $c->render( |
| 379 |
- |
|
|