public function run()
 {
     if (!$this->userId) {
         $this->userId = Yii::app()->user->id;
     }
     $info = TariffPlans::getTariffInfoByUserId($this->userId);
     $this->render('userTariffInfoViewWidget', array('id' => $info['id'], 'name' => $info['name'], 'description' => $info['description'], 'limitObjects' => $info['limitObjects'], 'limitPhotos' => $info['limitPhotos'], 'price' => $info['price'], 'duration' => $info['duration'], 'showAddress' => $info['showAddress'], 'showPhones' => $info['showPhones'], 'currency' => Currency::getDefaultCurrencyModel()->name, 'userCountObjects' => TariffPlans::getCountUserObjects($this->userId), 'tariffDateStart' => $info['tariffDateStart'], 'tariffDateEnd' => $info['tariffDateEnd'], 'tariffStatus' => $info['tariffStatus'], 'tariffDateStartFormat' => $info['tariffDateStartFormat'], 'tariffDateEndFormat' => $info['tariffDateEndFormat'], 'isDefaultTariffPlan' => $info['id'] == TariffPlans::DEFAULT_TARIFF_PLAN_ID ? true : false));
 }
Beispiel #2
0
function setCurrency()
{
    if (isset($_GET['currency'])) {
        setCurrencyCookie(CHtml::encode($_GET['currency']));
    }
    // Админ деактивирует валюту, а у пользователя есть кука с уже деактивированной валютой.
    // Надо сбросить ему куку.
    if (isset(Yii::app()->request->cookies['_currency'])) {
        $charCode = Yii::app()->request->cookies['_currency']->value;
        $activeCurrency = Currency::getActiveCurrency();
        if (!isset($activeCurrency[$charCode])) {
            setCurrencyCookie(Currency::getDefaultCurrencyModel()->char_code);
        }
    }
}
Beispiel #3
0
    <div id="price_fields">
        <?php 
echo CHtml::hiddenField('is_update', 0);
//        if (issetModule('currency')) {
//            echo '<div class="padding-bottom10"><small>' . tt('Price will be saved (converted) in the default currency on the site', 'apartments') . ' - ' . Currency::getDefaultCurrencyModel()->name . '</small></div>';
//        }
if ($model->isPriceFromTo()) {
    echo tc('price_from') . ' ' . $form->textField($model, 'price', array('class' => 'width100 noblock'));
    echo ' ' . tc('price_to') . ' ' . $form->textField($model, 'price_to', array('class' => 'width100'));
} else {
    echo $form->textField($model, 'price', array('class' => 'width100'));
}
if (issetModule('currency')) {
    // Даем вводить ценую только в дефолтной валюте
    echo '&nbsp;' . Currency::getDefaultCurrencyName();
    $model->in_currency = Currency::getDefaultCurrencyModel()->char_code;
    echo $form->hiddenField($model, 'in_currency');
    // $form->dropDownList($model, 'in_currency', Currency::getActiveCurrencyArray(2), array('class' => 'width120'))
} else {
    echo '&nbsp;' . param('siteCurrency', '$');
}
if ($model->type == Apartment::TYPE_RENT) {
    $priceArray = Apartment::getPriceArray($model->type);
    if (!in_array($model->price_type, array_keys($priceArray))) {
        $model->price_type = Apartment::PRICE_PER_MONTH;
    }
    echo '&nbsp;' . $form->dropDownList($model, 'price_type', Apartment::getPriceArray($model->type), array('class' => 'width150'));
}
?>
    </div>
Beispiel #4
0
echo $form->dropDownList($model, 'paid_service_id', PaidServices::getListForEdit());
?>
		<?php 
echo $form->error($model, 'paid_service_id');
?>
    </div>

    <div class="rowold">
		<?php 
echo $form->labelEx($model, 'price');
?>
		<?php 
echo $form->textField($model, 'price');
?>
		<span><?php 
