diff --git a/src/app/frontend/controllers/AjaxController.php b/src/app/frontend/controllers/AjaxController.php
index 4e9aa12..37fc67c 100644
--- a/src/app/frontend/controllers/AjaxController.php
+++ b/src/app/frontend/controllers/AjaxController.php
@@ -173,23 +173,62 @@ class AjaxController extends \controllers\ControllerBase
}
public function applyPromoCodeAction() {
- $this->view->disable();
- $in_cart = $this->session->get('in_cart', []);
- $cart = $this->common->getCartItems($in_cart, $this->lang_id);
+ try {
+
+ $this->view->disable();
+ $in_cart = $this->session->get('in_cart', []);
+ $cart = $this->common->getCartItems($in_cart, $this->lang_id);
+
+ $promo_code = $this->request->getPost( 'promo_code', 'string', '' );
+
+ $promo_code = $this->models->getPromoCodes()->getOneDataByCode($promo_code);
+ $user = isset($this->models->getCustomers()->getOneData($this->session->get('id'))['0']) ? $this->models->getCustomers()->getOneData($this->session->get('id'))['0'] : '';
+
+ if(!empty($promo_code) && $promo_code[0]['single_use']){
+ if( !empty($user)){
+ if(!empty($user['email'])){
+ $data['code'] = $promo_code[0]['code'];
+ $data['email'] = $user['email'];
+ $promo_code_check = $this->models->getPromoToUser()->getOneDataByCode($data);
+ if(!empty($promo_code_check)){
+ throw new \Exception($this->t->_('error_promo_code_already_used'));
+ }
+ } else {
+ throw new \Exception($this->t->_('error_promo_code_empty_email'));
+ }
+ } else {
+ throw new \Exception($this->t->_('error_promo_code_empty_user'));
+ }
- $promo_code = $this->request->getPost( 'promo_code', 'string', '' );
- $promo_code = $this->models->getPromoCodes()->getOneDataByCode($promo_code);
- if(!empty($promo_code)) {
- if($this->common->applyPromoCode($promo_code[0], $cart['items'])) {
- $this->session->set('promo_code', $promo_code[0]);
- $this->common->countOrderSum($cart);
- echo json_encode($cart);
- return;
}
+
+ if(!empty($promo_code)) {
+ if($this->common->applyPromoCode($promo_code[0], $cart['items'])) {
+ $this->session->set('promo_code', $promo_code[0]);
+ $this->common->countOrderSum($cart);
+ echo json_encode(['cart' => $cart,
+ 'successMessage' => $this->t->_('success_promo_code'),
+ 'status'=>'success'
+ ]);
+ return;
+ } else {
+ throw new \Exception($this->t->_('error_promo_code'));
+ }
+ } else {
+ throw new \Exception($this->t->_('error_promo_code_is_empty'));
+ }
+
+ } catch (\Exception $e) {
+
+ echo json_encode(['status'=>'error',
+ 'errorMessage' => $e->getMessage()
+ ]);
+ return null;
}
- return null;
+
+
}
}
\ No newline at end of file
diff --git a/src/app/frontend/controllers/DealerController.php b/src/app/frontend/controllers/DealerController.php
index 2956f06..1f73d05 100644
--- a/src/app/frontend/controllers/DealerController.php
+++ b/src/app/frontend/controllers/DealerController.php
@@ -1520,6 +1520,9 @@ class DealerController extends \controllers\ControllerBase
if( !empty( $order['proposal_number'] ) )
{
+
+
+
$this->sendmail->addCustomer( 2, $order );
$this->session->set( 'in_cart', []);
diff --git a/src/app/frontend/controllers/MenuController.php b/src/app/frontend/controllers/MenuController.php
index 1ec4077..dab0c93 100644
--- a/src/app/frontend/controllers/MenuController.php
+++ b/src/app/frontend/controllers/MenuController.php
@@ -211,6 +211,25 @@ class MenuController extends \controllers\ControllerBase
if( !empty( $order['proposal_number'] ) )
{
+
+
+ /**
+ * single use promo code logic
+ */
+ if(!empty($session_promo_code)){
+ $user = $this->models->getCustomers()->getOneData($this->session->get('id'))['0'];
+
+ if($session_promo_code['single_use'] && !empty($user)){
+ if(!empty($user['email'])){
+ $data['code'] = $session_promo_code['code'];
+ $data['email'] = $user['email'];
+ $this->models->getPromoToUser()->addData($data);
+ }
+
+ }
+ }
+
+
$this->sendmail->addCustomer( 2, $order );
$this->session->set( 'in_cart', []);
diff --git a/src/app/frontend/messages/ru.php b/src/app/frontend/messages/ru.php
index cae0db8..760f303 100644
--- a/src/app/frontend/messages/ru.php
+++ b/src/app/frontend/messages/ru.php
@@ -143,7 +143,7 @@ return array(
"street_two" =>"пр-т Броварской, ст.м. Лесная, в сторону центра Киева;",
"address_two" => "ул. Большая Кольцевая, 110-А, оптово-розничный рынок \"Столичный\", павильон \"Рыба и мясо\";",
"address_three" => "пр-т Академика Глушкова №6, ст.м. Ипподром, напротив Южного автовокзала;",
- "address_four" => "ул. Харьковское шоссе, 166-В, возле магазина \"Сільпо\";",
+ "address_four" => "ул. Харьковское шоссе, 164А, возле магазина \"Сільпо\";",
"address_five" => "пр-т Оболонский 43, ст.м. Героев Днепра;",
"address_six"=>"Киево-Святошинский р-н, с.Крюковщина, ул.Балукова, 14;",
"address_seven"=>"ул. Архитектора Вербицкого, 22/1, возле магазина \"Велика кишеня\";",
@@ -151,7 +151,7 @@ return array(
"new_address_first" => 'ст.м. Лесная, пр-т Броварской, в сторону г. Бровары;',
"new_address_second" => 'ул. Большая Кольцевая, 110-А, оптово-розничный рынок "Столичный", павильон "Рыба и мясо";',
"new_address_third" => 'ст.м. Ипподром, пр-т Академика Глушкова №6, напротив Южного автовокзала;',
- "new_address_fourth" => 'ул. Харьковское шоссе, 166-В, возле магазина "Сільпо";',
+ "new_address_fourth" => 'ул. Харьковское шоссе, 164А, возле магазина "Сільпо";',
"new_address_fifth" => 'пр-т Оболонский 43, ст.м. Героев Днепра;',
"new_address_sixth" => 'Киево-Святошинский р-н, с.Крюковщина, ул.Балукова, 14;',
"new_address_seventh" => 'ул. Архитектора Вербицкого, 22/1, возле магазина "Велика кишеня";',
@@ -388,4 +388,8 @@ return array(
"faq_j_text1" => "В каждой карточке товара указаны все варианты фасовки этой позиции, которые существуют. Профессионалам стоит обратить внимание на большие фасовки. Для того, чтобы узнать наличие и цены на профессиональные упаковки
в блоке «Фасовка» необходимо выбрать ту фасовку, которая я Вас интересует (рис. 16). Если она доступна к заказу, то
в графе «Наличие» зеленым цветом будет отображаться «Есть в наличии». Но, если товар отсутствует в данный момент, то в графе «Наличие» будет отображаться фраза «Отсутствует» (рис.16,17). При интересе к конкретному товару, которого сейчас нет в наличии, Вы можете связаться с нашими менеджерами по номерам телефона, указанным на сайте, для уточнения сроков ближайших поступлений и заблаговременно зарезервировать данный товар. Когда товар появится в наличии, наши менеджеры свяжутся с Вами для оформления заказа.",
"lang_name" => "rus",
"saldo_period" => "за период",
+ "error_promo_code_is_empty" => "Промокод не указан",
+ "error_promo_code_empty_user" => "Промокод требует регистрации",
+ "error_promo_code_empty_email" => "Промокод требует указанный Email в карточке пользователя",
+ "error_promo_code_already_used" => "Данный промокод уже использовался этим пользователем"
);
\ No newline at end of file
diff --git a/src/app/frontend/messages/ua.php b/src/app/frontend/messages/ua.php
index fa73863..cfe0771 100644
--- a/src/app/frontend/messages/ua.php
+++ b/src/app/frontend/messages/ua.php
@@ -163,7 +163,7 @@ return array(
"street_two" =>"ст.м. Лісова, пр-т Броварський, Торговий павільон \"Професійне насіння\" №25;",
"address_two" => "вул. Велика Кільцева 110-А, оптово-роздрібний ринок \"Столичний\", павільйон \"Риба та м'ясо\";",
"address_three" => "ст.м. Іподром, пр-т Академіка Глушкова №6, магазин \"Професійне насіння\" навпроти Південного автовокзалу;",
- "address_four" => "вул. Харьківське шосе 166-В, біля магазину \"Сільпо\"",
+ "address_four" => "вул. Харьківське шосе 164А, біля магазину \"Сільпо\"",
"address_five" => "пр-т Оболонський, 43, ст.м. Героїв Дніпра;",
"address_six"=>"Києво-Святошинський р-н, с.Крюківщина, вул.Балукова, 14;",
"address_seven"=>"вул. Архітектора Вербицького 22/1",
@@ -172,7 +172,7 @@ return array(
"new_address_first" => 'ст.м. Лісова, пр-т Броварський, в сторону м. Бровари;',
"new_address_second" => 'вул. Велика Кільцева, 110-А, оптово-роздрібний ринок "Столичний", павільйон "Риба та м\'ясо";',
"new_address_third" => 'ст.м. Іподром, пр-т Академіка Глушкова №6, навпроти Південного автовокзалу;',
- "new_address_fourth" => 'вул. Харківське шоссе, 166-В, біля магазину "Сільпо";',
+ "new_address_fourth" => 'вул. Харківське шоссе, 164А, біля магазину "Сільпо";',
"new_address_fifth" => 'пр-т Оболонський 43, ст.м. Героїв Дніпра;',
"new_address_sixth" => 'Києво-Святошинський р-н, с.Крюківщина, вул.Балукова, 14;',
"new_address_seventh" => 'вул. Архітектора Вербицького, 22/1, біля магазину "Велика кишеня";',
@@ -417,4 +417,8 @@ return array(
"faq_j_text1" => "У кожній картці товару вказані всі варіанти фасування цієї позиції, які існують. Професіоналам варто звернути увагу на великі фасовки. Для того, щоб дізнатися про наявність та ціни на професійні упаковки
в блоці «Фасовка» необхідно вибрати ту фасовку, яка Вас цікавить (мал. 16). Якщо вона доступна до замовлення, то
в графі «Наявність» зеленим кольором буде відображатися «Є в наявності». Але, якщо товар відсутній в даний момент, то в графі «Наявність» буде відображатися фраза «Відсутній» (мал.16,17). При зацікавленності в конкретному товарі, якого зараз немає в наявності, Ви можете зв'язатися з нашими менеджерами за номерами телефону, вказаним на сайті, для уточнення термінів найближчих надходжень і завчасно зарезервувати даний товар. Коли товар з'явиться в наявності, наші менеджери зв'яжуться з Вами для оформлення замовлення.",
"lang_name" => "ukr",
"saldo_period" => "за період",
+ "error_promo_code_is_empty" => "Промокод не вказаний",
+ "error_promo_code_empty_user" => "Промокод потребує реєстрації",
+ "error_promo_code_empty_email" => "Промокод потребує вказаний Email в картці користувача",
+ "error_promo_code_already_used" => "Даний промокод вже використовувався цим користувачем"
);
\ No newline at end of file
diff --git a/src/app/frontend/views/menu/order.php b/src/app/frontend/views/menu/order.php
index 979c47b..b870082 100644
--- a/src/app/frontend/views/menu/order.php
+++ b/src/app/frontend/views/menu/order.php
@@ -589,10 +589,16 @@
promo_code: $('#promo_code').val()
},
success: function (cart) {
- renderCart(cart);
- $('#total_price_basket').text(cart['total_sum']);
- $alert.addClass('alert-success').removeClass('alert-danger');
- $alert.find('strong').text(successMessage);
+ if(cart.status == 'success'){
+ renderCart(cart.cart);
+ $('#total_price_basket').text(cart.cart['total_sum']);
+ $alert.addClass('alert-success').removeClass('alert-danger');
+ $alert.find('strong').text(cart.successMessage);
+ } else {
+ $alert.addClass('alert-danger').removeClass('alert-success');
+ $alert.find('strong').text(cart.errorMessage);
+ }
+
},
error: function (error) {
$alert.addClass('alert-danger').removeClass('alert-success');
diff --git a/src/config/global.php b/src/config/global.php
index e581a16..f5feb35 100644
--- a/src/config/global.php
+++ b/src/config/global.php
@@ -48,7 +48,7 @@ return
'10001'=>'ст.м. Лісова, пр-т Броварський, Торговий павільон "Професійне насіння" №25;',
'10002'=>'вул. Велика Кільцева 110-А, оптово-роздрібний ринок "Столичний", павільйон "Риба та м\'ясо";',
'10003'=>'ст.м. Іподром, пр-т Академіка Глушкова, магазин "Професійне насіння" навпроти Південного автовокзалу;',
- '10004'=>'вул. Харьківське шосе 166-В, біля магазину "Сільпо";',
+ '10004'=>'вул. Харьківське шосе 164А, біля магазину "Сільпо";',
'10005'=>'ст.м. Героїв Дніпра, пр-т Оболонський 43;',
'7' => "
Адресна доставка кур’єром по м.Києву",
'77' => "Вартість доставки замовленнь складає 60 грн. У разі замовлення на суму більшу за 500 грн - доставка безкоштовна. Кур'єр попередньо узгодить з Вами час доставки телефоном.",
@@ -76,7 +76,7 @@ return
'10001'=>'ст.м. Лесная, пр-т Броварской, Торговий павильйон "Професійне насіння" №25;',
'10002'=>'ул. Большая Окружная 110-А, оптово-розничный рынок "Столичный", павильон "Рыба и мясо";',
'10003'=>'ст.м. Іподром, пр-т Академика Глушкова №6, магазин "Професійне насіння" напротив Южного автовокзала;',
- '10004'=>'ул. Харьковское шоссе 166-В, магазин "Професійне насіння" возле магазина "Сільпо";',
+ '10004'=>'ул. Харьковское шоссе 164А, магазин "Професійне насіння" возле магазина "Сільпо";',
'10005'=>'ст.м. Героев Днепра, пр-т Оболонський 43, магазин "Професійне насіння";',
'7' => '
Адресная доставка курьером по г.Киеву ',
"77" =>"Стоимость доставки заказа составляет 60 грн. В случае заказа на сумму большую 500 грн - доставка бесплатная. Курьер предварительно согласует с Вами время доставки по телефону.",
diff --git a/src/lib/models.php b/src/lib/models.php
index a92ed07..318f8dc 100644
--- a/src/lib/models.php
+++ b/src/lib/models.php
@@ -50,6 +50,7 @@ namespace
protected $_reviews = false;
protected $_modal = false;
protected $_manager_mail = false;
+ protected $_promo_to_user = false;
@@ -583,6 +584,17 @@ namespace
return $this->_manager_mail;
}
+
+ public function getPromoToUser()
+ {
+ if( empty($this->_promo_to_user) )
+ {
+ $this->_promo_to_user = new \models\promo_to_user();
+ $this->_promo_to_user->setDi( $this->getDi() );
+ }
+
+ return $this->_promo_to_user;
+ }
}
}
diff --git a/src/lib/models/promo_codes.php b/src/lib/models/promo_codes.php
index aa28749..e58dac9 100644
--- a/src/lib/models/promo_codes.php
+++ b/src/lib/models/promo_codes.php
@@ -103,7 +103,9 @@ class promo_codes extends \db
all_items,
image,
start_date,
- end_date
+ end_date,
+ single_use
+
)
VALUES
(
@@ -116,7 +118,8 @@ class promo_codes extends \db
:all_items,
:image,
:start_date,
- :end_date
+ :end_date,
+ :single_use
)
RETURNING id
',
@@ -130,7 +133,8 @@ class promo_codes extends \db
'all_items' => $data['all_items'],
'image' => $data['image'],
'start_date' => $data['start_date'],
- 'end_date' => $data['end_date']
+ 'end_date' => $data['end_date'],
+ 'single_use' => $data['single_use']
],
-1
);
@@ -154,7 +158,8 @@ class promo_codes extends \db
all_items = :all_items,
image = :image,
start_date = :start_date,
- end_date = :end_date
+ end_date = :end_date,
+ single_use = :single_use
WHERE
id = :id
',
@@ -168,6 +173,7 @@ class promo_codes extends \db
'image' => $data['image'],
'start_date' => $data['start_date'],
'end_date' => $data['end_date'],
+ 'single_use' => $data['single_use'],
'id' => $id
]
);
diff --git a/src/lib/models/promo_to_user.php b/src/lib/models/promo_to_user.php
new file mode 100644
index 0000000..77a69f7
--- /dev/null
+++ b/src/lib/models/promo_to_user.php
@@ -0,0 +1,157 @@
+get(
+ '
+ SELECT * FROM
+ public.promo_to_user
+ '
+ ,
+ [
+ ],
+ -1
+ );
+ }
+
+
+ public function getOneData($id)
+ {
+ return $this->get(
+ '
+ SELECT *
+ FROM public.promo_to_user
+ WHERE
+ id = :id
+ ',
+ [
+ 'id' => $id
+ ],
+ -1
+ );
+ }
+
+ public function getOneDataByCode($data)
+ {
+ return $this->get(
+ "
+ SELECT *
+ FROM public.promo_to_user
+ WHERE
+ code = :code
+ AND
+ email = :email
+ ",
+ [
+ 'code' => $data['code'],
+ 'email' => $data['email'],
+ ],
+ -1
+ );
+ }
+
+ public function getPromoByCode($code) {
+ return $this->get(
+ '
+ SELECT *
+ FROM public.promo_to_user
+ WHERE
+ code = :code',
+ [
+ 'code' => $code
+ ],
+ -1
+ );
+ }
+
+ public function deleteData($id)
+ {
+ return $this->exec(
+ ' DELETE
+ FROM
+ public.promo_to_user
+ WHERE
+ id = :id
+ ',
+ [
+ 'id' => $id
+ ]
+ );
+ }
+
+ public function addData($data)
+ {
+
+ return $this->get(
+ '
+ INSERT INTO
+ public.promo_to_user
+ (
+ code,
+ email
+
+ )
+ VALUES
+ (
+ :code,
+ :email
+
+ )
+ RETURNING id
+ ',
+ [
+ 'code' => $data['code'],
+ 'email' => $data['email'],
+
+ ],
+ -1
+ );
+
+
+ }
+
+ public function updateData($data, $id)
+ {
+
+ return $this->exec(
+ '
+ UPDATE
+ public.promo_to_user
+ SET
+ code = :code,
+ email = :email
+
+ WHERE
+ id = :id
+ ',
+ [
+ 'code' => $data['code'],
+ 'email' => $data['email'],
+ 'id' => $id
+ ]
+ );
+ }
+
+ public function countData()
+ {
+ return $this->get(
+ '
+ SELECT
+ COUNT(id) AS total
+ FROM
+ public.promo_to_user
+ ',
+ [
+
+ ],
+ -1
+ );
+ }
+}
\ No newline at end of file
diff --git a/www/css/main.css b/www/css/main.css
index 6226320..58e3822 100644
--- a/www/css/main.css
+++ b/www/css/main.css
@@ -3122,9 +3122,9 @@ ul.prof_rubrics li a.active{color:#ffffff;background:#4fa22c;border-radius:5px;t
float: left;
}
-.zasobi_zakhistu_logo {
- background: url('/images/background_logo_all_01.png') repeat-y 50% -20px;
-}
+/*.zasobi_zakhistu_logo {*/
+ /*background: url('/images/background_logo_all_01.png') repeat-y 50% -20px;*/
+/*}*/
/****************email-settings**********************/
.email-settings_title {
diff --git a/www/js/main.js b/www/js/main.js
index e9f2865..0bda402 100644
--- a/www/js/main.js
+++ b/www/js/main.js
@@ -637,7 +637,7 @@ $(document).ready(function()
var contentString4 =
'
'+
- '
м. Київ, вул. Харьківське шосе 166-В, біля магазину "Сільпо"
'+
+ '
м. Київ, вул. Харьківське шосе 164А, біля магазину "Сільпо"
'+
'
9:00 - 19:00
'+
'
Пн-Пт
'+
'
9:00 - 18:00
'+
diff --git a/www/js/main_ru.js b/www/js/main_ru.js
index 70ed5c7..2095bd1 100644
--- a/www/js/main_ru.js
+++ b/www/js/main_ru.js
@@ -681,7 +681,7 @@ $(document).ready(function()
var contentString4 =
'
'+
- '
м. Київ, вул. Харьківське шосе 166-В, біля магазину "Сільпо"
'+
+ '
м. Київ, вул. Харьківське шосе 164А, біля магазину "Сільпо"
'+
'
9:00 - 19:00
'+
'
Пн-Пт
'+
'
9:00 - 18:00
'+
--
libgit2 0.21.4