/**
  * 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 CompanyItemCheckListManager($config, $args);
     }
     return self::$instance;
 }
 public function service()
 {
     $companyItemCheckListManager = CompanyItemCheckListManager::getInstance($this->config, $this->args);
     $itemId = intval($this->secure($_REQUEST['item_id']));
     $itemAvailability = intval($this->secure($_REQUEST['item_availability']));
     $companyId = $this->getUserId();
     $companyItemCheckListManager->setCompanyItemAvailability($companyId, $itemId, $itemAvailability);
     $itemManager = ItemManager::getInstance($this->config, $this->args);
     if ($itemAvailability === -1) {
         $itemManager->setItemHidden($itemId, 1);
     } elseif ($itemAvailability === 1) {
         $itemManager->setItemTillDateAttribute($itemId, date('Y-m-d', strtotime("tomorrow")));
     }
     $jsonArr = array('status' => 'ok');
     echo json_encode($jsonArr);
     return true;
 }
 public function service()
 {
     $customer = $this->getCustomer();
     $userLevel = $this->sessionManager->getUser()->getLevel();
     if ($userLevel == UserGroups::$GUEST) {
         $jsonArr = array('status' => "err", "errText" => "Access denied!");
         echo json_encode($jsonArr);
         return false;
     }
     $item_id = $this->secure($_REQUEST['item_id']);
     $keep_anonymous = $this->secure($_REQUEST['keep_anonymous']);
     $from_email = $customer->getEmail();
     $from_name = $customer->getName();
     $from_customer_type = $userLevel == UserGroups::$USER ? 'user' : ($userLevel == UserGroups::$COMPANY ? 'company' : 'admin');
     $itemManager = ItemManager::getInstance($this->config, $this->args);
     $itemDto = $itemManager->selectByPK($item_id);
     if (!$itemDto) {
         $jsonArr = array('status' => "err", "errText" => "Item doesn't exist!");
         echo json_encode($jsonArr);
         return false;
     }
     if ($itemDto->getItemAvailableTillDate() >= date('Y-m-d')) {
         $jsonArr = array('status' => "message", "item_available" => true);
         echo json_encode($jsonArr);
         return false;
     }
     if ($itemDto->getHidden() == 1) {
         $jsonArr = array('status' => "message", "item_not_available" => true);
         echo json_encode($jsonArr);
         return false;
     }
     $company_id = $itemDto->getCompanyId();
     $companyItemCheckListManager = CompanyItemCheckListManager::getInstance($this->config, $this->args);
     $companyItemCheckListManager->addCompanyItemCheckList($company_id, $item_id, $from_email, $from_name, $from_customer_type, $keep_anonymous);
     $jsonArr = array('status' => "ok");
     echo json_encode($jsonArr);
     return true;
 }
 /**
  * Initializes DB mappers
  *
  * @param object $config
  * @param object $args
  * @return
  */
 function __construct($config, $args)
 {
     $this->companyItemCheckListManager = CompanyItemCheckListManager::getInstance($this->config, $this->{$args});
     $this->config = $config;
     $this->args = $args;
 }
require_once CLASSES_PATH . "/util/db/DBMSFactory.class.php";
require_once CLASSES_PATH . "/managers/OnlineUsersManager.class.php";
require_once CLASSES_PATH . "/managers/CustomerAlertsManager.class.php";
require_once CLASSES_PATH . "/managers/CompanyItemCheckListManager.class.php";
require_once CLASSES_PATH . "/managers/CmsSearchRequestsManager.class.php";
require_once CLASSES_PATH . "/managers/CbaRatesManager.class.php";
require_once CLASSES_PATH . "/managers/ReceiveEmailManager.class.php";
$config = parse_ini_file(CONF_PATH . "/config.ini");
DBMSFactory::init($config);
$onlineUsersManager = new OnlineUsersManager($config, null);
$onlineUsersManager->removeTimeOutedUsers(120);
//2 minutes
$customerAlertsManager = new CustomerAlertsManager($config, null);
$customerAlertsManager->removeOldAlerts(10);
//10 minute
$companyItemCheckListManager = new CompanyItemCheckListManager($config, null);
$companyItemCheckListManager->removeOldRowsBySeconds(120);
//2 minutes
$requestHistoryManager = new RequestHistoryManager($config, null);
$requestHistoryManager->removeOldRowsByDays(90);
// 90 days
$cmsSearchRequestsManager = new CmsSearchRequestsManager($config, null);
$cmsSearchRequestsManager->removeOldRowsByDays(90);
// 90 days
//chaching cba rates for all exchanges
$rates = getCbaRates();
if ($rates !== false) {
    $datetime = $rates[1];
    $cbaRatesManager = new CbaRatesManager($config, null);
    $selectByField = $cbaRatesManager->selectByField('cba_datetime', $datetime);
    if (empty($selectByField)) {