echo Currency::getDefaultCurrencyModel()->name;
?>
</span>
		<?php 
echo $form->error($model, 'price');
?>
    </div>

    <div class="rowold">
		<?php 
echo $form->labelEx($model, 'duration_days');
?>
		<?php 
echo $form->textField($model, 'duration_days');
?>
		<?php 
Beispiel #5
0
 public function setDefault()
 {
     @set_time_limit(0);
     @ini_set('max_execution_time', 0);
     if ($this->is_default || !$this->active) {
         return false;
     }
     $packetNum = 100;
     if ($this->convert_data) {
         $char_code_from = Currency::getDefaultCurrencyModel()->char_code;
         $char_code_to = $this->char_code;
         //deb($char_code_from . ' - ' . $char_code_to); exit;
         foreach ($this->_modelsWithCurrencyField as $modelName) {
             $model = new $modelName();
             $table = $model->tableName();
             $modelCurrencyFields = $model->currencyFields();
             foreach ($modelCurrencyFields as $field) {
                 $sql = "SELECT `id`, `{$field}` FROM {$table}";
                 $allIds = Yii::app()->db->createCommand($sql)->queryAll();
                 $i = 0;
                 $sqlArr = array();
                 foreach ($allIds as $item) {
                     if ($item[$field] <= 0) {
                         continue;
                     }
                     $convertValue = (int) $this->convert($item[$field], $char_code_from, $char_code_to);
                     $sqlArr[] = "UPDATE {$table} SET `{$field}`={$convertValue} WHERE id=" . $item['id'] . ";";
                     $i++;
                     if ($i >= $packetNum) {
                         $sql = implode("\n", $sqlArr);
                         //logs($sql);
                         Yii::app()->db->createCommand($sql)->execute();
                         $sqlArr = array();
                         $i = 0;
                     }
                 }
                 if ($sqlArr) {
                     $sql = implode("\n", $sqlArr);
                     //logs($sql);
                     Yii::app()->db->createCommand($sql)->execute();
                 }
             }
         }
     }
     $this->scenario = 'set_default';
     $this->is_default = 1;
     $this->update('is_default');
     self::$_defaultCurrencyModel = null;
     return true;
 }
Beispiel #6
0
 public function getDescriptionForBuy()
 {
     $html = '';
     $description = $this->getDescription();
     if ($description) {
         $html .= '<div class="buy_descr_tariff">' . $description . '</div>';
     }
     if ($this->price) {
         $html .= '<div class="buy_price_tariff">' . tt('Price', 'tariffPlans') . ': <strong>' . $this->price . '</strong> ' . Currency::getDefaultCurrencyModel()->name . '</div>';
     } else {
         $html .= '<div class="buy_price_tariff">' . tt('Price', 'tariffPlans') . ': <span class="tariff_unlimited">' . tt('Price is free', 'tariffPlans') . '</span></div>';
     }
     if ($this->duration) {
         $html .= '<div class="buy_duration_tariff">' . tt('Duration', 'tariffPlans') . ': <strong>' . $this->duration . '</strong> ' . tt('days', 'tariffPlans') . '</div>';
     } else {
         $html .= '<div class="buy_duration_tariff">' . tt('Duration', 'tariffPlans') . ': <span class="tariff_unlimited">' . tt('Unlimited', 'tariffPlans') . '</span></div>';
     }
     if ($this->limit_objects) {
         $html .= '<div class="buy_objects_tariff">' . tt('Limit_objects', 'tariffPlans') . ': <strong>' . $this->limit_objects . '</strong></div>';
     } else {
         $html .= '<div class="buy_objects_tariff">' . tt('Limit_objects', 'tariffPlans') . ': <span class="tariff_unlimited">' . tt('Unlimited', 'tariffPlans') . '</span></div>';
     }
     if ($this->limit_photos) {
         $html .= '<div class="buy_photos_tariff">' . tt('Limit_photos', 'tariffPlans') . ': <strong>' . $this->limit_photos . '</strong></div>';
     } else {
         $html .= '<div class="buy_photos_tariff">' . tt('Limit_photos', 'tariffPlans') . ': <span class="tariff_unlimited">' . tt('Unlimited', 'tariffPlans') . '</span></div>';
     }
     if ($this->show_address) {
         $html .= '<div class="buy_on_map_tariff">' . tt('Show_address', 'tariffPlans') . ': <strong>' . tc('Yes') . '</strong></div>';
     } else {
         $html .= '<div class="buy_on_map_tariff">' . tt('Show_address', 'tariffPlans') . ': <strong>' . tc('No') . '</strong></div>';
     }
     if ($this->show_phones) {
         $html .= '<div class="buy_on_map_tariff">' . tt('Show_phones', 'tariffPlans') . ': <strong>' . tc('Yes') . '</strong></div>';
     } else {
         $html .= '<div class="buy_on_map_tariff">' . tt('Show_phones', 'tariffPlans') . ': <strong>' . tc('No') . '</strong></div>';
     }
     return $html;
 }
