package org.egov.infra.search.elastic.utils; import org.egov.infra.admin.master.entity.City; import org.egov.infra.admin.master.service.CityService; import org.egov.infra.config.core.ApplicationThreadLocals; import org.egov.infra.search.elastic.entity.CollectionIndex; import org.egov.infra.search.elastic.repository.CollectionIndexRepository; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Transactional; @Service @Transactional(readOnly = true) public class CollectionIndexUtils { private final CollectionIndexRepository collectionIndexRepository; @Autowired private CityService cityService; @Autowired public CollectionIndexUtils(final CollectionIndexRepository collectionIndexRepository) { this.collectionIndexRepository = collectionIndexRepository; } @Transactional(propagation = Propagation.REQUIRES_NEW, readOnly = true) public CollectionIndex findByReceiptNumber(final String receiptNumber) { final City cityWebsite = cityService.getCityByURL(ApplicationThreadLocals.getDomainName()); return collectionIndexRepository.findByReceiptNumberAndCityName(receiptNumber, cityWebsite.getName()); } }