Untitled
public void updateUserExpenseBalanceSheet(User expensePaidBy, List<Split> splits, double totalExpenseAmount) { // Initially, update the 'paidBy' user to reflect the total amount they will get back UserExpenseBalanceSheet paidByUserExpenseSheet = expensePaidBy.getUserExpenseBalanceSheet(); paidByUserExpenseSheet.setTotalYouGetBack(paidByUserExpenseSheet.getTotalYouGetBack() + totalExpenseAmount); // Iterate through the list of splits (users who owe and the amount they owe) for (Split split : splits) { User userOwe = split.getUser(); // User who owes money UserExpenseBalanceSheet oweUserExpenseSheet = userOwe.getUserExpenseBalanceSheet(); double oweAmount = split.getAmountOwe(); // If the current user is the 'paidBy' user, reduce their 'getBack' by the amount if (expensePaidBy.getUserId().equals(userOwe.getUserId())) { paidByUserExpenseSheet.setTotalYouGetBack(paidByUserExpenseSheet.getTotalYouGetBack() - oweAmount); } else { // Otherwise, increase the amount owed by the 'userOwe' in their balance sheet paidByUserExpenseSheet.setTotalYouGetBack(paidByUserExpenseSheet.getTotalYouGetBack() + oweAmount); // Update 'paidBy' user's balance with the user who owes money Balance oweBalance = paidByUserExpenseSheet.getUserVsBalance().getOrDefault(userOwe.getUserId(), new Balance()); oweBalance.setAmountGetBack(oweBalance.getAmountGetBack() + oweAmount); paidByUserExpenseSheet.getUserVsBalance().put(userOwe.getUserId(), oweBalance); // Update the balance sheet of the user who owes oweUserExpenseSheet.setTotalYouOwe(oweUserExpenseSheet.getTotalYouOwe() + oweAmount); oweUserExpenseSheet.setTotalYourExpense(oweUserExpenseSheet.getTotalYourExpense() + oweAmount); // Update 'oweUserExpenseSheet' balance for the user who paid (expensePaidBy) Balance paidBalance = oweUserExpenseSheet.getUserVsBalance().getOrDefault(expensePaidBy.getUserId(), new Balance()); paidBalance.setAmountOwe(paidBalance.getAmountOwe() + oweAmount); oweUserExpenseSheet.getUserVsBalance().put(expensePaidBy.getUserId(), paidBalance); } } }
Leave a Comment