/** * 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; }