View | Details | Raw Unified | Return to bug 29765
Collapse All | Expand All

(-)a/Koha/REST/V1/Patrons.pm (-40 / +42 lines)
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
- 

Return to bug 29765