/**
  * Returns an singleton instance of this class
  *
  * @param object $config
  * @param object $args
  * @return
  */
 public static function getInstance($config, $args)
 {
     if (self::$instance == null) {
         self::$instance = new CompanyPriceEmailHistoryManager($config, $args);
     }
     return self::$instance;
 }
 private function canCompanySendPriceEmail($companyId, $companyType, $company_price_email_interval_hours, $toEmails)
 {
     if (count($toEmails) <= 2) {
         return true;
     }
     $companyPriceEmailHistoryManager = CompanyPriceEmailHistoryManager::getInstance($this->config, $this->args);
     $companySentEmailsByHoursDtos = $companyPriceEmailHistoryManager->getCompanySentEmailsByHours($companyId, $companyType, $company_price_email_interval_hours);
     if (empty($companySentEmailsByHoursDtos)) {
         return true;
     }
     $allToEmailsArray = array();
     foreach ($companySentEmailsByHoursDtos as $companySentEmailsByHoursDto) {
         $dtoToEmails = $companySentEmailsByHoursDto->getToEmails();
         $toEmailsArray = explode(',', $dtoToEmails);
         $allToEmailsArray = array_merge($allToEmailsArray, $toEmailsArray);
     }
     array_unique($allToEmailsArray);
     $intersectedEmailsCount = count(array_intersect($allToEmailsArray, $toEmails));
     // if 60% of the emails are already send in last X hours then don't allow to send again
     if ($intersectedEmailsCount >= intval(count($toEmails) * 0.6)) {
         return false;
     }
     return true;
 }