/**
  * 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 CustomerLocalEmailsManager($config, $args);
     }
     return self::$instance;
 }
示例#2
0
 public function load()
 {
     $emailId = $_REQUEST['email_id'];
     $customerLocalEmailsManager = CustomerLocalEmailsManager::getInstance($this->config, $this->args);
     $userManager = UserManager::getInstance($this->config, $this->args);
     $emailDto = $customerLocalEmailsManager->selectByPK($emailId);
     if (isset($emailId) && isset($emailDto) && $emailDto->getCustomerEmail() === $this->getCustomerLogin()) {
         $this->addParam("email_subject", $emailDto->getSubject());
         $this->addParam("email_body", $emailDto->getBody());
         $customerEmail = $emailDto->getFromEmail();
         if (isset($_REQUEST['reply']) && $_REQUEST['reply'] == 1) {
             $this->addParam("email_to", $customerEmail);
             $customer = $userManager->getCustomerByEmail($customerEmail);
             if (isset($customer)) {
                 $customerContactNameForEmail = $customer->getCustomerContactNameForEmail();
                 $this->addParam("email_to_name", $customerContactNameForEmail);
                 $customerTypeString = $userManager->getCustomerTypeStringFromCustomerDto($customer);
                 $this->addParam("email_to_type", $customerTypeString);
             }
         }
         if ($emailDto->getReadStatus() == 0) {
             $customerLocalEmailsManager->setReadStatus($emailId, 1);
         }
     }
 }
示例#3
0
 public function load()
 {
     $customerLocalEmailsManager = CustomerLocalEmailsManager::getInstance($this->config, $this->args);
     $customer = $this->getCustomer();
     $customerEmail = $customer->getEmail();
     $emails = $customerLocalEmailsManager->getCustomerTrashEmailsByCustomerEmail($customerEmail);
     $this->addParam("emails", $emails);
 }
 public function service()
 {
     $email_ids = $_REQUEST['email_ids'];
     $email_ids_array = explode(',', $email_ids);
     $customerLocalEmailsManager = CustomerLocalEmailsManager::getInstance($this->config, $this->args);
     $customerLocalEmailsManager->restoreEmails($this->getCustomerLogin(), $email_ids_array);
     $jsonArr = array('status' => "ok");
     echo json_encode($jsonArr);
     return true;
 }
 public function addEventIntoEventsTableForOnlineCustomers($to_emails_array, $fromName, $subject)
 {
     $customerAlertsManager = CustomerAlertsManager::getInstance($this->config, $this->args);
     $onlineUsersManager = OnlineUsersManager::getInstance($this->config, $this->args);
     $customerLocalEmailsManager = CustomerLocalEmailsManager::getInstance($this->config, $this->args);
     $onlineRegisteredCustomers = $onlineUsersManager->getOnlineRegisteredCustomers();
     foreach ($onlineRegisteredCustomers as $onlineUsersDto) {
         $custEmail = $onlineUsersDto->getEmail();
         if (in_array($custEmail, $to_emails_array)) {
             $customerInboxUnreadEmailsCount = $customerLocalEmailsManager->getCustomerInboxUnreadEmailsCountCustomerEmail($custEmail);
             $customerAlertsManager->addNewEmailCustomerAlert($custEmail, $fromName, $subject, $customerInboxUnreadEmailsCount, $onlineUsersDto->getLanguageCode());
         }
     }
 }
示例#6
0
 public function load()
 {
     $emailId = $_REQUEST['email_id'];
     $customerLocalEmailsManager = CustomerLocalEmailsManager::getInstance($this->config, $this->args);
     $emailDto = $customerLocalEmailsManager->selectByPK($emailId);
     if ($emailDto->getCustomerEmail() === $this->getCustomerLogin()) {
         $this->addParam("email_body_html", $emailDto->getBody());
         if ($emailDto->getReadStatus() == 0) {
             $customerLocalEmailsManager->setReadStatus($emailId, 1);
         }
     }
     $customer = $this->getCustomer();
     $customerEmail = $customer->getEmail();
     $unreadCount = $customerLocalEmailsManager->getCustomerInboxUnreadEmailsCountCustomerEmail($customerEmail);
     $this->addParam("unread_mails_count", $unreadCount);
 }
 public function service()
 {
     $toTrash = isset($_REQUEST['to_trash']) && $_REQUEST['to_trash'] == 1 ? true : false;
     $delete = isset($_REQUEST['delete']) && $_REQUEST['delete'] == 1 ? true : false;
     $email_ids = $_REQUEST['email_ids'];
     $email_ids_array = explode(',', $email_ids);
     $customerLocalEmailsManager = CustomerLocalEmailsManager::getInstance($this->config, $this->args);
     if ($toTrash) {
         $customerLocalEmailsManager->trashEmails($this->getCustomerLogin(), $email_ids_array);
     } elseif ($delete) {
         $customerLocalEmailsManager->deleteEmails($this->getCustomerLogin(), $email_ids_array);
     }
     $jsonArr = array('status' => "ok");
     echo json_encode($jsonArr);
     return true;
 }
示例#8
0
 public function load()
 {
     $this->addParam("mailsNavigationBarWidth", 200);
     if (!isset($_REQUEST['folder'])) {
         $_REQUEST['folder'] = 'inbox';
     }
     switch ($_REQUEST['folder']) {
         case 'trash':
         case 'sent':
         case 'inbox':
             $this->folder = $_REQUEST['folder'];
             break;
         default:
             $this->folder = 'inbox';
             break;
     }
     $this->addParam("active_folder_to_show", $this->folder);
     //unread email count
     $customerLocalEmailsManager = CustomerLocalEmailsManager::getInstance($this->config, $this->args);
     $customer = $this->getCustomer();
     $customerEmail = $customer->getEmail();
     $unreadCount = $customerLocalEmailsManager->getCustomerInboxUnreadEmailsCountCustomerEmail($customerEmail);
     $this->addParam("unread_mails_count", $unreadCount);
 }
示例#9
0
 public function deleteUserAndDependencies($id)
 {
     $userDto = $this->selectByPK($id);
     if ($userDto) {
         $email = $userDto->getEmail();
         $this->deleteByPK($id);
         $userSubUsersManager = UserSubUsersManager::getInstance($this->config, $this->args);
         $userSubUsersManager->deleteByField('user_id', $id);
         $userPendingSubUsersManager = UserPendingSubUsersManager::getInstance($this->config, $this->args);
         $userPendingSubUsersManager->deleteByField('user_id', $id);
         require_once CLASSES_PATH . "/managers/CustomerCartManager.class.php";
         $customerCartManager = CustomerCartManager::getInstance($this->config, $this->args);
         $customerCartManager->deleteByField('email', $email);
         require_once CLASSES_PATH . "/managers/CustomerLocalEmailsManager.class.php";
         $customerLocalEmailsManager = CustomerLocalEmailsManager::getInstance($this->config, $this->args);
         $customerLocalEmailsManager->deleteByField('customer_email', $email);
         require_once CLASSES_PATH . "/managers/CompanyDealersManager.class.php";
         $companyDealersManager = CompanyDealersManager::getInstance($this->config, $this->args);
         $companyDealersManager->deleteByField('user_id', $id);
     }
 }
示例#10
0
 public function manageTabs()
 {
     $userLevel = $this->sessionManager->getUser()->getLevel();
     $tabTitles = array();
     $customer = $this->getCustomer();
     $lm = LanguageManager::getInstance($this->config, $this->args);
     if ($this->isLoggedInCustomer()) {
         $customerLocalEmailsManager = CustomerLocalEmailsManager::getInstance($this->config, $this->args);
         $unreadEmailsCount = $customerLocalEmailsManager->getCustomerInboxUnreadEmailsCountCustomerEmail($this->getCustomerLogin());
     }
     $tabsPath = array("item_search" => "main", "companies_list" => "main", "company_profile" => "company", "service_company_profile" => "servicecompany", "service_company_profile" => "servicecompany", "manage_items" => "company/stock", "pc_configurator" => "main", "upload_price" => "company/uploadprice", "service_upload_price" => "servicecompany/uploadprice", "user_management" => "main", "your_orders" => "main", "your_profile" => "main", "item_warranty" => "company", "dealers_list" => "company", "your_mails" => "main");
     $this->addParam("tabs_path", $tabsPath);
     if ($userLevel === UserGroups::$ADMIN) {
         $type = $customer->getType();
         if ($type === 'price_manager') {
             $tabTitles['companies_list'] = $lm->getPhraseSpan(89);
             $tabTitles['upload_price'] = $lm->getPhraseSpan(90);
             $tabTitles['service_upload_price'] = "Service upload";
             $tabTitles['item_search'] = $lm->getPhraseSpan(184);
             $this->activeLoadName = "upload_price";
         } elseif ($type === 'item_manager') {
             $tabTitles['companies_list'] = $lm->getPhraseSpan(89);
             $tabTitles['manage_items'] = $lm->getPhraseSpan(92);
             $tabTitles['item_search'] = $lm->getPhraseSpan(184);
             $this->activeLoadName = "manage_items";
         } elseif ($type === 'order_manager') {
             $tabTitles['your_orders'] = 'Customer Orders';
             $tabTitles['item_search'] = $lm->getPhraseSpan(184);
             $this->activeLoadName = "your_orders";
         } elseif ($type === 'admin') {
             $tabTitles['companies_list'] = $lm->getPhraseSpan(89);
             $tabTitles['upload_price'] = $lm->getPhraseSpan(90);
             $tabTitles['service_upload_price'] = "Service upload";
             $tabTitles['items_categories'] = 'Manage Categories';
             $tabTitles['manage_items'] = $lm->getPhraseSpan(92);
             $tabTitles['your_orders'] = 'Customer Orders';
             $tabTitles['item_search'] = $lm->getPhraseSpan(184);
             $tabTitles['admin_statistics'] = '***';
             $this->activeLoadName = "companies_list";
         } elseif ($type === 'all') {
             $tabTitles['companies_list'] = $lm->getPhraseSpan(89);
             $tabTitles['upload_price'] = $lm->getPhraseSpan(90);
             $tabTitles['service_upload_price'] = "Service upload";
             $tabTitles['manage_items'] = $lm->getPhraseSpan(92);
             $tabTitles['your_orders'] = 'Customer Orders';
             $tabTitles['item_search'] = $lm->getPhraseSpan(184);
             $this->activeLoadName = "companies_list";
         }
         $tabTitles['your_mails'] = $lm->getPhraseSpan(468) . ($unreadEmailsCount > 0 ? '*' : '');
     } elseif ($userLevel === UserGroups::$COMPANY) {
         $tabTitles['companies_list'] = $lm->getPhraseSpan(89);
         $tabTitles['company_profile'] = $lm->getPhraseSpan(94);
         $tabTitles['upload_price'] = $lm->getPhraseSpan(90);
         $tabTitles['dealers_list'] = $lm->getPhraseSpan(93);
         $tabTitles['your_orders'] = $lm->getPhraseSpan(142);
         $tabTitles['item_warranty'] = $lm->getPhraseSpan(82);
         $tabTitles['manage_items'] = $lm->getPhraseSpan(92);
         $tabTitles['item_search'] = $lm->getPhraseSpan(184);
         $tabTitles['your_mails'] = $lm->getPhraseSpan(468) . ($unreadEmailsCount > 0 ? '*' : '');
         $this->activeLoadName = "companies_list";
     } elseif ($userLevel === UserGroups::$SERVICE_COMPANY) {
         $tabTitles['companies_list'] = $lm->getPhraseSpan(89);
         $tabTitles['service_company_profile'] = $lm->getPhraseSpan(94);
         $serviceCompany = $this->getCustomer();
         if ($serviceCompany->getHasPrice() == 1) {
             $tabTitles['service_upload_price'] = $lm->getPhraseSpan(90);
             $tabTitles['service_dealers_list'] = $lm->getPhraseSpan(93);
         }
         $tabTitles['your_orders'] = $lm->getPhraseSpan(142);
         $tabTitles['item_search'] = $lm->getPhraseSpan(184);
         $tabTitles['your_mails'] = $lm->getPhraseSpan(468) . ($unreadEmailsCount > 0 ? '*' : '');
         $this->activeLoadName = "companies_list";
     } elseif ($userLevel === UserGroups::$USER) {
         $tabTitles['companies_list'] = $lm->getPhraseSpan(89);
         if ($this->getCustomer()->getHidden() != 1) {
             $tabTitles['your_profile'] = $lm->getPhraseSpan(20);
             $tabTitles['user_management'] = $lm->getPhraseSpan(141);
         }
         $tabTitles['your_orders'] = $lm->getPhraseSpan(142);
         $tabTitles['item_search'] = $lm->getPhraseSpan(184);
         $tabTitles['your_mails'] = $lm->getPhraseSpan(468) . ($unreadEmailsCount > 0 ? '*' : '');
         $this->activeLoadName = "pc_configurator";
     } elseif ($userLevel === UserGroups::$GUEST) {
         $tabTitles['item_search'] = $lm->getPhraseSpan(184);
         $activeTabsArray = array('item_search', 'pc_configurator');
         shuffle($activeTabsArray);
         $this->activeLoadName = $activeTabsArray[0];
     }
     $tabTitles['pc_configurator'] = $lm->getPhraseSpan(226);
     $this->activeLoadPath = 'main/';
     $activeTab = $this->getActiveTab(isset($_REQUEST["p"]) ? $_REQUEST["p"] : null);
     if ($activeTab != null) {
         $this->activeLoadName = $activeTab[0];
         $this->activeLoadPath = $activeTab[1];
     }
     //var_dump($tabTitles);exit;
     $this->addParam("tabTitles", $tabTitles);
     $this->addParam('active_load_name', $this->activeLoadName);
     $pagesClone = $this->pages;
     unset($pagesClone['item']);
     $_allLoadNames = array_values($pagesClone);
     $allLoadNames = array();
     foreach ($_allLoadNames as $value) {
         if (is_array($value)) {
             $allLoadNames[] = $value[0];
         } else {
             $allLoadNames[] = $value;
         }
     }
     $allLoadPageUrls = array_keys($pagesClone);
     $this->addParam('load_url', array_combine($allLoadNames, $allLoadPageUrls));
 }
 public function addCustomerMessagesAfterLoginByPreviousPing($custDto, $userLevel, $previousPing)
 {
     if ($userLevel === UserGroups::$GUEST) {
         return false;
     }
     $custEmail = $custDto->getEmail();
     $companyDealersManager = CompanyDealersManager::getInstance($this->config, $this->args);
     $userCompaniesIdsArray = array();
     if ($userLevel === UserGroups::$USER) {
         $userCompaniesIdsArray = $companyDealersManager->getUserCompaniesIdsArray($custDto->getId());
     }
     if ($userLevel === UserGroups::$COMPANY || $userLevel === UserGroups::$ADMIN || !empty($userCompaniesIdsArray)) {
         //new prices after last ping
         $companiesPriceListManager = CompaniesPriceListManager::getInstance($this->config, $this->args);
         $allPricesAfterTime = $companiesPriceListManager->getAllPricesAfterTime($previousPing, $userCompaniesIdsArray);
         if (!empty($allPricesAfterTime)) {
             $pre = HTTP_PROTOCOL . HTTP_HOST;
             $massage = '';
             foreach ($allPricesAfterTime as $dto) {
                 $companyName = $dto->getCompanyName() . ' (`558`: ' . $dto->getUploadDateTime() . ')';
                 $companyId = $dto->getCompanyId();
                 $pricePath = HTTP_PROTOCOL . HTTP_HOST . '/price/last_price/' . $companyId;
                 $massage .= '<div><a href="' . $pricePath . '"><img src="' . $pre . '/images/small_logo/' . $companyId . '" style="vertical-align: middle;" /> ' . $companyName . '</a></div>';
             }
             $this->addCustomerMessage($custEmail, '540', $massage, 1, 'attention');
         }
     }
     //new added dealers messages for (company only)
     if ($userLevel === UserGroups::$COMPANY || $userLevel === UserGroups::$ADMIN) {
         $dealersAfterGivenDatetime = $companyDealersManager->getAfterGivenDatetime($userLevel === UserGroups::$ADMIN ? 0 : intval($custDto->getId()), $previousPing);
         if (!empty($dealersAfterGivenDatetime)) {
             $this->addCustomerMessage($custEmail, '543', '`541` ' . count($dealersAfterGivenDatetime) . '`542`', 1, 'attention');
         }
     }
     //alert to admin if dollar rate doeasn't match to config rate
     if ($userLevel === UserGroups::$ADMIN) {
         $cbaRatesManager = CbaRatesManager::getInstance($this->config, $this->args);
         $latestUSDExchange = $cbaRatesManager->getLatestUSDExchange();
         $us_dollar_exchange = floatval($this->getCmsVar('us_dollar_exchange'));
         $us_dollar_exchange_down = floatval($this->getCmsVar('us_dollar_exchange_down'));
         $pcstoreAverageUSDExchange = ($us_dollar_exchange + $us_dollar_exchange_down) / 2;
         $maxAllowedDollarDifferenceParcent = floatval($this->getCmsVar('admin_alert_if_cba_dollar_rate_is_more_than_percent'));
         if (abs($latestUSDExchange - $pcstoreAverageUSDExchange) / $latestUSDExchange > $maxAllowedDollarDifferenceParcent / 100) {
             $this->addCustomerMessage($custEmail, '483', 'Cba rate for USD Dollar ($) is: ' . $latestUSDExchange, 1, 'warning');
         }
     }
     //new added bonuses to user (users only)
     if ($userLevel === UserGroups::$USER) {
         $bonusHistoryManager = BonusHistoryManager::getInstance($this->config, $this->args);
         $userBonusesAfterGivenDatetime = $bonusHistoryManager->getUserBonusesAfterGivenDatetime($custDto->getId(), $previousPing);
         if (!empty($userBonusesAfterGivenDatetime)) {
             $pointSum = 0;
             foreach ($userBonusesAfterGivenDatetime as $bDto) {
                 $pointSum += intval($bDto->getPoints());
             }
             $pointSum = intval($pointSum);
             if ($pointSum > 0) {
                 $phraseId = '544';
             } else {
                 $phraseId = '548';
             }
             $this->addCustomerMessage($custEmail, '545', '`' . $phraseId . '` ' . strval(intval(abs($pointSum))) . 'դր.`542`', 1, 'attention');
         }
     }
     //new added sub users (users only)
     if ($userLevel === UserGroups::$USER) {
         $userSubUsersManager = UserSubUsersManager::getInstance($this->config, $this->args);
         $rowsAddedAfterGivenDatetime = $userSubUsersManager->getRowsAddedAfterGivenDatetime($custDto->getId(), $previousPing);
         if (!empty($rowsAddedAfterGivenDatetime)) {
             $this->addCustomerMessage($custEmail, '546', strval(count($rowsAddedAfterGivenDatetime)) . ' `547`', 1, 'attention');
         }
     }
     $customerLocalEmailsManager = CustomerLocalEmailsManager::getInstance($this->config, $this->args);
     $unreadEmailsCount = $customerLocalEmailsManager->getCustomerInboxUnreadEmailsCountCustomerEmail($custEmail);
     if ($unreadEmailsCount > 0) {
         $customerAlertsManager = CustomerAlertsManager::getInstance($this->config, $this->args);
         $customerAlertsManager->addUnreadEmailsCustomerAlert($custEmail, $unreadEmailsCount);
     }
 }