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; } }
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)); }