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.CustomerAttributeRepository;
import com.salesmanager.core.business.services.common.generic.SalesManagerEntityServiceImpl;
import com.salesmanager.core.model.customer.Customer;
import com.salesmanager.core.model.customer.attribute.CustomerAttribute;
import com.salesmanager.core.model.merchant.MerchantStore;
@Service("customerAttributeService")
public class CustomerAttributeServiceImpl extends
SalesManagerEntityServiceImpl<Long, CustomerAttribute> implements CustomerAttributeService {
private CustomerAttributeRepository customerAttributeRepository;
@Inject
public CustomerAttributeServiceImpl(CustomerAttributeRepository customerAttributeRepository) {
super(customerAttributeRepository);
this.customerAttributeRepository = customerAttributeRepository;
}
@Override
public void saveOrUpdate(CustomerAttribute customerAttribute)
throws ServiceException {
customerAttributeRepository.save(customerAttribute);
}
@Override
public void delete(CustomerAttribute attribute) throws ServiceException {
//override method, this allows the error that we try to remove a detached instance
attribute = this.getById(attribute.getId());
super.delete(attribute);
}
@Override
public CustomerAttribute getByCustomerOptionId(MerchantStore store, Long customerId, Long id) {
return customerAttributeRepository.findByOptionId(store.getId(), customerId, id);
}
@Override
public List<CustomerAttribute> getByCustomer(MerchantStore store, Customer customer) {
return customerAttributeRepository.findByCustomerId(store.getId(), customer.getId());
}
@Override
public List<CustomerAttribute> getByCustomerOptionValueId(MerchantStore store,
Long id) {
return customerAttributeRepository.findByOptionValueId(store.getId(), id);
}
@Override
public List<CustomerAttribute> getByOptionId(MerchantStore store,
Long id) {
return customerAttributeRepository.findByOptionId(store.getId(), id);
}
}