Commit c73b18694f22591428f041c5437bb37facada6d1
1 parent
6b4f9034
add new promocode logic
Showing
15 changed files
with
291 additions
and
31 deletions
Show diff stats
src/app/backend/controllers/PromoCodesController.php
| @@ -54,6 +54,7 @@ class PromoCodesController extends Controller | @@ -54,6 +54,7 @@ class PromoCodesController extends Controller | ||
| 54 | $data['code'] = $this->request->getPost('code', 'string', NULL ); | 54 | $data['code'] = $this->request->getPost('code', 'string', NULL ); |
| 55 | $data['start_date'] = $this->request->getPost('start_date'); | 55 | $data['start_date'] = $this->request->getPost('start_date'); |
| 56 | $data['end_date'] = $this->request->getPost('end_date'); | 56 | $data['end_date'] = $this->request->getPost('end_date'); |
| 57 | + $data['single_use'] = $this->request->getPost('single_use'); | ||
| 57 | $data['discount'] = $this->request->getPost('discount', 'string', NULL ); | 58 | $data['discount'] = $this->request->getPost('discount', 'string', NULL ); |
| 58 | $data['description'] = $this->request->getPost('description'); | 59 | $data['description'] = $this->request->getPost('description'); |
| 59 | $data['catalog_ids'] = $this->request->getPost('catalog', 'string', NULL ); | 60 | $data['catalog_ids'] = $this->request->getPost('catalog', 'string', NULL ); |
| @@ -120,6 +121,7 @@ class PromoCodesController extends Controller | @@ -120,6 +121,7 @@ class PromoCodesController extends Controller | ||
| 120 | $data[0]['description'] = $this->request->getPost('description'); | 121 | $data[0]['description'] = $this->request->getPost('description'); |
| 121 | $data[0]['group_ids'] = $this->request->getPost('items', 'string', NULL ); | 122 | $data[0]['group_ids'] = $this->request->getPost('items', 'string', NULL ); |
| 122 | $data[0]['all_items'] = $this->request->getPost('all_items', 'int', NULL); | 123 | $data[0]['all_items'] = $this->request->getPost('all_items', 'int', NULL); |
| 124 | + $data[0]['single_use'] = $this->request->getPost('single_use', 'int', NULL); | ||
| 123 | 125 | ||
| 124 | $cover = $this->uploadImage(); | 126 | $cover = $this->uploadImage(); |
| 125 | 127 |
src/app/backend/views/promo_codes/addEdit.php
| @@ -47,6 +47,14 @@ | @@ -47,6 +47,14 @@ | ||
| 47 | </div> | 47 | </div> |
| 48 | </div> | 48 | </div> |
| 49 | 49 | ||
| 50 | + | ||
| 51 | + | ||
| 52 | + | ||
| 53 | + <div class="clearfix input_wrapper"> | ||
| 54 | + <?= '<input type="checkbox" id="single_use" name="single_use" class="single_use" value="1" '.( isset( $page['0']['single_use'] ) && !empty( $page['0']['single_use'] ) && $page['0']['single_use'] == 1 ? 'checked="checked"' : '').' />' ?> | ||
| 55 | + <label for="single_use"><span></span>Одноразовое использование</label> | ||
| 56 | + </div> | ||
| 57 | + | ||
| 50 | <div class="clearfix input_wrapper"> | 58 | <div class="clearfix input_wrapper"> |
| 51 | <div class="label"><label for="description">Описание</label></div> | 59 | <div class="label"><label for="description">Описание</label></div> |
| 52 | <div class="input"> | 60 | <div class="input"> |
src/app/frontend/controllers/AjaxController.php
| @@ -173,23 +173,62 @@ class AjaxController extends \controllers\ControllerBase | @@ -173,23 +173,62 @@ class AjaxController extends \controllers\ControllerBase | ||
| 173 | } | 173 | } |
| 174 | 174 | ||
| 175 | public function applyPromoCodeAction() { | 175 | public function applyPromoCodeAction() { |
| 176 | - $this->view->disable(); | ||
| 177 | - $in_cart = $this->session->get('in_cart', []); | ||
| 178 | - $cart = $this->common->getCartItems($in_cart, $this->lang_id); | 176 | + try { |
| 177 | + | ||
| 178 | + $this->view->disable(); | ||
| 179 | + $in_cart = $this->session->get('in_cart', []); | ||
| 180 | + $cart = $this->common->getCartItems($in_cart, $this->lang_id); | ||
| 181 | + | ||
| 182 | + $promo_code = $this->request->getPost( 'promo_code', 'string', '' ); | ||
| 183 | + | ||
| 184 | + $promo_code = $this->models->getPromoCodes()->getOneDataByCode($promo_code); | ||
| 185 | + $user = isset($this->models->getCustomers()->getOneData($this->session->get('id'))['0']) ? $this->models->getCustomers()->getOneData($this->session->get('id'))['0'] : ''; | ||
| 186 | + | ||
| 187 | + if(!empty($promo_code) && $promo_code[0]['single_use']){ | ||
| 188 | + if( !empty($user)){ | ||
| 189 | + if(!empty($user['email'])){ | ||
| 190 | + $data['code'] = $promo_code[0]['code']; | ||
| 191 | + $data['email'] = $user['email']; | ||
| 192 | + $promo_code_check = $this->models->getPromoToUser()->getOneDataByCode($data); | ||
| 193 | + if(!empty($promo_code_check)){ | ||
| 194 | + throw new \Exception($this->t->_('error_promo_code_already_used')); | ||
| 195 | + } | ||
| 196 | + } else { | ||
| 197 | + throw new \Exception($this->t->_('error_promo_code_empty_email')); | ||
| 198 | + } | ||
| 199 | + } else { | ||
| 200 | + throw new \Exception($this->t->_('error_promo_code_empty_user')); | ||
| 201 | + } | ||
| 179 | 202 | ||
| 180 | - $promo_code = $this->request->getPost( 'promo_code', 'string', '' ); | ||
| 181 | 203 | ||
| 182 | - $promo_code = $this->models->getPromoCodes()->getOneDataByCode($promo_code); | ||
| 183 | 204 | ||
| 184 | - if(!empty($promo_code)) { | ||
| 185 | - if($this->common->applyPromoCode($promo_code[0], $cart['items'])) { | ||
| 186 | - $this->session->set('promo_code', $promo_code[0]); | ||
| 187 | - $this->common->countOrderSum($cart); | ||
| 188 | - echo json_encode($cart); | ||
| 189 | - return; | ||
| 190 | } | 205 | } |
| 206 | + | ||
| 207 | + if(!empty($promo_code)) { | ||
| 208 | + if($this->common->applyPromoCode($promo_code[0], $cart['items'])) { | ||
| 209 | + $this->session->set('promo_code', $promo_code[0]); | ||
| 210 | + $this->common->countOrderSum($cart); | ||
| 211 | + echo json_encode(['cart' => $cart, | ||
| 212 | + 'successMessage' => $this->t->_('success_promo_code'), | ||
| 213 | + 'status'=>'success' | ||
| 214 | + ]); | ||
| 215 | + return; | ||
| 216 | + } else { | ||
| 217 | + throw new \Exception($this->t->_('error_promo_code')); | ||
| 218 | + } | ||
| 219 | + } else { | ||
| 220 | + throw new \Exception($this->t->_('error_promo_code_is_empty')); | ||
| 221 | + } | ||
| 222 | + | ||
| 223 | + } catch (\Exception $e) { | ||
| 224 | + | ||
| 225 | + echo json_encode(['status'=>'error', | ||
| 226 | + 'errorMessage' => $e->getMessage() | ||
| 227 | + ]); | ||
| 228 | + return null; | ||
| 191 | } | 229 | } |
| 192 | - return null; | 230 | + |
| 231 | + | ||
| 193 | } | 232 | } |
| 194 | } | 233 | } |
| 195 | 234 | ||
| 196 | \ No newline at end of file | 235 | \ No newline at end of file |
src/app/frontend/controllers/DealerController.php
| @@ -1520,6 +1520,9 @@ class DealerController extends \controllers\ControllerBase | @@ -1520,6 +1520,9 @@ class DealerController extends \controllers\ControllerBase | ||
| 1520 | 1520 | ||
| 1521 | if( !empty( $order['proposal_number'] ) ) | 1521 | if( !empty( $order['proposal_number'] ) ) |
| 1522 | { | 1522 | { |
| 1523 | + | ||
| 1524 | + | ||
| 1525 | + | ||
| 1523 | $this->sendmail->addCustomer( 2, $order ); | 1526 | $this->sendmail->addCustomer( 2, $order ); |
| 1524 | 1527 | ||
| 1525 | $this->session->set( 'in_cart', []); | 1528 | $this->session->set( 'in_cart', []); |
src/app/frontend/controllers/MenuController.php
| @@ -211,6 +211,25 @@ class MenuController extends \controllers\ControllerBase | @@ -211,6 +211,25 @@ class MenuController extends \controllers\ControllerBase | ||
| 211 | 211 | ||
| 212 | if( !empty( $order['proposal_number'] ) ) | 212 | if( !empty( $order['proposal_number'] ) ) |
| 213 | { | 213 | { |
| 214 | + | ||
| 215 | + | ||
| 216 | + /** | ||
| 217 | + * single use promo code logic | ||
| 218 | + */ | ||
| 219 | + if(!empty($session_promo_code)){ | ||
| 220 | + $user = $this->models->getCustomers()->getOneData($this->session->get('id'))['0']; | ||
| 221 | + | ||
| 222 | + if($session_promo_code['single_use'] && !empty($user)){ | ||
| 223 | + if(!empty($user['email'])){ | ||
| 224 | + $data['code'] = $session_promo_code['code']; | ||
| 225 | + $data['email'] = $user['email']; | ||
| 226 | + $this->models->getPromoToUser()->addData($data); | ||
| 227 | + } | ||
| 228 | + | ||
| 229 | + } | ||
| 230 | + } | ||
| 231 | + | ||
| 232 | + | ||
| 214 | $this->sendmail->addCustomer( 2, $order ); | 233 | $this->sendmail->addCustomer( 2, $order ); |
| 215 | 234 | ||
| 216 | $this->session->set( 'in_cart', []); | 235 | $this->session->set( 'in_cart', []); |
src/app/frontend/messages/ru.php
| @@ -143,7 +143,7 @@ return array( | @@ -143,7 +143,7 @@ return array( | ||
| 143 | "street_two" =>"пр-т Броварской, ст.м. Лесная, в сторону центра Киева;", | 143 | "street_two" =>"пр-т Броварской, ст.м. Лесная, в сторону центра Киева;", |
| 144 | "address_two" => "ул. Большая Кольцевая, 110-А, оптово-розничный рынок \"Столичный\", павильон \"Рыба и мясо\";", | 144 | "address_two" => "ул. Большая Кольцевая, 110-А, оптово-розничный рынок \"Столичный\", павильон \"Рыба и мясо\";", |
| 145 | "address_three" => "пр-т Академика Глушкова №6, ст.м. Ипподром, напротив Южного автовокзала;", | 145 | "address_three" => "пр-т Академика Глушкова №6, ст.м. Ипподром, напротив Южного автовокзала;", |
| 146 | - "address_four" => "ул. Харьковское шоссе, 166-В, возле магазина \"Сільпо\";", | 146 | + "address_four" => "ул. Харьковское шоссе, 164А, возле магазина \"Сільпо\";", |
| 147 | "address_five" => "пр-т Оболонский 43, ст.м. Героев Днепра;", | 147 | "address_five" => "пр-т Оболонский 43, ст.м. Героев Днепра;", |
| 148 | "address_six"=>"Киево-Святошинский р-н, с.Крюковщина, ул.Балукова, 14;", | 148 | "address_six"=>"Киево-Святошинский р-н, с.Крюковщина, ул.Балукова, 14;", |
| 149 | "address_seven"=>"ул. Архитектора Вербицкого, 22/1, возле магазина \"Велика кишеня\";", | 149 | "address_seven"=>"ул. Архитектора Вербицкого, 22/1, возле магазина \"Велика кишеня\";", |
| @@ -151,7 +151,7 @@ return array( | @@ -151,7 +151,7 @@ return array( | ||
| 151 | "new_address_first" => 'ст.м. Лесная, пр-т Броварской, в сторону г. Бровары;', | 151 | "new_address_first" => 'ст.м. Лесная, пр-т Броварской, в сторону г. Бровары;', |
| 152 | "new_address_second" => 'ул. Большая Кольцевая, 110-А, оптово-розничный рынок "Столичный", павильон "Рыба и мясо";', | 152 | "new_address_second" => 'ул. Большая Кольцевая, 110-А, оптово-розничный рынок "Столичный", павильон "Рыба и мясо";', |
| 153 | "new_address_third" => 'ст.м. Ипподром, пр-т Академика Глушкова №6, напротив Южного автовокзала;', | 153 | "new_address_third" => 'ст.м. Ипподром, пр-т Академика Глушкова №6, напротив Южного автовокзала;', |
| 154 | - "new_address_fourth" => 'ул. Харьковское шоссе, 166-В, возле магазина "Сільпо";', | 154 | + "new_address_fourth" => 'ул. Харьковское шоссе, 164А, возле магазина "Сільпо";', |
| 155 | "new_address_fifth" => 'пр-т Оболонский 43, ст.м. Героев Днепра;', | 155 | "new_address_fifth" => 'пр-т Оболонский 43, ст.м. Героев Днепра;', |
| 156 | "new_address_sixth" => 'Киево-Святошинский р-н, с.Крюковщина, ул.Балукова, 14;', | 156 | "new_address_sixth" => 'Киево-Святошинский р-н, с.Крюковщина, ул.Балукова, 14;', |
| 157 | "new_address_seventh" => 'ул. Архитектора Вербицкого, 22/1, возле магазина "Велика кишеня";', | 157 | "new_address_seventh" => 'ул. Архитектора Вербицкого, 22/1, возле магазина "Велика кишеня";', |
| @@ -388,4 +388,8 @@ return array( | @@ -388,4 +388,8 @@ return array( | ||
| 388 | "faq_j_text1" => "В каждой карточке товара указаны все варианты фасовки этой позиции, которые существуют. Профессионалам стоит обратить внимание на большие фасовки. Для того, чтобы узнать наличие и цены на профессиональные упаковки <span>в блоке «Фасовка»</span> необходимо выбрать ту фасовку, которая я Вас интересует (рис. 16). Если она доступна к заказу, то <span>в графе «Наличие»</span> зеленым цветом будет отображаться «Есть в наличии». Но, если товар отсутствует в данный момент, то в графе «Наличие» будет отображаться фраза «Отсутствует» (рис.16,17). При интересе к конкретному товару, которого сейчас нет в наличии, Вы можете связаться с нашими менеджерами по номерам телефона, указанным на сайте, для уточнения сроков ближайших поступлений и заблаговременно зарезервировать данный товар. Когда товар появится в наличии, наши менеджеры свяжутся с Вами для оформления заказа.", | 388 | "faq_j_text1" => "В каждой карточке товара указаны все варианты фасовки этой позиции, которые существуют. Профессионалам стоит обратить внимание на большие фасовки. Для того, чтобы узнать наличие и цены на профессиональные упаковки <span>в блоке «Фасовка»</span> необходимо выбрать ту фасовку, которая я Вас интересует (рис. 16). Если она доступна к заказу, то <span>в графе «Наличие»</span> зеленым цветом будет отображаться «Есть в наличии». Но, если товар отсутствует в данный момент, то в графе «Наличие» будет отображаться фраза «Отсутствует» (рис.16,17). При интересе к конкретному товару, которого сейчас нет в наличии, Вы можете связаться с нашими менеджерами по номерам телефона, указанным на сайте, для уточнения сроков ближайших поступлений и заблаговременно зарезервировать данный товар. Когда товар появится в наличии, наши менеджеры свяжутся с Вами для оформления заказа.", |
| 389 | "lang_name" => "rus", | 389 | "lang_name" => "rus", |
| 390 | "saldo_period" => "за период", | 390 | "saldo_period" => "за период", |
| 391 | + "error_promo_code_is_empty" => "Промокод не указан", | ||
| 392 | + "error_promo_code_empty_user" => "Промокод требует регистрации", | ||
| 393 | + "error_promo_code_empty_email" => "Промокод требует указанный Email в карточке пользователя", | ||
| 394 | + "error_promo_code_already_used" => "Данный промокод уже использовался этим пользователем" | ||
| 391 | ); | 395 | ); |
| 392 | \ No newline at end of file | 396 | \ No newline at end of file |
src/app/frontend/messages/ua.php
| @@ -163,7 +163,7 @@ return array( | @@ -163,7 +163,7 @@ return array( | ||
| 163 | "street_two" =>"ст.м. Лісова, пр-т Броварський, Торговий павільон \"Професійне насіння\" №25;", | 163 | "street_two" =>"ст.м. Лісова, пр-т Броварський, Торговий павільон \"Професійне насіння\" №25;", |
| 164 | "address_two" => "вул. Велика Кільцева 110-А, оптово-роздрібний ринок \"Столичний\", павільйон \"Риба та м'ясо\";", | 164 | "address_two" => "вул. Велика Кільцева 110-А, оптово-роздрібний ринок \"Столичний\", павільйон \"Риба та м'ясо\";", |
| 165 | "address_three" => "ст.м. Іподром, пр-т Академіка Глушкова №6, магазин \"Професійне насіння\" навпроти Південного автовокзалу;", | 165 | "address_three" => "ст.м. Іподром, пр-т Академіка Глушкова №6, магазин \"Професійне насіння\" навпроти Південного автовокзалу;", |
| 166 | - "address_four" => "вул. Харьківське шосе 166-В, біля магазину \"Сільпо\"", | 166 | + "address_four" => "вул. Харьківське шосе 164А, біля магазину \"Сільпо\"", |
| 167 | "address_five" => "пр-т Оболонський, 43, ст.м. Героїв Дніпра;", | 167 | "address_five" => "пр-т Оболонський, 43, ст.м. Героїв Дніпра;", |
| 168 | "address_six"=>"Києво-Святошинський р-н, с.Крюківщина, вул.Балукова, 14;", | 168 | "address_six"=>"Києво-Святошинський р-н, с.Крюківщина, вул.Балукова, 14;", |
| 169 | "address_seven"=>"вул. Архітектора Вербицького 22/1", | 169 | "address_seven"=>"вул. Архітектора Вербицького 22/1", |
| @@ -172,7 +172,7 @@ return array( | @@ -172,7 +172,7 @@ return array( | ||
| 172 | "new_address_first" => 'ст.м. Лісова, пр-т Броварський, в сторону м. Бровари;', | 172 | "new_address_first" => 'ст.м. Лісова, пр-т Броварський, в сторону м. Бровари;', |
| 173 | "new_address_second" => 'вул. Велика Кільцева, 110-А, оптово-роздрібний ринок "Столичний", павільйон "Риба та м\'ясо";', | 173 | "new_address_second" => 'вул. Велика Кільцева, 110-А, оптово-роздрібний ринок "Столичний", павільйон "Риба та м\'ясо";', |
| 174 | "new_address_third" => 'ст.м. Іподром, пр-т Академіка Глушкова №6, навпроти Південного автовокзалу;', | 174 | "new_address_third" => 'ст.м. Іподром, пр-т Академіка Глушкова №6, навпроти Південного автовокзалу;', |
| 175 | - "new_address_fourth" => 'вул. Харківське шоссе, 166-В, біля магазину "Сільпо";', | 175 | + "new_address_fourth" => 'вул. Харківське шоссе, 164А, біля магазину "Сільпо";', |
| 176 | "new_address_fifth" => 'пр-т Оболонський 43, ст.м. Героїв Дніпра;', | 176 | "new_address_fifth" => 'пр-т Оболонський 43, ст.м. Героїв Дніпра;', |
| 177 | "new_address_sixth" => 'Києво-Святошинський р-н, с.Крюківщина, вул.Балукова, 14;', | 177 | "new_address_sixth" => 'Києво-Святошинський р-н, с.Крюківщина, вул.Балукова, 14;', |
| 178 | "new_address_seventh" => 'вул. Архітектора Вербицького, 22/1, біля магазину "Велика кишеня";', | 178 | "new_address_seventh" => 'вул. Архітектора Вербицького, 22/1, біля магазину "Велика кишеня";', |
| @@ -417,4 +417,8 @@ return array( | @@ -417,4 +417,8 @@ return array( | ||
| 417 | "faq_j_text1" => "У кожній картці товару вказані всі варіанти фасування цієї позиції, які існують. Професіоналам варто звернути увагу на великі фасовки. Для того, щоб дізнатися про наявність та ціни на професійні упаковки <span>в блоці «Фасовка»</span> необхідно вибрати ту фасовку, яка Вас цікавить (мал. 16). Якщо вона доступна до замовлення, то <span>в графі «Наявність»</span> зеленим кольором буде відображатися «Є в наявності». Але, якщо товар відсутній в даний момент, то в графі «Наявність» буде відображатися фраза «Відсутній» (мал.16,17). При зацікавленності в конкретному товарі, якого зараз немає в наявності, Ви можете зв'язатися з нашими менеджерами за номерами телефону, вказаним на сайті, для уточнення термінів найближчих надходжень і завчасно зарезервувати даний товар. Коли товар з'явиться в наявності, наші менеджери зв'яжуться з Вами для оформлення замовлення.", | 417 | "faq_j_text1" => "У кожній картці товару вказані всі варіанти фасування цієї позиції, які існують. Професіоналам варто звернути увагу на великі фасовки. Для того, щоб дізнатися про наявність та ціни на професійні упаковки <span>в блоці «Фасовка»</span> необхідно вибрати ту фасовку, яка Вас цікавить (мал. 16). Якщо вона доступна до замовлення, то <span>в графі «Наявність»</span> зеленим кольором буде відображатися «Є в наявності». Але, якщо товар відсутній в даний момент, то в графі «Наявність» буде відображатися фраза «Відсутній» (мал.16,17). При зацікавленності в конкретному товарі, якого зараз немає в наявності, Ви можете зв'язатися з нашими менеджерами за номерами телефону, вказаним на сайті, для уточнення термінів найближчих надходжень і завчасно зарезервувати даний товар. Коли товар з'явиться в наявності, наші менеджери зв'яжуться з Вами для оформлення замовлення.", |
| 418 | "lang_name" => "ukr", | 418 | "lang_name" => "ukr", |
| 419 | "saldo_period" => "за період", | 419 | "saldo_period" => "за період", |
| 420 | + "error_promo_code_is_empty" => "Промокод не вказаний", | ||
| 421 | + "error_promo_code_empty_user" => "Промокод потребує реєстрації", | ||
| 422 | + "error_promo_code_empty_email" => "Промокод потребує вказаний Email в картці користувача", | ||
| 423 | + "error_promo_code_already_used" => "Даний промокод вже використовувався цим користувачем" | ||
| 420 | ); | 424 | ); |
| 421 | \ No newline at end of file | 425 | \ No newline at end of file |
src/app/frontend/views/menu/order.php
| @@ -589,10 +589,16 @@ | @@ -589,10 +589,16 @@ | ||
| 589 | promo_code: $('#promo_code').val() | 589 | promo_code: $('#promo_code').val() |
| 590 | }, | 590 | }, |
| 591 | success: function (cart) { | 591 | success: function (cart) { |
| 592 | - renderCart(cart); | ||
| 593 | - $('#total_price_basket').text(cart['total_sum']); | ||
| 594 | - $alert.addClass('alert-success').removeClass('alert-danger'); | ||
| 595 | - $alert.find('strong').text(successMessage); | 592 | + if(cart.status == 'success'){ |
| 593 | + renderCart(cart.cart); | ||
| 594 | + $('#total_price_basket').text(cart.cart['total_sum']); | ||
| 595 | + $alert.addClass('alert-success').removeClass('alert-danger'); | ||
| 596 | + $alert.find('strong').text(cart.successMessage); | ||
| 597 | + } else { | ||
| 598 | + $alert.addClass('alert-danger').removeClass('alert-success'); | ||
| 599 | + $alert.find('strong').text(cart.errorMessage); | ||
| 600 | + } | ||
| 601 | + | ||
| 596 | }, | 602 | }, |
| 597 | error: function (error) { | 603 | error: function (error) { |
| 598 | $alert.addClass('alert-danger').removeClass('alert-success'); | 604 | $alert.addClass('alert-danger').removeClass('alert-success'); |
src/config/global.php
| @@ -48,7 +48,7 @@ return | @@ -48,7 +48,7 @@ return | ||
| 48 | '10001'=>'ст.м. Лісова, пр-т Броварський, Торговий павільон "Професійне насіння" №25;', | 48 | '10001'=>'ст.м. Лісова, пр-т Броварський, Торговий павільон "Професійне насіння" №25;', |
| 49 | '10002'=>'вул. Велика Кільцева 110-А, оптово-роздрібний ринок "Столичний", павільйон "Риба та м\'ясо";', | 49 | '10002'=>'вул. Велика Кільцева 110-А, оптово-роздрібний ринок "Столичний", павільйон "Риба та м\'ясо";', |
| 50 | '10003'=>'ст.м. Іподром, пр-т Академіка Глушкова, магазин "Професійне насіння" навпроти Південного автовокзалу;', | 50 | '10003'=>'ст.м. Іподром, пр-т Академіка Глушкова, магазин "Професійне насіння" навпроти Південного автовокзалу;', |
| 51 | - '10004'=>'вул. Харьківське шосе 166-В, біля магазину "Сільпо";', | 51 | + '10004'=>'вул. Харьківське шосе 164А, біля магазину "Сільпо";', |
| 52 | '10005'=>'ст.м. Героїв Дніпра, пр-т Оболонський 43;', | 52 | '10005'=>'ст.м. Героїв Дніпра, пр-т Оболонський 43;', |
| 53 | '7' => "<b>Адресна доставка кур’єром по м.Києву</b><br />", | 53 | '7' => "<b>Адресна доставка кур’єром по м.Києву</b><br />", |
| 54 | '77' => "Вартість доставки замовленнь складає 60 грн. У разі замовлення на суму більшу за 500 грн - доставка безкоштовна. Кур'єр попередньо узгодить з Вами час доставки телефоном.", | 54 | '77' => "Вартість доставки замовленнь складає 60 грн. У разі замовлення на суму більшу за 500 грн - доставка безкоштовна. Кур'єр попередньо узгодить з Вами час доставки телефоном.", |
| @@ -76,7 +76,7 @@ return | @@ -76,7 +76,7 @@ return | ||
| 76 | '10001'=>'ст.м. Лесная, пр-т Броварской, Торговий павильйон "Професійне насіння" №25;', | 76 | '10001'=>'ст.м. Лесная, пр-т Броварской, Торговий павильйон "Професійне насіння" №25;', |
| 77 | '10002'=>'ул. Большая Окружная 110-А, оптово-розничный рынок "Столичный", павильон "Рыба и мясо";', | 77 | '10002'=>'ул. Большая Окружная 110-А, оптово-розничный рынок "Столичный", павильон "Рыба и мясо";', |
| 78 | '10003'=>'ст.м. Іподром, пр-т Академика Глушкова №6, магазин "Професійне насіння" напротив Южного автовокзала;', | 78 | '10003'=>'ст.м. Іподром, пр-т Академика Глушкова №6, магазин "Професійне насіння" напротив Южного автовокзала;', |
| 79 | - '10004'=>'ул. Харьковское шоссе 166-В, магазин "Професійне насіння" возле магазина "Сільпо";', | 79 | + '10004'=>'ул. Харьковское шоссе 164А, магазин "Професійне насіння" возле магазина "Сільпо";', |
| 80 | '10005'=>'ст.м. Героев Днепра, пр-т Оболонський 43, магазин "Професійне насіння";', | 80 | '10005'=>'ст.м. Героев Днепра, пр-т Оболонський 43, магазин "Професійне насіння";', |
| 81 | '7' => '<b>Адресная доставка курьером по г.Киеву</b> <br />', | 81 | '7' => '<b>Адресная доставка курьером по г.Киеву</b> <br />', |
| 82 | "77" =>"Стоимость доставки заказа составляет 60 грн. В случае заказа на сумму большую 500 грн - доставка бесплатная. Курьер предварительно согласует с Вами время доставки по телефону.", | 82 | "77" =>"Стоимость доставки заказа составляет 60 грн. В случае заказа на сумму большую 500 грн - доставка бесплатная. Курьер предварительно согласует с Вами время доставки по телефону.", |
src/lib/models.php
| @@ -50,6 +50,7 @@ namespace | @@ -50,6 +50,7 @@ namespace | ||
| 50 | protected $_reviews = false; | 50 | protected $_reviews = false; |
| 51 | protected $_modal = false; | 51 | protected $_modal = false; |
| 52 | protected $_manager_mail = false; | 52 | protected $_manager_mail = false; |
| 53 | + protected $_promo_to_user = false; | ||
| 53 | 54 | ||
| 54 | 55 | ||
| 55 | 56 | ||
| @@ -583,6 +584,17 @@ namespace | @@ -583,6 +584,17 @@ namespace | ||
| 583 | 584 | ||
| 584 | return $this->_manager_mail; | 585 | return $this->_manager_mail; |
| 585 | } | 586 | } |
| 587 | + | ||
| 588 | + public function getPromoToUser() | ||
| 589 | + { | ||
| 590 | + if( empty($this->_promo_to_user) ) | ||
| 591 | + { | ||
| 592 | + $this->_promo_to_user = new \models\promo_to_user(); | ||
| 593 | + $this->_promo_to_user->setDi( $this->getDi() ); | ||
| 594 | + } | ||
| 595 | + | ||
| 596 | + return $this->_promo_to_user; | ||
| 597 | + } | ||
| 586 | } | 598 | } |
| 587 | } | 599 | } |
| 588 | 600 |
src/lib/models/promo_codes.php
| @@ -103,7 +103,9 @@ class promo_codes extends \db | @@ -103,7 +103,9 @@ class promo_codes extends \db | ||
| 103 | all_items, | 103 | all_items, |
| 104 | image, | 104 | image, |
| 105 | start_date, | 105 | start_date, |
| 106 | - end_date | 106 | + end_date, |
| 107 | + single_use | ||
| 108 | + | ||
| 107 | ) | 109 | ) |
| 108 | VALUES | 110 | VALUES |
| 109 | ( | 111 | ( |
| @@ -116,7 +118,8 @@ class promo_codes extends \db | @@ -116,7 +118,8 @@ class promo_codes extends \db | ||
| 116 | :all_items, | 118 | :all_items, |
| 117 | :image, | 119 | :image, |
| 118 | :start_date, | 120 | :start_date, |
| 119 | - :end_date | 121 | + :end_date, |
| 122 | + :single_use | ||
| 120 | ) | 123 | ) |
| 121 | RETURNING id | 124 | RETURNING id |
| 122 | ', | 125 | ', |
| @@ -130,7 +133,8 @@ class promo_codes extends \db | @@ -130,7 +133,8 @@ class promo_codes extends \db | ||
| 130 | 'all_items' => $data['all_items'], | 133 | 'all_items' => $data['all_items'], |
| 131 | 'image' => $data['image'], | 134 | 'image' => $data['image'], |
| 132 | 'start_date' => $data['start_date'], | 135 | 'start_date' => $data['start_date'], |
| 133 | - 'end_date' => $data['end_date'] | 136 | + 'end_date' => $data['end_date'], |
| 137 | + 'single_use' => $data['single_use'] | ||
| 134 | ], | 138 | ], |
| 135 | -1 | 139 | -1 |
| 136 | ); | 140 | ); |
| @@ -154,7 +158,8 @@ class promo_codes extends \db | @@ -154,7 +158,8 @@ class promo_codes extends \db | ||
| 154 | all_items = :all_items, | 158 | all_items = :all_items, |
| 155 | image = :image, | 159 | image = :image, |
| 156 | start_date = :start_date, | 160 | start_date = :start_date, |
| 157 | - end_date = :end_date | 161 | + end_date = :end_date, |
| 162 | + single_use = :single_use | ||
| 158 | WHERE | 163 | WHERE |
| 159 | id = :id | 164 | id = :id |
| 160 | ', | 165 | ', |
| @@ -168,6 +173,7 @@ class promo_codes extends \db | @@ -168,6 +173,7 @@ class promo_codes extends \db | ||
| 168 | 'image' => $data['image'], | 173 | 'image' => $data['image'], |
| 169 | 'start_date' => $data['start_date'], | 174 | 'start_date' => $data['start_date'], |
| 170 | 'end_date' => $data['end_date'], | 175 | 'end_date' => $data['end_date'], |
| 176 | + 'single_use' => $data['single_use'], | ||
| 171 | 'id' => $id | 177 | 'id' => $id |
| 172 | ] | 178 | ] |
| 173 | ); | 179 | ); |
| 1 | +<?php | ||
| 2 | + | ||
| 3 | +namespace models; | ||
| 4 | + | ||
| 5 | + | ||
| 6 | +class promo_to_user extends \db | ||
| 7 | +{ | ||
| 8 | + ///////////////////////////////////for_backend/////////////////////////////////////////// | ||
| 9 | + public function getAllData() | ||
| 10 | + { | ||
| 11 | + | ||
| 12 | + return $this->get( | ||
| 13 | + ' | ||
| 14 | + SELECT * FROM | ||
| 15 | + public.promo_to_user | ||
| 16 | + ' | ||
| 17 | + , | ||
| 18 | + [ | ||
| 19 | + ], | ||
| 20 | + -1 | ||
| 21 | + ); | ||
| 22 | + } | ||
| 23 | + | ||
| 24 | + | ||
| 25 | + public function getOneData($id) | ||
| 26 | + { | ||
| 27 | + return $this->get( | ||
| 28 | + ' | ||
| 29 | + SELECT * | ||
| 30 | + FROM public.promo_to_user | ||
| 31 | + WHERE | ||
| 32 | + id = :id | ||
| 33 | + ', | ||
| 34 | + [ | ||
| 35 | + 'id' => $id | ||
| 36 | + ], | ||
| 37 | + -1 | ||
| 38 | + ); | ||
| 39 | + } | ||
| 40 | + | ||
| 41 | + public function getOneDataByCode($data) | ||
| 42 | + { | ||
| 43 | + return $this->get( | ||
| 44 | + " | ||
| 45 | + SELECT * | ||
| 46 | + FROM public.promo_to_user | ||
| 47 | + WHERE | ||
| 48 | + code = :code | ||
| 49 | + AND | ||
| 50 | + email = :email | ||
| 51 | + ", | ||
| 52 | + [ | ||
| 53 | + 'code' => $data['code'], | ||
| 54 | + 'email' => $data['email'], | ||
| 55 | + ], | ||
| 56 | + -1 | ||
| 57 | + ); | ||
| 58 | + } | ||
| 59 | + | ||
| 60 | + public function getPromoByCode($code) { | ||
| 61 | + return $this->get( | ||
| 62 | + ' | ||
| 63 | + SELECT * | ||
| 64 | + FROM public.promo_to_user | ||
| 65 | + WHERE | ||
| 66 | + code = :code', | ||
| 67 | + [ | ||
| 68 | + 'code' => $code | ||
| 69 | + ], | ||
| 70 | + -1 | ||
| 71 | + ); | ||
| 72 | + } | ||
| 73 | + | ||
| 74 | + public function deleteData($id) | ||
| 75 | + { | ||
| 76 | + return $this->exec( | ||
| 77 | + ' DELETE | ||
| 78 | + FROM | ||
| 79 | + public.promo_to_user | ||
| 80 | + WHERE | ||
| 81 | + id = :id | ||
| 82 | + ', | ||
| 83 | + [ | ||
| 84 | + 'id' => $id | ||
| 85 | + ] | ||
| 86 | + ); | ||
| 87 | + } | ||
| 88 | + | ||
| 89 | + public function addData($data) | ||
| 90 | + { | ||
| 91 | + | ||
| 92 | + return $this->get( | ||
| 93 | + ' | ||
| 94 | + INSERT INTO | ||
| 95 | + public.promo_to_user | ||
| 96 | + ( | ||
| 97 | + code, | ||
| 98 | |||
| 99 | + | ||
| 100 | + ) | ||
| 101 | + VALUES | ||
| 102 | + ( | ||
| 103 | + :code, | ||
| 104 | |||
| 105 | + | ||
| 106 | + ) | ||
| 107 | + RETURNING id | ||
| 108 | + ', | ||
| 109 | + [ | ||
| 110 | + 'code' => $data['code'], | ||
| 111 | + 'email' => $data['email'], | ||
| 112 | + | ||
| 113 | + ], | ||
| 114 | + -1 | ||
| 115 | + ); | ||
| 116 | + | ||
| 117 | + | ||
| 118 | + } | ||
| 119 | + | ||
| 120 | + public function updateData($data, $id) | ||
| 121 | + { | ||
| 122 | + | ||
| 123 | + return $this->exec( | ||
| 124 | + ' | ||
| 125 | + UPDATE | ||
| 126 | + public.promo_to_user | ||
| 127 | + SET | ||
| 128 | + code = :code, | ||
| 129 | + email = :email | ||
| 130 | + | ||
| 131 | + WHERE | ||
| 132 | + id = :id | ||
| 133 | + ', | ||
| 134 | + [ | ||
| 135 | + 'code' => $data['code'], | ||
| 136 | + 'email' => $data['email'], | ||
| 137 | + 'id' => $id | ||
| 138 | + ] | ||
| 139 | + ); | ||
| 140 | + } | ||
| 141 | + | ||
| 142 | + public function countData() | ||
| 143 | + { | ||
| 144 | + return $this->get( | ||
| 145 | + ' | ||
| 146 | + SELECT | ||
| 147 | + COUNT(id) AS total | ||
| 148 | + FROM | ||
| 149 | + public.promo_to_user | ||
| 150 | + ', | ||
| 151 | + [ | ||
| 152 | + | ||
| 153 | + ], | ||
| 154 | + -1 | ||
| 155 | + ); | ||
| 156 | + } | ||
| 157 | +} | ||
| 0 | \ No newline at end of file | 158 | \ No newline at end of file |
www/css/main.css
| @@ -3122,9 +3122,9 @@ ul.prof_rubrics li a.active{color:#ffffff;background:#4fa22c;border-radius:5px;t | @@ -3122,9 +3122,9 @@ ul.prof_rubrics li a.active{color:#ffffff;background:#4fa22c;border-radius:5px;t | ||
| 3122 | float: left; | 3122 | float: left; |
| 3123 | } | 3123 | } |
| 3124 | 3124 | ||
| 3125 | -.zasobi_zakhistu_logo { | ||
| 3126 | - background: url('/images/background_logo_all_01.png') repeat-y 50% -20px; | ||
| 3127 | -} | 3125 | +/*.zasobi_zakhistu_logo {*/ |
| 3126 | + /*background: url('/images/background_logo_all_01.png') repeat-y 50% -20px;*/ | ||
| 3127 | +/*}*/ | ||
| 3128 | 3128 | ||
| 3129 | /****************email-settings**********************/ | 3129 | /****************email-settings**********************/ |
| 3130 | .email-settings_title { | 3130 | .email-settings_title { |
www/js/main.js
| @@ -637,7 +637,7 @@ $(document).ready(function() | @@ -637,7 +637,7 @@ $(document).ready(function() | ||
| 637 | 637 | ||
| 638 | var contentString4 = | 638 | var contentString4 = |
| 639 | '<div id="content_map">'+ | 639 | '<div id="content_map">'+ |
| 640 | - '<p>м. Київ, вул. Харьківське шосе 166-В, біля магазину "Сільпо"</p>'+ | 640 | + '<p>м. Київ, вул. Харьківське шосе 164А, біля магазину "Сільпо"</p>'+ |
| 641 | '<p>9:00 - 19:00</p>'+ | 641 | '<p>9:00 - 19:00</p>'+ |
| 642 | '<p>Пн-Пт</p>'+ | 642 | '<p>Пн-Пт</p>'+ |
| 643 | '<p>9:00 - 18:00</p>'+ | 643 | '<p>9:00 - 18:00</p>'+ |
www/js/main_ru.js
| @@ -681,7 +681,7 @@ $(document).ready(function() | @@ -681,7 +681,7 @@ $(document).ready(function() | ||
| 681 | 681 | ||
| 682 | var contentString4 = | 682 | var contentString4 = |
| 683 | '<div id="content_map">'+ | 683 | '<div id="content_map">'+ |
| 684 | - '<p>м. Київ, вул. Харьківське шосе 166-В, біля магазину "Сільпо"</p>'+ | 684 | + '<p>м. Київ, вул. Харьківське шосе 164А, біля магазину "Сільпо"</p>'+ |
| 685 | '<p>9:00 - 19:00</p>'+ | 685 | '<p>9:00 - 19:00</p>'+ |
| 686 | '<p>Пн-Пт</p>'+ | 686 | '<p>Пн-Пт</p>'+ |
| 687 | '<p>9:00 - 18:00</p>'+ | 687 | '<p>9:00 - 18:00</p>'+ |