/** * @param $apartmentId * @param $dateRange * @param $weekDays * @param $price * @param $priceType * @param int $setLockPrice * @param int $forceLockPrice * @param int $forceUpdatePrice * @return $this|array|bool|Inventory */ public function updateInventoryRangeByPrice($apartmentId, $dateRange, $weekDays, $price, $priceType, $setLockPrice = 0, $forceLockPrice = 0, $forceUpdatePrice = 0) { /** * @var \DDD\Dao\Apartment\Inventory $inventoryDao */ $inventoryDao = $this->getServiceLocator()->get('dao_apartment_inventory'); // Define Variables $dateRange = Helper::refactorDateRange($dateRange); $weekDays = Helper::reformatWeekdays($weekDays); // check price changes if (!$forceUpdatePrice) { $priceAVGOld = $inventoryDao->getPriceAVGRange($apartmentId, $dateRange['date_from'], $dateRange['date_to'], $weekDays); $priceAVGNew = $inventoryDao->getPriceAVGRangeByPriceType($apartmentId, $dateRange['date_from'], $dateRange['date_to'], $weekDays, $price, $priceType); if ($priceAVGNew < $priceAVGOld - $priceAVGOld * self::PRICE_CHANGE_LIMIT / 100) { return ['status' => 'limit_exceed', 'msg' => TextConstants::PRICE_EXCEED_LIMIT]; } } return $this->updatePriceByRange($apartmentId, $price, $dateRange['date_from'], $dateRange['date_to'], $weekDays, $priceType, $setLockPrice, $forceLockPrice); }