Bug 29018: Make DELETE /patrons/:patron_id check things
When the route was implemented, the checks were overlooked. This patch adds checks for: - Guarantees - Debts - Current checkouts Any of those will block deletion, as it should. To test: 1. Apply the regression tests patch 2. Run: $ kshell k$ prove t/db_dependent/api/v1/patrons.t => FAIL: Tests fail, the route misses checks 3. Apply this patch 4. Repeat 2 => SUCCESS: Tests pass! The three conditions prevent deletion! 5. Sign off :-D Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io> Signed-off-by: David Nind <david@davidnind.com> Signed-off-by: Jonathan Druart <jonathan.druart@bugs.koha-community.org> Signed-off-by: Andrew Fuerste-Henry <andrew@bywatersolutions.com>
This commit is contained in:
parent
493db07948
commit
4948faacc0
|
|
@ -331,10 +331,39 @@ sub delete {
|
|||
|
||||
return try {
|
||||
|
||||
$patron->delete;
|
||||
return $c->render(
|
||||
status => 204,
|
||||
openapi => q{}
|
||||
if ( $patron->checkouts->count > 0 ) {
|
||||
return $c->render(
|
||||
status => 409,
|
||||
openapi => { error => 'Pending checkouts prevent deletion' }
|
||||
);
|
||||
}
|
||||
|
||||
my $account = $patron->account;
|
||||
|
||||
if ( $account->outstanding_debits->total_outstanding > 0 ) {
|
||||
return $c->render(
|
||||
status => 409,
|
||||
openapi => { error => 'Pending debts prevent deletion' }
|
||||
);
|
||||
}
|
||||
|
||||
if ( $patron->guarantee_relationships->count > 0 ) {
|
||||
return $c->render(
|
||||
status => 409,
|
||||
openapi => { error => 'Patron is a guarantor and it prevents deletion' }
|
||||
);
|
||||
}
|
||||
|
||||
$patron->_result->result_source->schema->txn_do(
|
||||
sub {
|
||||
$patron->move_to_deleted;
|
||||
$patron->delete;
|
||||
|
||||
return $c->render(
|
||||
status => 204,
|
||||
openapi => q{}
|
||||
);
|
||||
}
|
||||
);
|
||||
} catch {
|
||||
if ( blessed $_ && $_->isa('Koha::Exceptions::Patron::FailedDeleteAnonymousPatron') ) {
|
||||
|
|
|
|||
|
|
@ -700,6 +700,18 @@
|
|||
"schema": {
|
||||
"$ref": "../definitions.json#/error"
|
||||
}
|
||||
},
|
||||
"409": {
|
||||
"description": "Conflict in updating resource",
|
||||
"schema": {
|
||||
"$ref": "../definitions.json#/error"
|
||||
}
|
||||
},
|
||||
"500": {
|
||||
"description": "Internal server error",
|
||||
"schema": {
|
||||
"$ref": "../definitions.json#/error"
|
||||
}
|
||||
}
|
||||
},
|
||||
"x-koha-authorization": {
|
||||
|
|
|
|||
Loading…
Reference in New Issue