Showing AI reviews for tenant-service
Project AI Score ?
67%
Quality Avg ?
69%
Security Avg ?
64%
Reviews ?
143

Review Result ?

solutionbowl/tenant-service · c3b83034
The commit adds logic for settling multi-bets including calculating total return, profit, and crediting user's wallet, with logging for debugging. However, there's unclear validation and risk of possible calculation or logic errors due to multiplicative odds addition, and lack of error handling for database operations. Also, the code uses soft-typed numerical conversions without input verification. Logging sensitive data might pose risk in production.
Quality ?
60%
Security ?
50%
Business Value ?
75%
Maintainability ?
60%
Issues & Suggested Fixes ?
1AI detects the issue
2Shows file, line, or evidence
3Suggests the fix to apply
Incorrect Odds Calculation With Addition I...
Where src/controllers/horseracing/result.controller.js:662
Issue / Evidence incorrect odds calculation with addition instead of multiplication
Suggested Fix revise totalReturn calculation to properly multiply odds
Missing Validation
Where src/controllers/horseracing/result.controller.js:658
Issue / Evidence no validation before converting bet_amount to Number
Suggested Fix add input validation and error handling
Lack Of Error Handling On Wallet Credit Da...
Where src/controllers/horseracing/result.controller.js:693
Issue / Evidence lack of error handling on wallet credit database update
Suggested Fix implement error handling and rollback mechanisms
Console.log May Expose Sensitive User Or B...
Where src/controllers/horseracing/result.controller.js:669
Issue / Evidence console.log may expose sensitive user or bet info in production
Suggested Fix replace with secure logging or remove
Vague And Insufficient Detail On Changes A...
Where commit message
Issue / Evidence vague and insufficient detail on changes and effects
Suggested Fix write a more descriptive message explaining intent, changes, and possible impact
Code Change Preview · src/controllers/horseracing/result.controller.js ?
Removed / Before Commit
- diff --git a/src/controllers/horseracing/result.controller.js b/src/controllers/horseracing/result.controller.js
- index 37d2707..de8466d 100644
- const axios = require("axios");
- 
- async function updateImmediateParentBalances(userPLRows = []) {
-   const UPLINE_BALANCE_ROLES = new Set(["MASTER", "SUPER_ADMIN", "OWNER", "ADMIN"]);
- const totalsByUser = new Map();
- 
- for (const row of userPLRows) {
- 
- } else if (allSettled && allWon) {
- // âœ
- ALL LEGS WON → MULTI-BET WON
-         const payout = bet.return_amount; // Already calculated at placement
- 
-         console.log(`[Multi-bet Settlement] 🎉 Bet ${bet._id} WON - all ${bet.total_legs} legs won! Payout: ${payout}`);
- 
- await Bet.updateOne(
Added / After Commit
+ diff --git a/src/controllers/horseracing/result.controller.js b/src/controllers/horseracing/result.controller.js
+ index 37d2707..de8466d 100644
+ const axios = require("axios");
+ 
+ async function updateImmediateParentBalances(userPLRows = []) {
+   const UPLINE_BALANCE_ROLES = new Set(["MASTER", "SUPER_ADMIN"]);
+ const totalsByUser = new Map();
+ 
+ for (const row of userPLRows) {
+ 
+ } else if (allSettled && allWon) {
+ // âœ
+ ALL LEGS WON → MULTI-BET WON
+         const stake = Number(bet.bet_amount || 0);
+         let totalReturn = stake;
+ 
+         for (const leg of [...allLegs].sort((a, b) => Number(a.leg_number || 0) - Number(b.leg_number || 0))) {
+           totalReturn += totalReturn * Number(leg.odds_matched || 0);