package devopsdistilled.operp.server.data.service.stock.impl; import java.util.LinkedList; import java.util.List; import javax.inject.Inject; import org.springframework.stereotype.Service; import devopsdistilled.operp.client.stock.models.StockModel; import devopsdistilled.operp.server.data.entity.items.Item; import devopsdistilled.operp.server.data.entity.stock.Stock; import devopsdistilled.operp.server.data.entity.stock.Warehouse; import devopsdistilled.operp.server.data.repo.items.ItemRepository; import devopsdistilled.operp.server.data.repo.stock.StockRepository; import devopsdistilled.operp.server.data.repo.stock.WarehouseRepository; import devopsdistilled.operp.server.data.service.impl.AbstractEntityService; import devopsdistilled.operp.server.data.service.stock.StockService; @Service public class StockServiceImpl extends AbstractEntityService<Stock, Long, StockRepository, StockModel> implements StockService { private static final long serialVersionUID = -7737068540744137395L; @Inject private StockRepository repo; @Inject private ItemRepository itemRepository; @Inject private WarehouseRepository warehouseRepository; @Override protected StockRepository getRepo() { return repo; } @Override public List<Item> getItemsInWarehouse(Long warehouseId) { Warehouse warehouse = warehouseRepository.findOne(warehouseId); List<Stock> stocks = repo.findByWarehouse(warehouse); List<Item> items = new LinkedList<>(); for (Stock stock : stocks) { items.add(stock.getItem()); } return items; } @Override public Long getQuantityOfItemInWarehouse(Long itemId, Long warehouseId) { Item item = itemRepository.findOne(itemId); Warehouse warehouse = warehouseRepository.findOne(warehouseId); Stock stock = repo.findByItemAndWarehouse(item, warehouse); return stock.getQuantity(); } @Override protected Stock findByEntityName(String entityName) { return null; } @Override public boolean isItemExistsInWarehouse(Long itemId, Long warehouseId) { Item item = itemRepository.findOne(itemId); Warehouse warehouse = warehouseRepository.findOne(warehouseId); Stock stock = repo.findByItemAndWarehouse(item, warehouse); if (stock == null) return false; return true; } }