/** * @param array $data * @return array */ public function apartmentSearch($data) { $filter = $this->filterSearchData($data); $result = ['status' => '', 'result' => []]; $rateList = []; $apartment = $data['apartment']; $city = $data['city']; $guest = $data['guest'] > 0 ? (int) $data['guest'] : 1; $arrival = date('Y-m-d', strtotime($data['arrival'])); $departure = date('Y-m-d', strtotime($data['departure'])); $nightCount = Helper::getDaysFromTwoDate($arrival, $departure); $no_av_status = 'no_av'; $no_av_result = ['arrival' => Helper::dateForUrl($arrival), 'departure' => Helper::dateForUrl($departure), 'guest' => $guest, 'city' => $city]; if ($filter) { $rateDao = $this->getInventoryDao(); $response = $rateDao->getAvailableRates($apartment, Helper::urlForSearch($city), $guest, $arrival, $departure); $i = 1; if ($response->count() > 0) { $currencySymbol = WebSite::DEFAULT_CURRENCY; $userCurrency = $this->getCurrencySite(); $currencyDao = $this->getServiceLocator()->get('dao_currency_currency'); $currencyResult = $currencyDao->fetchOne(['code' => $userCurrency]); if ($currencyResult) { $currencySymbol = $currencyResult->getSymbol(); } $currencyUtility = new Currency($currencyDao); foreach ($response as $row) { //check user currency and apartment currency if ($userCurrency != $row['code']) { $price = $currencyUtility->convert($row['price'], $row['code'], $userCurrency); } else { $price = $row['price']; } //cancelation policy $cancelationData = $row; $cancelationData['night_count'] = $nightCount; $cancelation = $this->cancelationPolicy($cancelationData); $discountPrice = 0; $visitor = new Container('visitor'); if (!is_null($visitor->partnerId) && (int) $visitor->partnerId) { $partnerDao = new \DDD\Dao\Partners\Partners($this->getServiceLocator()); $partnerInfo = $partnerDao->fetchOne(['gid' => (int) $visitor->partnerId]); $discountPrice = 0; if ($partnerInfo && ceil($partnerInfo->getDiscount())) { $discountPrice = number_format($price * (100 - $partnerInfo->getDiscount()) * 0.01, 2, '.', ''); } } //rateList $rateList[] = ['primary' => $i === 1 ? true : false, 'rate' => ['id' => $row['id'], 'name' => $row['name']], 'capacity' => $row['capacity'], 'price' => number_format($price, 2, '.', ''), 'total_price' => number_format($nightCount * $price, 2, '.', ''), 'currency' => ['name' => $userCurrency, 'sign' => $currencySymbol], 'policy' => ['name' => $cancelation['type'], 'description' => $cancelation['description']], 'discount' => ['price' => $discountPrice, 'total' => number_format($nightCount * $discountPrice, 2, '.', '')]]; $i++; } $result['status'] = 'success'; $result['result'] = $rateList; } else { $result['status'] = $no_av_status; $result['result'] = $no_av_result; } return $result; } return ['status' => $no_av_status, 'result' => $no_av_result]; }
public function getPartnersNameById($id) { $affiliate = new \DDD\Dao\Partners\Partners($this->getServiceLocator(), 'DDD\\Domain\\Partners\\PartnerBooking'); $affiliates = $affiliate->getPartners(); foreach ($affiliate as $row) { if ($row->getGid() == $id) { return $row->getPartnerName(); } } return ''; }