/** * Getting the company & company aliases list * * @param mixed $sender * @param mixed $param * * @return PriceMatchCompanyListController */ public function getPriceMatchCompanyDetails($sender, $param) { $result = $error = $pmcArray = $outputArray = $finalOutputArray = array(); try { $searchCriteria = isset($param->CallbackParameter->searchCriteria) ? trim($param->CallbackParameter->searchCriteria) : ''; $pageNo = 1; $pageSize = DaoQuery::DEFAUTL_PAGE_SIZE; if (isset($param->CallbackParameter->pagination)) { $pageNo = $param->CallbackParameter->pagination->pageNo; $pageSize = $param->CallbackParameter->pagination->pageSize; } if ($searchCriteria === '') { $pmcArray = PriceMatchCompany::getAll(true, $pageNo, $pageSize, array('companyName' => 'asc')); } else { $pmcArray = PriceMatchCompany::getAllByCriteria('companyName like ?', array('%' . $searchCriteria . '%'), true, $pageNo, $pageSize, array('companyName' => 'asc')); } foreach ($pmcArray as $pmc) { $companyName = trim($pmc->getCompanyName()); $compnayAlias = trim($pmc->getCompanyAlias()); if (!isset($outputArray[$companyName])) { $outputArray[$companyName] = array(); } $outputArray[$companyName][] = $pmc->getJson(); } foreach ($outputArray as $key => $value) { $tmp = array(); $tmp['companyName'] = $key; $tmp['companyAliases'] = $value; $finalOutputArray[] = $tmp; } $result['items'] = $finalOutputArray; } catch (Exception $ex) { $error[] = $ex->getMessage(); } $param->ResponseData = StringUtilsAbstract::getJson($result, $error); return $this; }
public function getMin() { $sku = trim($this->getSku()); $product = Product::getBySku($sku); if ($product instanceof Product) { $where = array(1); $params = array(); $where[] = "minId = ? "; $params[] = $this->getId(); $companies = PriceMatchCompany::getAll(); $companyIds = array_map(create_function('$a', 'return $a->getId();'), $companies); $where[] = 'companyId IN (' . implode(", ", array_fill(0, count($companyIds), "?")) . ')'; $params = array_merge($params, $companyIds); //calculate real price range $records = PriceMatchRecord::getAllByCriteria(implode(' AND ', $where), $params, true, 1, 1, array('price' => 'asc')); if (count($records) > 0) { $this->setRecord($records[0])->setActive(true)->save(); } } return $this->getRecord(); }
public static function getMatchPrices($sku) { //file_put_contents('/tmp/datafeed/web.log', __FILE__ .':' . __FUNCTION__ . ':' . __LINE__ . ':' . '----start getMatchPrices' . PHP_EOL, FILE_APPEND | LOCK_EX); $result = array(); $priceMatchResults = self::getPricesBySku($sku); $priceMatchResults = $priceMatchResults['items']; $companies = PriceMatchCompany::getAll(); foreach ($priceMatchResults as $priceMatchResult) { if (($name = trim($priceMatchResult['name'])) === '') { continue; } $price = str_replace(' ', '', str_replace('$', '', str_replace(',', '', $priceMatchResult['price']))); $url = $priceMatchResult['url']; foreach ($companies as $company) { $companyAlias = $company->getCompanyAlias(); if (strtolower($name) === strtolower($companyAlias)) { $result[] = array('PriceMatchCompany' => $company, 'price' => $price, 'name' => $name, 'url' => $url); } } } //file_put_contents('/tmp/datafeed/web.log', __FILE__ .':' . __FUNCTION__ . ':' . __LINE__ . ':' . '----end getMatchPrices' . PHP_EOL, FILE_APPEND | LOCK_EX); return $result; }