Beispiel #7
0
 public function beforeSave()
 {
     if (!$this->square) {
         $this->square = 0;
     }
     /***изменено - вставляем пустые значения */
     if (!$this->title_ru) {
         $this->title_ru = '';
     }
     if (!$this->description_ru) {
         $this->description_ru = '';
     }
     if (!$this->description_near_ru) {
         $this->description_near_ru = '';
     }
     if (!$this->address_ru) {
         $this->address_ru = '';
     }
     if (!$this->date_up_search) {
         $timestamp = '01/01/2100 00:00:00';
         $timestamp = DateTime::createFromFormat('d/m/Y H:i:s', $timestamp);
         $this->date_up_search = $timestamp->format('Y-m-d H:i:s');
     }
     if (!$this->is_special_offer) {
         $this->is_special_offer = '';
     }
     if (!$this->is_free_from) {
         $timestamp = '01/01/2000 00:00:00';
         $timestamp = DateTime::createFromFormat('d/m/Y H:i:s', $timestamp);
         $this->is_free_from = $timestamp->format('Y-m-d H:i:s');
     }
     if (!$this->is_free_to) {
         $timestamp = '01/01/2100 00:00:00';
         $timestamp = DateTime::createFromFormat('d/m/Y H:i:s', $timestamp);
         $this->is_free_to = $timestamp->format('Y-m-d H:i:s');
     }
     if (!$this->exchange_to_ru) {
         $this->exchange_to_ru = '';
     }
     if (!$this->note) {
         $this->note = '';
     }
     if (!$this->phone) {
         $this->phone = '';
     }
     if (!$this->sublocation_id) {
         $this->sublocation_id = 0;
     }
     if (!$this->location_id) {
         $this->location_id = '';
     }
     if (!$this->price_old) {
         $this->price_old = 0;
     }
     /*************************/
     if (!$this->land_square) {
         $this->land_square = 0;
     }
     if ($this->isNewRecord) {
         $this->owner_id = $this->owner_id ? $this->owner_id : Yii::app()->user->id;
         $userInfo = User::model()->findByPk($this->owner_id, array('select' => 'isAdmin'));
         if ($userInfo && $userInfo->isAdmin == 1) {
             $this->owner_active = self::STATUS_ACTIVE;
         }
         if ($this->active != Apartment::STATUS_DRAFT) {
             // if admin
             if ($userInfo && $userInfo->isAdmin == 1) {
                 $this->active = Apartment::STATUS_ACTIVE;
             } else {
                 if (param('useUseradsModeration')) {
                     $this->active = self::STATUS_MODERATION;
                 }
             }
         }
         $maxSorter = Yii::app()->db->createCommand()->select('MAX(sorter) as maxSorter')->from($this->tableName())->queryScalar();
         $this->sorter = $maxSorter + 1;
         if ($this->obj_type_id == 0) {
             $this->obj_type_id = Yii::app()->db->createCommand('SELECT MIN(id) FROM {{apartment_obj_type}}')->queryScalar();
         }
     }
     if (!isFree()) {
         $defaultCurrencyCharCode = Currency::getDefaultCurrencyModel()->char_code;
         if ($defaultCurrencyCharCode != $this->in_currency) {
             $this->price = (int) Currency::convert($this->price, $this->in_currency, $defaultCurrencyCharCode);
             if (isset($this->price_to) && $this->price_to) {
                 $this->price_to = (int) Currency::convert($this->price_to, $this->in_currency, $defaultCurrencyCharCode);
             }
         }
     }
     switch ($this->type) {
         case self::TYPE_SALE:
             $this->price_type = self::PRICE_SALE;
             break;
         case self::TYPE_BUY:
             $this->price_type = self::PRICE_BUY;
             break;
         case self::TYPE_RENTING:
             $this->price_type = self::PRICE_RENTING;
             break;
         case self::TYPE_CHANGE:
             $this->price_type = self::PRICE_CHANGE;
             break;
         case self::TYPE_MORTGAGE:
             $this->price_type = self::PRICE_MORTGAGE;
             break;
         case self::TYPE_PRIVATISATION:
             $this->price_type = self::PRICE_PRIVATISATION;
             break;
     }
     if (isset($_POST['set_period_activity']) && $_POST['set_period_activity'] == 1 && $this->period_activity) {
         $list = self::getPeriodActivityList();
         if (isset($list[$this->period_activity])) {
             if ($this->period_activity == 'always') {
                 $this->activity_always = 1;
             } else {
                 $this->date_end_activity = date('Y-m-d', strtotime($this->period_activity, time()));
                 $this->activity_always = 0;
             }
         }
     }
     return parent::beforeSave();
 }
