|
@@ -3,6 +3,7 @@ package com.danielbohry.stocks.service;
|
|
|
import com.danielbohry.stocks.domain.Portfolio;
|
|
import com.danielbohry.stocks.domain.Portfolio;
|
|
|
import com.danielbohry.stocks.domain.Quote;
|
|
import com.danielbohry.stocks.domain.Quote;
|
|
|
import com.danielbohry.stocks.domain.Stock;
|
|
import com.danielbohry.stocks.domain.Stock;
|
|
|
|
|
+import com.danielbohry.stocks.exception.BadRequestException;
|
|
|
import com.danielbohry.stocks.exception.NotFoundException;
|
|
import com.danielbohry.stocks.exception.NotFoundException;
|
|
|
import com.danielbohry.stocks.repository.PortfolioRepository;
|
|
import com.danielbohry.stocks.repository.PortfolioRepository;
|
|
|
import lombok.AllArgsConstructor;
|
|
import lombok.AllArgsConstructor;
|
|
@@ -60,18 +61,30 @@ public class PortfolioService {
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
public Portfolio update(String id, List<Stock> stocks) {
|
|
public Portfolio update(String id, List<Stock> stocks) {
|
|
|
|
|
+ log.info("Updating portfolio [{}]", id);
|
|
|
Optional<Portfolio> portfolio = repository.findById(id);
|
|
Optional<Portfolio> portfolio = repository.findById(id);
|
|
|
|
|
|
|
|
if (portfolio.isEmpty()) {
|
|
if (portfolio.isEmpty()) {
|
|
|
throw new NotFoundException("Failed to update portfolio with id: " + id);
|
|
throw new NotFoundException("Failed to update portfolio with id: " + id);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+ validate(stocks);
|
|
|
|
|
+
|
|
|
Portfolio toUpdate = portfolio.get();
|
|
Portfolio toUpdate = portfolio.get();
|
|
|
toUpdate.setUpdatedAt(now());
|
|
toUpdate.setUpdatedAt(now());
|
|
|
toUpdate.setStocks(stocks);
|
|
toUpdate.setStocks(stocks);
|
|
|
return repository.save(toUpdate);
|
|
return repository.save(toUpdate);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+ private void validate(List<Stock> stocks) {
|
|
|
|
|
+ boolean anyInvalid = stocks.stream()
|
|
|
|
|
+ .anyMatch(stock -> !stockService.isValid(stock.getCode()));
|
|
|
|
|
+
|
|
|
|
|
+ if (anyInvalid) {
|
|
|
|
|
+ throw new BadRequestException("Invalid stock found");
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
public void delete(String id) {
|
|
public void delete(String id) {
|
|
|
repository.deleteById(id);
|
|
repository.deleteById(id);
|
|
|
}
|
|
}
|