diff --git a/common/models/Basket.php b/common/models/Basket.php index 3330951..510d57e 100755 --- a/common/models/Basket.php +++ b/common/models/Basket.php @@ -46,7 +46,7 @@ if($data[$product_variant_id]['count'] <= 0) { unset($data[$product_variant_id]); } - } else { + } elseif($count > 0) { $model = $this->findModel($product_variant_id); $data[ $product_variant_id ] = [ 'price' => $model->price, @@ -56,6 +56,10 @@ $this->setData($data); } + public function delete(int $product_variant_id) { + $this->set($product_variant_id, 0); + } + public function getData(): array { return $this->session->get('basket'); diff --git a/common/widgets/Mailer.php b/common/widgets/Mailer.php index 1b8a8af..0a522b8 100755 --- a/common/widgets/Mailer.php +++ b/common/widgets/Mailer.php @@ -22,40 +22,30 @@ class Mailer extends Widget{ public function run(){ $mail = new \PHPMailer(); - + + /* */ $mail->IsSMTP(); - $mail->SMTPOptions = array( - 'ssl' => array( - 'verify_peer' => false, - 'verify_peer_name' => false, - 'allow_self_signed' => true - ) - ); - $mail->Host = "195.248.225.139"; - $mail->SMTPDebug = true; - $mail->SMTPAuth = 0; - $mail->Port = 25; + $mail->SMTPDebug = 1; + $mail->SMTPAuth = true; + $mail->SMTPSecure = 'ssl'; + $mail->Host = 'smtp.gmail.com'; + $mail->Port = 465; $mail->CharSet = 'UTF-8'; - $mail->Username = ""; - $mail->Password = ""; - $mail->SetFrom('Rukzachok.com.ua@gmail.com'); + $mail->Username = "proekant.net@gmail.com"; + $mail->Password = "proektant112233"; + $mail->SetFrom('proekant.net@gmail.com'); $mail->Subject = $this->subject; $mail->MsgHTML($this->render($this->type, ['params' => $this->params])); - $address = "Rukzachok.com.ua@gmail.com"; + $address = "slava.up@gmail.com"; $mail->AddAddress($address); $mail->AddAddress($this->email); - $mail->AddAddress('dockdep@gmail.com'); + /* */ if(!$mail->send()) { - \Yii::$app->getSession()->setFlash('error', 'Mailer Error: ' . $mail->ErrorInfo); - return 'Mailer Error: ' . $mail->ErrorInfo; } else { - - return 'Message has been sent'; } } - } diff --git a/common/widgets/views/order.php b/common/widgets/views/order.php index fe7d6ec..f069e91 100755 --- a/common/widgets/views/order.php +++ b/common/widgets/views/order.php @@ -107,7 +107,7 @@
-
+
diff --git a/frontend/controllers/BasketController.php b/frontend/controllers/BasketController.php index 006a1bc..01fa1af 100755 --- a/frontend/controllers/BasketController.php +++ b/frontend/controllers/BasketController.php @@ -1,78 +1,106 @@ response; - $response->format = Response::FORMAT_JSON; - /** - * @var Basket $basket - */ - $basket = \Yii::$app->basket; - $result = [ - 'basket' => $basket->getData(), - 'modal' => $this->getModal($basket), - ]; - return $result; - } - public function actionAdd(int $product_variant_id, int $count) { - $response = \Yii::$app->response; - $response->format = Response::FORMAT_JSON; - /** - * @var Basket $basket - */ - $basket = \Yii::$app->basket; - $basket->add($product_variant_id, $count); - $result = [ - 'basket' => $basket->getData(), - 'modal' => $this->getModal($basket), - ]; - return $result; - } - public function actionSet(int $product_variant_id, int $count) { - $response = \Yii::$app->response; - $response->format = Response::FORMAT_JSON; + + namespace frontend\controllers; + + use common\models\Basket; + use yii\web\Response; + + class BasketController extends \yii\web\Controller + { + + public $enableCsrfValidation = false; + + public function actionIndex() + { + $response = \Yii::$app->response; + $response->format = Response::FORMAT_JSON; + /** + * @var Basket $basket + */ + $basket = \Yii::$app->basket; + $result = [ + 'basket' => $basket->getData(), + 'modal' => $this->getModal($basket), + 'cart' => $this->getCart($basket), + ]; + return $result; + } + + public function actionAdd(int $product_variant_id, int $count) + { + $response = \Yii::$app->response; + $response->format = Response::FORMAT_JSON; + /** + * @var Basket $basket + */ + $basket = \Yii::$app->basket; + $basket->add($product_variant_id, $count); + $result = [ + 'basket' => $basket->getData(), + 'modal' => $this->getModal($basket), + 'cart' => $this->getCart($basket), + ]; + return $result; + } + + public function actionSet(int $product_variant_id, int $count) + { + $response = \Yii::$app->response; + $response->format = Response::FORMAT_JSON; + /** + * @var Basket $basket + */ + $basket = \Yii::$app->basket; + $basket->set($product_variant_id, $count); + $result = [ + 'basket' => $basket->getData(), + 'modal' => $this->getModal($basket), + 'cart' => $this->getCart($basket), + ]; + return $result; + } + + public function actionTest() + { + /** + * @var Basket $basket + */ + $basket = \Yii::$app->basket; + $modal = $this->getModal($basket); + return $modal; + } + /** - * @var Basket $basket + * @var $basket \common\models\Basket + * @return string modal_items */ - $basket = \Yii::$app->basket; - $basket->set($product_variant_id, $count); - $result = [ - 'basket' => $basket->getData(), - 'modal' => $this->getModal($basket), - ]; - return $result; - } - public function actionTest() { + public function getModal($basket): string + { + $output = ''; + $data = $basket->getData(); + $models = $basket->findModels(array_keys($data)); + if(!empty( $models )) { + $output = $this->renderAjax('modal_items', [ + 'models' => $models, + 'basket' => $basket, + ]); + } + return $output; + } + /** - * @var Basket $basket + * @param Basket $basket + * + * @return string */ - $basket = \Yii::$app->basket; - $modal = $this->getModal($basket); - return $modal; - } - - /** - * @var $basket \common\models\Basket - * @return string modal_items - */ - public function getModal($basket): string - { - $output = ''; - $data = $basket->getData(); - $models = $basket->findModels(array_keys($data)); - if(!empty( $models )) { - $output = $this->renderAjax('modal_items', [ - 'models' => $models, - 'basket' => $basket, + public function getCart($basket): string + { + $count = $basket->getCount(); + $sum = $basket->getSum(); + $output = $this->renderPartial('cart', [ + 'count' => $count, + 'sum' => $sum, ]); + return $output; } - return $output; } -} diff --git a/frontend/controllers/OrderController.php b/frontend/controllers/OrderController.php index 6e345f8..a2e2068 100755 --- a/frontend/controllers/OrderController.php +++ b/frontend/controllers/OrderController.php @@ -44,38 +44,25 @@ class OrderController extends Controller */ $basket = \Yii::$app->basket; $productV = $basket->getData(); - if(!empty($productV) && $modelOrder->load(Yii::$app->request->post())&& $modelOrder->save()){ - foreach ($productV as $index=>$row) { $modelOrdersProducts = new OrdersProducts(); $mod_id = $index; - - $product = ProductVariant::findOne($mod_id); /** * Проверяем товар на наличие */ - if(!$product->stock > 0 || !$product->price > 0 ){ - /** * Добавляем сообщение об ошибке */ \Yii::$app->getSession()->setFlash('error', 'К сожалению товара '.$product->name . ' нет в наличии'); - /** - * Удаляем заказ - */ - $modelOrder->delete(); - + $basket->delete($product->product_variant_id); + unset($productV[$index]); }else { - /** * Удаляем товар с массива и сохраняем в заказ */ - - - $modelOrdersProducts->order_id = $modelOrder->id; $modelOrdersProducts->product_name = $product->product->name; $modelOrdersProducts->name = $product->name; @@ -89,14 +76,10 @@ class OrderController extends Controller $productV[$index] = ArrayHelper::toArray($modelOrdersProducts); $productV[$index]['img'] = \common\components\artboximage\ArtboxImageHelper::getImageSrc($product->image->imageUrl, 'list'); } - } - /** * Сохраняем заказ */ - - if(!Yii::$app->user->id && !empty($modelOrder->email)){ $modelUser = new Customer(); $modelUser->role = 'person'; @@ -111,9 +94,7 @@ class OrderController extends Controller /** * Чистим сессию корзины */ - $modelOrder->clearBasket(); - Mailer::widget( ['type' => 'order', 'subject'=> 'Спасибо за покупку', @@ -123,16 +104,11 @@ class OrderController extends Controller 'variants' => $productV, ] ]); - //$text = "# zakaz: ". $order->id .". V blijayshee vremya menedjer svyajetsya s Vami. (044) 303 90 15"; //Yii::$app->sms->send($order->phone, $text); - Yii::$app->session['order_data']= ['order' => $order,'variants'=>$productV]; - - return $this->redirect(['order/success', - ]); + return $this->redirect(['order/success']); } - $data = $basket->getData(); $models = $basket->findModels(array_keys($data)); return $this->render('index', [ @@ -142,9 +118,7 @@ class OrderController extends Controller } public function actionSuccess(){ - return $this->render('success', [ - - ]); + return $this->render('success'); } public function actionQuick() { diff --git a/frontend/views/basket/cart.php b/frontend/views/basket/cart.php new file mode 100755 index 0000000..e70df6d --- /dev/null +++ b/frontend/views/basket/cart.php @@ -0,0 +1,18 @@ + + +

грн

+
+ + + +
+
\ No newline at end of file diff --git a/frontend/views/layouts/main.php b/frontend/views/layouts/main.php index 906e96e..ce9fa69 100755 --- a/frontend/views/layouts/main.php +++ b/frontend/views/layouts/main.php @@ -1,674 +1,749 @@ -beginPage () ?> - - - - head () ?> - - - - - - - - - - - - - - - - - - - -beginBody () ?> - - - -
-
-
-
-
- - -
-
- +beginPage() ?> + + - -
-
-
- -
- user->isGuest){ - echo Html::a('Личный кабинет', Url::to('#'),['data-toggle' => 'modal', 'data-target' => '#myAccount', 'class' => 'cabinet_link_']); - } else{ - echo Html::a(''.Yii::$app->user->identity->username.'', Url::toRoute(['cabinet/index']),['class' => 'cabinet_link_']); - } - ?> -
- -
-
-
-
-
-
-
-
- - - - - - -
- - - - - - - - - - - - - -
- - - - - -

(044) 339-92-33

-
- - - - - -

(044) 282-85-08

- -
- - - - - -

(044) 776-60-67

-
- - - - -
перезвонить мне
-
-
- -

4 250 грн.

-
0
-
-
-
-
- -
- - -
- -
-
- - - - - render('main-menu')?> -
-
- - - ['label' => 'Интернет-магазин светильников', 'url' => Url::to(['/']),'itemprop' => 'url', ], - 'itemTemplate' => "
  • {link}
  • \n", // template for all links - 'links' => isset($this->params['breadcrumbs']) ? $this->params['breadcrumbs'] : [], - ]) - ?> - - - - -
    - - - -
    + head() ?> -
    -
    -
    -
    Вы еще ничего не искали у нас на сайте
    - -
    -
    -
    -
    - -
    -
    -

    Лучшие светодиодные светильники в Киеве

    -

    Как лучше осветить свой дом? Какие светильник, люстра, бра эстетично впишутся в Ваш интерьер? Где купить светильники? Эти и многие подобные вопросы рано или поздно возникают у каждого. Где найти ответы на них? Мы с радостью поможем Вам в решении задачи "светильники Киев купить" Авторизованная сеть магазинов «Лінія світла» предлагает Вашему вниманию не только широкий ассортимент освещения, который удовлетворит самых требовательных покупателей, но также квалифицированные консультации и помощь в выборе современных люстр. В наших магазинах (интернет магазин светильников и сеть магазинов) Вы сможете в любой момент посмотреть выбранные люстры, бра, торшеры, настольные лампы, споты, детские и декоративные светильники, получить исчерпывающую информацию у продавцов-консультантов, а также купить светильник на любой вкус

    -

    У нас вы найдете только качественные светильники цены же на них вас приятно удивят. Наш каталог светильников представлен следующими брэндами: Massive, Eseo, Lirio, Philips. Качество не может стоить дешево, в том числе и светильники, цена на которые на порядок выше дешевых клонов, но наш магазин освещенияпредлагает вам светильник, цена на которые не станет для вас неприятным сюрпризом

    -

    Светильники Massive – это качественные светильники с многолетней историей. Стильный дизайн, надежность и широчайший ассортимент, охватывающий все аспекты освещения – вот почему так популярны светильники от Massive. Светильник – это не только свет, но дополнительный элемент интерьера. Вам необходимо купить светильники, чтобы осветить гостиную, спальню, прихожую? Выбирайте из огромного количества подвесных светильников. Вам покажут каталог светильников и помогут отобрать комплекты, которые гармонично впишутся в Ваш дом и красиво его осветят в темное времяю

    -
    - -
    -
    -
    -
    -
    -
    - -
    + + + + + + + + + + + + + + + + + +beginBody() ?> + + + +
    +
    +
    - -
    - -
    -
    -
    -
    - - - - - - - - - - - - - перезвонить мне - -
    -
    - -
      -
    • продавець-консультант
    • -
    • продавець-кассир
    • -
    - - netreba@eltrade.com.ua -
    -
    - - каталоги -
    -
    - -
    -

    Присоединяйтесь к интернет-магазину Лiнiя Свiтла в социальных сетях. Вы всегда будете в курсе акций, распродаж и новинок.

    -
    - - - - - - - - - - - - - -
    -
    -
    -
    - - - - - - - - - -render('/modal/login_window_model_window') ?> - - -render('/modal/registration_window_model_window')?> - - -render('/modal/forgot_password_form_model_window') ?> -