BankProfileServiceImpl.java
package no.ntnu.idi.stud.savingsapp.bank.service.impl;
import java.util.ArrayList;
import java.util.List;
import lombok.extern.slf4j.Slf4j;
import no.ntnu.idi.stud.savingsapp.bank.dto.BankProfileDTO;
import no.ntnu.idi.stud.savingsapp.bank.dto.BankProfileResponseDTO;
import no.ntnu.idi.stud.savingsapp.bank.model.Account;
import no.ntnu.idi.stud.savingsapp.bank.model.BankProfile;
import no.ntnu.idi.stud.savingsapp.bank.repository.BankProfileRepository;
import no.ntnu.idi.stud.savingsapp.bank.service.BankProfileService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatusCode;
import org.springframework.stereotype.Service;
import org.springframework.web.server.ResponseStatusException;
/**
* Implementation of the {@link BankProfileService} interface for bank profile related
* operations.
*/
@Slf4j
@Service
public class BankProfileServiceImpl implements BankProfileService {
@Autowired
private BankProfileRepository bankProfileRepository;
/**
* Create a new bank profile.
* @param bankProfileDTO The DTO containing the user's Social Security Number.
* @return a {@link BankProfileResponseDTO} containing profile information.
*/
@Override
public BankProfileResponseDTO saveBankProfile(BankProfileDTO bankProfileDTO) {
if (bankProfileDTO.getSsn() < 1) {
log.error("[BankProfileServiceImpl:saveBankProfile] Negative ssn: {}", bankProfileDTO.getSsn());
throw new ResponseStatusException(HttpStatusCode.valueOf(400), "Negative ssn");
}
BankProfile newBankProfile = new BankProfile();
List<Account> newEmptyAccountList = new ArrayList<>();
BankProfileResponseDTO savedProfileResponse = new BankProfileResponseDTO();
newBankProfile.setSsn(bankProfileDTO.getSsn());
try {
BankProfile savedBankProfile = bankProfileRepository.save(newBankProfile);
savedProfileResponse.setSsn(savedBankProfile.getSsn());
savedProfileResponse.setAccounts(newEmptyAccountList);
}
catch (Exception e) {
log.error("[BankProfileServiceImpl:saveBankProfile] Negative ssn: {}", bankProfileDTO.getSsn());
throw new ResponseStatusException(HttpStatusCode.valueOf(400), "Could not create bank profile");
}
log.info("[BankProfileServiceImpl:saveBankProfile] bank-profileSsn: {}", bankProfileDTO.getSsn());
return savedProfileResponse;
}
}