Beispiel #8
0
<?php

$this->pageTitle = Yii::app()->name . ' - ' . tt('Manage tariff plans', 'tariffPlans');
$this->menu = array(array('label' => tt('Add tariff plan'), 'url' => array('create')));
$this->adminTitle = tt('Manage tariff plans', 'tariffPlans');
$this->widget('CustomGridView', array('id' => 'tariff-plans-grid', 'dataProvider' => $model->search(), 'filter' => $model, 'afterAjaxUpdate' => 'function(){$("a[rel=\'tooltip\']").tooltip(); $("div.tooltip-arrow").remove(); $("div.tooltip-inner").remove();}', 'columns' => array(array('name' => 'active', 'type' => 'raw', 'value' => 'Yii::app()->controller->returnStatusHtml($data, "tariff-plans-grid", 1, TariffPlans::DEFAULT_TARIFF_PLAN_ID)', 'htmlOptions' => array('class' => 'infopages_status_column'), 'filter' => false, 'sortable' => false), 'name', array('name' => 'show_address', 'value' => '($data->show_address) ? tc("Yes") : tc("No")', 'sortable' => false, 'filter' => array(0 => tc('No'), 1 => tc('Yes'))), array('name' => 'show_phones', 'value' => '($data->show_phones) ? tc("Yes") : tc("No")', 'sortable' => false, 'filter' => array(0 => tc('No'), 1 => tc('Yes'))), array('name' => 'limit_objects', 'value' => '$data->getLimitObjectForGrid()', 'sortable' => false), array('name' => 'limit_photos', 'value' => '$data->getLimitPhotosForGrid()', 'sortable' => false), array('header' => tt('Price', 'tariffPlans') . ', (' . Currency::getDefaultCurrencyModel()->name . ')', 'name' => 'price', 'value' => '$data->getPriceForGrid()', 'sortable' => false), array('header' => tt('Duration', 'tariffPlans') . ', (' . tt('days') . ')', 'name' => 'duration', 'value' => '$data->getDurationForGrid()', 'sortable' => false), array('class' => 'bootstrap.widgets.TbButtonColumn', 'deleteConfirmation' => tt('Are you sure you want to delete this item? All user tariffs will also be deleted!'), 'template' => '{update}{delete}', 'buttons' => array('delete' => array('visible' => '$data->id != TariffPlans::DEFAULT_TARIFF_PLAN_ID'))))));
Beispiel #9
0
 public function actionIndex()
 {
     if (Yii::app()->user->isGuest) {
         throw404();
     }
     $this->setActiveMenu('my_payments');
     $request = Yii::app()->request;
     $ad_id = $request->getParam('id', 0);
     $paid_id = $request->getParam('paid_id');
     $isFancy = $request->getParam('isFancy', 0);
     $paySubmit = $request->getParam('pay_submit');
     $tariffId = $request->getParam('tariffid', 0);
     if ($paySubmit) {
         $optionId = $request->getParam('option_id');
         $paySystemId = $request->getParam('pay_id');
         $amount = $request->getParam('amount', 0);
         $error = 0;
         // Если это поплнение баланса
         if ($paid_id == PaidServices::ID_ADD_FUNDS && $amount <= 0) {
             $this->setActiveMenu('my_balance');
             Yii::app()->user->setFlash('error', tc('Please specify the amount of the payment'));
             $error = 1;
         }
         Yii::app()->getModule('payment');
         $paysystem = Paysystem::model()->findByPk($paySystemId);
         if (!$paysystem) {
             throw404();
         }
         # покупка тарифного плана
         if ($tariffId && issetModule('tariffPlans')) {
             $tariffPlanInfo = TariffPlans::getFullTariffInfoById($tariffId);
             $paidOption = new PaidOptions();
             $paidOption->id = 0;
             if (!$tariffPlanInfo || $tariffPlanInfo['active'] == TariffPlans::STATUS_INACTIVE) {
                 throw404();
             }
             if ($tariffPlanInfo['price'] && $tariffPlanInfo['price'] > 0) {
                 // Если оплата тарифа с баланса пользователя
                 if ($paySystemId == Paysystem::ID_BALANCE) {
                     $user = User::model()->findByPk(Yii::app()->user->id);
                     if ($user->balance < $tariffPlanInfo['price']) {
                         Yii::app()->user->setFlash('error', tc('Please refill the balance'));
                         $error = 2;
                         $this->redirect(array('/tariffPlans/main/index'));
                     }
                 }
             } else {
                 # бесплатный тариф
                 Yii::app()->user->setFlash('error', tt('Selected tariff plan is free. Please contact the site administrator for transit to this tariff.', 'tariffPlans'));
                 $error = 2;
                 $this->redirect(array('/tariffPlans/main/index'));
             }
         } else {
             if ($paid_id != PaidServices::ID_ADD_FUNDS) {
                 $ad = Apartment::model()->findByPk($ad_id);
                 $paidOption = PaidOptions::model()->findByPk($optionId);
                 if (!$ad || !$paidOption || !isset($paidOption->paidService)) {
                     throw404();
                 }
                 // Если оплата платной услуги с баланса пользователя
                 if ($paySystemId == Paysystem::ID_BALANCE) {
                     $user = User::model()->findByPk(Yii::app()->user->id);
                     if ($user->id != $ad->owner_id || $ad->deleted) {
                         throw404();
                     }
                     if ($user->balance < $paidOption->price) {
                         Yii::app()->user->setFlash('error', tc('Please refill the balance'));
                         $error = 2;
                     }
                 }
             }
         }
         $paysystem->createPayModel();
         if ($paysystem->payModel === null) {
             throw404();
         }
         if ($error == 0) {
             // Создаем платеж и ставим ему статус "Ожидает оплаты"
             $payment = new Payments();
             $payment->user_id = Yii::app()->user->id;
             $payment->paid_id = $paid_id;
             if ($paid_id != PaidServices::ID_ADD_FUNDS) {
                 $payment->paid_option_id = $paidOption->id;
             }
             $payment->apartment_id = $ad_id;
             $payment->tariff_id = $tariffId;
             if ($tariffId && issetModule('tariffPlans')) {
                 $payment->amount = $tariffPlanInfo['price'];
             } else {
                 $payment->amount = $paid_id == PaidServices::ID_ADD_FUNDS ? $amount : $paidOption->price;
             }
             $payment->currency_charcode = Currency::getDefaultCurrencyModel()->char_code;
             $payment->status = Payments::STATUS_WAITPAYMENT;
             $payment->paysystem_id = $paysystem->id;
             $payment->save();
             /*echo '<pre>';
             		print_r($payment->getErrors());
             		echo '</pre>';
             		exit;*/
             // Передаем платеж на обработку в модель платежки.
             // Приложение либо звершается (происходит редирект по нужному адресу),
             // либо выдает сообщение, которое будет отображено пользователю
             $return = $paysystem->payModel->processPayment($payment);
             switch ($return['status']) {
                 case Paysystem::RESULT_OK:
                     Yii::app()->user->setFlash('success', $return['message']);
                     $this->redirect(array('/usercpanel/main/payments'));
                     break;
                 case Paysystem::RESULT_NOTICE:
                     Yii::app()->user->setFlash('notice', $return['message']);
                     $this->redirect(array('/userads/main/update', 'id' => $payment->apartment_id));
                     break;
                 case Paysystem::RESULT_ERROR:
                     Yii::app()->user->setFlash('error', $return['message']);
                     $this->redirect(array('/userads/main/update', 'id' => $payment->apartment_id));
                     break;
                 default:
                     $this->render('result', array('payment' => $payment, 'paysystem' => $paysystem, 'message' => $return['message']));
             }
             echo 'Loading ... ';
             exit;
         }
     }
     if ($paid_id != PaidServices::ID_ADD_FUNDS) {
         $apartment = Apartment::model()->findByPk($ad_id);
         if ($apartment->active != Apartment::STATUS_ACTIVE || $apartment->owner_active != 1) {
             echo '<h2>' . tt('To apply a paid service for the listing, it should be active.', 'paidservices') . '</h2>';
             exit;
         }
     }
     $paidService = PaidServices::model()->findByPk($paid_id);
     if (!$paidService || !$paidService->active) {
         throw404();
     }
     if ($paid_id == PaidServices::ID_ADD_IN_SLIDER) {
         $img = Images::getMainImageData(null, $apartment->id);
         if (!$img) {
             Yii::app()->user->setFlash('error', tt('Error! You must upload the image for the ad.', 'paidservices'));
             if (!$isFancy) {
                 $this->redirect(array('/userads/main/update', 'id' => $ad_id));
             } else {
                 echo tt('Error! You must upload the image for the ad.', 'paidservices');
             }
             Yii::app()->end();
         }
     }
     if (!isset($user)) {
         $user = User::model()->findByPk(Yii::app()->user->id);
     }
     if ($isFancy || Yii::app()->request->isAjaxRequest) {
         $this->excludeJs();
         if ($tariffId && issetModule('tariffPlans')) {
             $this->redirect(array('/tariffPlans/main/index'));
         } else {
             $this->renderPartial('paidform', array('paidService' => $paidService, 'user' => $user, 'ad_id' => $ad_id, 'isFancy' => true), false, true);
         }
     } else {
         if ($tariffId && issetModule('tariffPlans')) {
             $this->redirect(array('/tariffPlans/main/index'));
         } else {
             $this->render('paidform', array('paidService' => $paidService, 'user' => $user, 'ad_id' => $ad_id, 'isFancy' => false));
         }
     }
 }