package devopsdistilled.operp.server.data.service.items.impl;
import javax.inject.Inject;
import org.springframework.stereotype.Service;
import devopsdistilled.operp.client.items.models.ItemModel;
import devopsdistilled.operp.server.data.entity.items.Brand;
import devopsdistilled.operp.server.data.entity.items.Item;
import devopsdistilled.operp.server.data.entity.items.Product;
import devopsdistilled.operp.server.data.repo.items.ItemRepository;
import devopsdistilled.operp.server.data.service.impl.AbstractEntityService;
import devopsdistilled.operp.server.data.service.items.ItemService;
@Service
public class ItemServiceImpl extends
AbstractEntityService<Item, Long, ItemRepository, ItemModel> implements
ItemService {
private static final long serialVersionUID = 7578267584162733059L;
@Inject
private ItemRepository itemRepository;
@Override
protected ItemRepository getRepo() {
return itemRepository;
}
@Override
public boolean isProductBrandPairExists(Product product, Brand brand) {
Item item = itemRepository.findByProductAndBrand(product, brand);
if (item != null)
return true;
else
return false;
}
@Override
public boolean isItemNameExists(String itemName) {
Item item = itemRepository.findByItemName(itemName);
if (item != null)
return true;
else
return false;
}
/**
* Returns false if Product and Brand Pair exists and the pair doesn't
* belong to given itemId. Else returns true
*/
@Override
public boolean isProductBrandPairValidForItem(Long itemId, Product product,
Brand brand) {
Item item = itemRepository.findByProductAndBrand(product, brand);
if (item == null)
return true;
if (item.getItemId().equals(itemId))
return true;
return false;
}
/**
* Returns false if ItemName exists for Item other than Item with given
* itemId. Else return true
*/
@Override
public boolean isItemNameValidForItem(Long itemId, String itemName) {
Item item = itemRepository.findByItemName(itemName);
if (item == null)
return true;
if (item.getItemId().equals(itemId))
return true;
return false;
}
@Override
protected Item findByEntityName(String entityName) {
return itemRepository.findByItemName(entityName);
}
}