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

(-)a/Koha/REST/V1/Patrons.pm (-40 / +44 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
            my $error_messages = grep { $_->type eq 'error' } @{ $safe_to_delete->messages };
338
                sub {
338
            unless ( scalar @$error_messages ) {
339
                    $patron->move_to_deleted;
339
                Koha::Exceptions::Exception->throw('Koha::Patron->safe_to_delete returned false but carried no error message');
340
                    $patron->delete;
340
            }
341
341
342
                    return $c->render(
342
            # pick the first one
343
                        status  => 204,
343
            my $error = $error_messages->[0];
344
                        openapi => q{}
344
345
                    );
345
            if ( $error->message eq 'has_checkouts' ) {
346
                }
346
                return $c->render(
347
            );
347
                    status  => 409,
348
        }
348
                    openapi => { error => 'Pending checkouts prevent deletion' }
349
        elsif ( $safe_to_delete eq 'has_checkouts' ) {
349
                );
350
            return $c->render(
350
            } elsif ( $error->message eq 'has_debt' ) {
351
                status  => 409,
351
                return $c->render(
352
                openapi => { error => 'Pending checkouts prevent deletion' }
352
                    status  => 409,
353
            );
353
                    openapi => { error => 'Pending debts prevent deletion' }
354
        }
354
                );
355
        elsif ( $safe_to_delete eq 'has_debt' ) {
355
            } elsif ( $error->message eq 'has_guarantees' ) {
356
            return $c->render(
356
                return $c->render(
357
                status  => 409,
357
                    status  => 409,
358
                openapi => { error => 'Pending debts prevent deletion' }
358
                    openapi => { error => 'Patron is a guarantor and it prevents deletion' }
359
            );
359
                );
360
        }
360
            } elsif ( $error->message eq 'is_anonymous_patron' ) {
361
        elsif ( $safe_to_delete eq 'has_guarantees' ) {
361
                return $c->render(
362
            return $c->render(
362
                    status  => 403,
363
                status  => 409,
363
                    openapi => { error => 'Anonymous patron cannot be deleted' }
364
                openapi => { error => 'Patron is a guarantor and it prevents deletion' }
364
                );
365
            );
365
            } else {
366
        }
366
                Koha::Exceptions::Exception->throw( 'Koha::Patron->safe_to_delete carried an unexpected message: ' . $error->message );
367
        elsif ( $safe_to_delete eq 'is_anonymous_patron' ) {
367
            }
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
        }
368
        }
369
370
        return $patron->_result->result_source->schema->txn_do(
371
            sub {
372
                $patron->move_to_deleted;
373
                $patron->delete;
374
375
                return $c->render(
376
                    status  => 204,
377
                    openapi => q{}
378
                );
379
            }
380
        );
376
    } catch {
381
    } catch {
377
        if ( blessed $_ && $_->isa('Koha::Exceptions::Patron::FailedDeleteAnonymousPatron') ) {
382
        if ( blessed $_ && $_->isa('Koha::Exceptions::Patron::FailedDeleteAnonymousPatron') ) {
378
            return $c->render(
383
            return $c->render(
379
- 

Return to bug 29765