| 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 | -  |  |  |