예제 #1
0
 public function actionAjaxfastorder($id)
 {
     $ret = array();
     $ret['error'] = '';
     $id = intval($id);
     if (!$id) {
         $ret['error'] = 'Неверный ID товара';
         echo json_encode($ret);
         exit;
     }
     $model_catalog_element = CatalogElements::model()->find("id=" . $id);
     if (!$model_catalog_element) {
         $ret['error'] = 'Товар ' . $id . ' не существует';
         echo json_encode($ret);
         exit;
     }
     $_name = isset($_POST['name']) ? $_POST['name'] : '';
     $_phone = isset($_POST['phone']) ? $_POST['phone'] : '';
     $_email = isset($_POST['email']) ? $_POST['email'] : '';
     if (strlen($_name) < 3) {
         $ret['error'] = 'Имя не может бть короче 3 символов';
         echo json_encode($ret);
         exit;
     }
     if (strlen($_phone) < 6) {
         $ret['error'] = 'Телефон не может быть короче 6 символов';
         echo json_encode($ret);
         exit;
     }
     if (strlen($_email) < 6) {
         $ret['error'] = 'Email не может быть короче 6 символов';
         echo json_encode($ret);
         exit;
     }
     $comment = "На сайте " . $_SERVER['HTTP_HOST'] . " сделан заказ с помощью формы быстрого заказа" . "\r\n" . "Имя: " . $_name . "\r\n" . "Email: " . $_email . "\r\n" . "Телефон: " . $_phone . "\r\n" . "Товар: " . $model_catalog_element->name . "\r\n" . "Цена товара: " . $model_catalog_element->price . "\r\n" . "Страница товара: http://" . $_SERVER['HTTP_HOST'] . '/catalog/' . $model_catalog_element->id . "\r\n" . "Свяжитесь с клиентом для уточнения деталей заказа.";
     $message = $comment;
     $sms = SiteModuleSettings::model()->find('site_module_id = 4');
     if ($sms) {
         $email = $sms->email;
         mail($email, 'Cделан быстрый заказ на сайте ' . $_SERVER['HTTP_HOST'], $message);
         $ret['confirm'] = 'OK';
         if (Yii::app()->user->isGuest) {
             //Регистрируем пользователя, если он не был зарегистрирован
             if (!($model = User::model()->find('email LIKE "' . $_email . '"'))) {
                 $password = Yii::app()->helper->random(6, '0123456789');
                 $model = new User();
                 $model->email = $_email;
                 $model->password = $password;
                 $model->password_repeat = $model->password;
                 $model->role_id = 'user';
                 $model->username = $model->email;
                 $model->state = 1;
                 //Сразу активируем аккаунт
                 if ($model->save()) {
                     //отправляем заказчику письмо с новым паролем
                     $message = "На сайте " . $_SERVER['HTTP_HOST'] . " был создан Ваш профиль:" . "\r\n" . "Логин: " . $model->email . "\r\n" . "Пароль: " . $password . "\r\n";
                     mail($_email, 'Вы были зарегистрированы на сайте ' . $_SERVER['HTTP_HOST'], $message);
                 }
             }
         } else {
             $model = User::model()->findByPk(Yii::app()->user->id);
         }
         $message = "Данные о Вашем заказе:" . "\r\n" . "Имя: " . $_name . "\r\n" . "Email: " . $_email . "\r\n" . "Телефон: " . $_phone . "\r\n" . "Товар: " . $model_catalog_element->name . "\r\n" . "Цена товара: " . $model_catalog_element->price . "\r\n" . "Страница товара: http://" . $_SERVER['HTTP_HOST'] . '/catalog/' . $model_catalog_element->id . "\r\n" . "Мы свяжемся с Вами в ближайшее время!";
         mail($_email, 'Данные о Вашем заказе на  сайте ' . $_SERVER['HTTP_HOST'], $message);
         //Фиксируем заказ в БД
         $modelOrder = new BasketOrder();
         $modelOrder->user_id = $model->id;
         $modelOrder->phone = $_phone;
         $modelOrder->comments = $comment;
         $modelOrder->status_at = date('Y-m-d H:i:s');
         if ($modelOrder->save()) {
             $modelItem = new BasketItems();
             $modelItem->basket_order_id = $modelOrder->id;
             $modelItem->module = 'catalog';
             $modelItem->url = '/catalog/' . $model_catalog_element->id;
             $modelItem->quantity = 1;
             $modelItem->price = $model_catalog_element->price;
             $modelItem->save();
         }
         echo json_encode($ret);
         exit;
     } else {
         $ret['confirm'] = 'Error';
         echo json_encode($ret);
         exit;
     }
 }
