Skip to content

Instantly share code, notes, and snippets.

@atesibrahim
Last active June 30, 2022 13:27
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save atesibrahim/42715325bd8437bf7e572cbed835dbaf to your computer and use it in GitHub Desktop.
Save atesibrahim/42715325bd8437bf7e572cbed835dbaf to your computer and use it in GitHub Desktop.
@Service
public class ProductServiceImpl implements ProductService {
@Autowired
ProductRepository productRepository;
@Autowired
CoinAmount coinAmount;
@Override
public ProductDispenseResponse dispense(ProductRequest request) {
Optional<Product> product = productRepository.findById(request.getId());
if (product.get().getStock() < 1) {
return ProductDispenseResponse.builder()
.responseMessage("SOLD OUT")
.currentBalance(coinAmount.getBalance())
.build();
}
if (coinAmount.getBalance() < product.get().getPrice()) {
return ProductDispenseResponse.builder()
.responseMessage("Unfortunately your balance is not sufficient.")
.currentBalance(coinAmount.getBalance())
.build();
}
updateStock(product.get());
coinAmount.setBalance(coinAmount.getBalance() - product.get().getPrice());
return ProductDispenseResponse.builder()
.productName(product.get().getName())
.responseMessage("THANK YOU")
.currentBalance(coinAmount.getBalance())
.build();
}
private void updateStock(Product product) {
product.setStock(product.getStock()-1);
productRepository.save(product);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment