package ufrn.imd.service.impl;

import lombok.RequiredArgsConstructor;
import lombok.extern.java.Log;
import ufrn.imd.domain.Account;
import ufrn.imd.domain.Client;
import ufrn.imd.repository.Repository;
import ufrn.imd.service.Service;

import java.rmi.RemoteException;
import java.util.Optional;

@Log
@RequiredArgsConstructor
public class DepositServiceImpl implements Service {


    private final Repository<Client> repository;

    public void deposit(Double value, Optional<Client> clientOptional) throws RemoteException, RuntimeException {
        Client user = clientOptional
                .orElseThrow(() -> new RuntimeException("Null User!"));
        Client client = repository.find(user.getId())
                .orElseThrow(() -> new RuntimeException("Invalid user!"));
        Account account = client.getAccount();
        account.setBalance(account.getBalance() + value);
        log.info(String.format("Deposit concluded!"));
        log.info(String.format("Total: %.2f", account.getBalance()));
    }

}