Example #1
0
 /**
  * @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);
 }