package com.salesmanager.core.business.services.customer.attribute; import java.util.List; import javax.inject.Inject; import org.springframework.stereotype.Service; import com.salesmanager.core.business.exception.ServiceException; import com.salesmanager.core.business.repositories.customer.attribute.CustomerOptionValueRepository; import com.salesmanager.core.business.services.common.generic.SalesManagerEntityServiceImpl; import com.salesmanager.core.model.customer.attribute.CustomerAttribute; import com.salesmanager.core.model.customer.attribute.CustomerOptionSet; import com.salesmanager.core.model.customer.attribute.CustomerOptionValue; import com.salesmanager.core.model.merchant.MerchantStore; import com.salesmanager.core.model.reference.language.Language; @Service("customerOptionValueService") public class CustomerOptionValueServiceImpl extends SalesManagerEntityServiceImpl<Long, CustomerOptionValue> implements CustomerOptionValueService { @Inject private CustomerAttributeService customerAttributeService; private CustomerOptionValueRepository customerOptionValueRepository; @Inject private CustomerOptionSetService customerOptionSetService; @Inject public CustomerOptionValueServiceImpl( CustomerOptionValueRepository customerOptionValueRepository) { super(customerOptionValueRepository); this.customerOptionValueRepository = customerOptionValueRepository; } @Override public List<CustomerOptionValue> listByStore(MerchantStore store, Language language) throws ServiceException { return customerOptionValueRepository.findByStore(store.getId(), language.getId()); } @Override public void saveOrUpdate(CustomerOptionValue entity) throws ServiceException { //save or update (persist and attach entities if(entity.getId()!=null && entity.getId()>0) { super.update(entity); } else { super.save(entity); } } public void delete(CustomerOptionValue customerOptionValue) throws ServiceException { //remove all attributes having this option List<CustomerAttribute> attributes = customerAttributeService.getByCustomerOptionValueId(customerOptionValue.getMerchantStore(), customerOptionValue.getId()); for(CustomerAttribute attribute : attributes) { customerAttributeService.delete(attribute); } List<CustomerOptionSet> optionSets = customerOptionSetService.listByOptionValue(customerOptionValue, customerOptionValue.getMerchantStore()); for(CustomerOptionSet optionSet : optionSets) { customerOptionSetService.delete(optionSet); } CustomerOptionValue option = super.getById(customerOptionValue.getId()); //remove option super.delete(option); } @Override public CustomerOptionValue getByCode(MerchantStore store, String optionValueCode) { return customerOptionValueRepository.findByCode(store.getId(), optionValueCode); } }