예제 #2
0
 public function actionIndex()
 {
     //Не оформленые товары
     //$modelBasketOrder = BasketOrder::model()->find('status=0 AND user_id = '.(int)Yii::app()->user->id);
     //$modelBasket = BasketItems::model()->findAll('basket_order_id='.$modelBasketOrder->id);
     $modelBasketOrder = new BasketOrder();
     $modelBasket = new BasketItems();
     $product = array();
     //Тянем из куки заказаные товары
     $cookies = Yii::app()->request->cookies;
     $basket = array();
     if (isset($cookies['basket'])) {
         $basket = $cookies['basket']->value;
         $basket = unserialize($basket);
     }
     if (isset($_POST['BasketOrder']) || isset($cookies['basket_addres'])) {
         if (isset($_POST['BasketOrder'])) {
             $basket_addres = array();
             $basket_addres['address'] = $_POST['BasketOrder']['address'];
             $basket_addres['phone'] = $_POST['BasketOrder']['phone'];
             $basket_addres['comments'] = $_POST['BasketOrder']['comments'];
             $basket_addres = new CHttpCookie('basket_addres', serialize($basket_addres));
             $cookies['basket_addres'] = $basket_addres;
         }
         //Если пользователь не авторизован - перенаправляем на авторизацию
         if (Yii::app()->user->isGuest) {
             $this->redirect('/login');
         }
         //Получаем значения из куки
         $basket = $cookies['basket']->value;
         $basket = unserialize($basket);
         $basket_addres = $cookies['basket_addres']->value;
         $basket_addres = unserialize($basket_addres);
         //Убиваем куки
         unset($cookies['basket']);
         unset($cookies['basket_addres']);
         //Пишим в БД
         $modelBasketOrder->user_id = Yii::app()->user->id;
         $modelBasketOrder->address = $basket_addres['address'];
         $modelBasketOrder->phone = $basket_addres['phone'];
         $modelBasketOrder->comments = $basket_addres['comments'];
         $modelBasketOrder->status = 1;
         $modelBasketOrder->status_at = date('Y-m-d H:i:s');
         if ($modelBasketOrder->save()) {
             foreach ($basket as $key => $val) {
                 $modelBasket = new BasketItems();
                 $modelBasket->basket_order_id = $modelBasketOrder->id;
                 $modelBasket->module = $val['module'];
                 $modelBasket->url = $val['url'];
                 $modelBasket->quantity = (int) $val['quantity'];
                 $modelBasket->item = $val['item'];
                 //Цена есть в куки, но мы ее пересчитаем сами - защита от "умных" пользователей
                 $modelBasket->price = BasketItems::model()->returnPrice($modelBasket->item, $modelBasket->quantity);
                 $modelBasket->trueprice = CatalogElements::model()->findByPk($val['item'])->price;
                 $modelBasket->save();
             }
             //отправляем письмо админу о заказе
             $this->sendEmailAdmin($modelBasketOrder->id);
             $this->redirect('/basket/success');
         }
     }
     $i = 0;
     $discount = array();
     foreach ($basket as $key => $val) {
         //Получаем о товаре данные
         $table_name = 'catalog_elements';
         $requests = Yii::app()->db->createCommand()->select('name, code, qty, price, price_entering')->from('{{' . $table_name . '}}')->where('id = ' . (int) $val['item'])->queryRow();
         $product[$i]['element'] = (int) $val['item'];
         $product[$i]['key'] = $key;
         $product[$i]['quantity'] = $val['quantity'];
         $product[$i]['name'] = $requests['name'];
         $product[$i]['code'] = $requests['code'];
         $product[$i]['qty'] = $requests['qty'];
         $product[$i]['price'] = $val['price'];
         ++$i;
     }
     if (!Yii::app()->user->isGuest) {
         $user_data = User::model()->findByPk(Yii::app()->user->id);
         $modelBasketOrder->phone = $user_data->phone;
         $modelBasketOrder->address = !empty($modelBasketOrder->address) ? $modelBasketOrder->address : $user_data->fiz_addres;
     }
     $this->render('index', array('model' => $product, 'discount' => $discount, 'modelBasketOrder' => $modelBasketOrder));
 }