/** * put given price match result for all companies into PriceMatchRecord table * * @param unknown $companyPrices * @return PriceMatchConnector */ private function recordResult($priceMatchResults) { foreach ($priceMatchResults as $priceMatchResult) { $company = $priceMatchResult['PriceMatchCompany']; $price = doubleval($priceMatchResult['price']); $url = $priceMatchResult['url']; $name = $priceMatchResult['name']; $min = PriceMatchMin::create($this->sku); // to create PriceMatchRecord must have a PriceMatchMin, the record for PriceMatchMin will be null at this time instance if (abs($price) !== doubleval(0) && $price > doubleval(0) && trim($price) !== '') { PriceMatchRecord::create($company, $min, $price, $url); } } return $this; }
/** * create for PriceMatchRecord * * @param PriceMatchCompany $company * @param PriceMatchMin $min * @param string $price * @param string $url * @param string $name * @throws Exception */ public static function create(PriceMatchCompany $company, PriceMatchMin $min, $price, $url = '', $name = '') { if (abs(doubleval($price)) === 0.0 || doubleval($price) < 0.0 || trim($price) === '') { throw new Exception('price must be positive, "' . $price . '" given'); } $price = doubleval($price); $from_date = UDate::now('Australia/Melbourne')->setTime(0, 0, 0)->setTimeZone('UTC'); $to_date = UDate::now('Australia/Melbourne')->setTime(23, 59, 59)->setTimeZone('UTC'); if (count($i = self::getAllByCriteria('companyId = ? and minId = ? and created >= ? and created <= ?', array($company->getId(), $min->getId(), $from_date, $to_date), true, 1, 1, array('id' => 'desc'))) > 0) { $entity = $i[0]; } else { $entity = new self(); } $entity->setCompany($company)->setMin($min)->setPrice($price)->setUrl(trim($url))->setName(trim($name))->save(); return $entity; }