BalanceService.java

package com.paymybuddy.paymybuddy.service;

import org.springframework.stereotype.Service;

import com.paymybuddy.paymybuddy.dto.BalanceOperationDTO;
import com.paymybuddy.paymybuddy.exception.NotFoundException;
import com.paymybuddy.paymybuddy.model.User;
import com.paymybuddy.paymybuddy.repository.UserRepository;

import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;

@Service
@AllArgsConstructor
@Slf4j
public class BalanceService {

    UserRepository userRepository;

    public void updateBalance(BalanceOperationDTO operation, boolean plus){
        log.debug("*** Updating balance: {}, {}", operation, plus);

        User user = userRepository.findByEmail(operation.userEmail())
            .orElseThrow(()-> new NotFoundException("User not found:" + operation.userEmail()));

        if(plus){
            user.setBalance(user.getBalance().add(operation.amount()));
        } else {
            user.setBalance(user.getBalance().subtract(operation.amount()));
        }

        log.info("*** Balance updated: {}, {}.", operation, plus);

        userRepository.save(user);
    }
}