/**
  * @param $serviceId
  * @return AddressLookupQuotaHelper
  */
 protected function getLookupQuotaHelper($serviceId)
 {
     $entityManager = $this->container->get('entity_manager');
     /** @var AddressLookupQuotaHelperRepositoryDoctrine $quotaHelperRepository */
     $quotaHelperRepository = $this->container->get('addressquotahelper_repository');
     /** @var AddressLookupQuotaHelper $quotaHelper */
     $quotaHelper = $quotaHelperRepository->find($serviceId);
     if (null === $quotaHelper) {
         $quotaHelper = AddressLookupQuotaHelper::registerLookupQuotaHelper($serviceId);
         $quotaHelperRepository->store($quotaHelper);
         $entityManager->flush();
     }
     return $quotaHelper;
 }
 /**
  * @param $id
  * @return AddressLookupQuotaHelper
  */
 public static function registerLookupQuotaHelper($id)
 {
     $volume = new AddressLookupQuotaHelper();
     $volume->setId($id);
     $volume->setLastLookupDateTime(DateTimeService::getUTCnow());
     $volume->setCurrentDailyLookups(0);
     $volume->setCurrentMonthlyLookups(0);
     return $volume;
 }
 /**
  * count the lookup and persist to database
  */
 protected function persistentlyCountLookup()
 {
     $this->lookupQuotaHelper->countLookup();
     $this->getEntityManager()->flush();
 }