Ejemplo n.º 1
0
 /**
  * @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];
 }
Ejemplo n.º 2
0
 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 '';
 }