Untitled

 avatar
unknown
plain_text
a month ago
2.3 kB
1
Indexable
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