buildBuyResaleTx verifies ticket.status === RESALE before allowing a purchase to be built, but confirmBuyResale performs the on-chain submit and DB update with no such check. If a listing is cancelled or already sold between build and confirm, confirmBuyResale will still reassign ownership and mark the ticket VALID, leaving DB state inconsistent.
Suggested fix: In confirmBuyResale, fetch the ticket first and throw BadRequestException('This ticket is not listed for resale') if ticket.status !== TicketStatus.RESALE, mirroring buildBuyResaleTx.
buildBuyResaleTxverifiesticket.status === RESALEbefore allowing a purchase to be built, butconfirmBuyResaleperforms the on-chain submit and DB update with no such check. If a listing is cancelled or already sold between build and confirm,confirmBuyResalewill still reassign ownership and mark the ticketVALID, leaving DB state inconsistent.Suggested fix: In
confirmBuyResale, fetch the ticket first and throwBadRequestException('This ticket is not listed for resale')ifticket.status !== TicketStatus.RESALE, mirroringbuildBuyResaleTx.