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 | 54 | $data['code'] = $this->request->getPost('code', 'string', NULL ); |
| 55 | 55 | $data['start_date'] = $this->request->getPost('start_date'); |
| 56 | 56 | $data['end_date'] = $this->request->getPost('end_date'); |
| 57 | + $data['single_use'] = $this->request->getPost('single_use'); | |
| 57 | 58 | $data['discount'] = $this->request->getPost('discount', 'string', NULL ); |
| 58 | 59 | $data['description'] = $this->request->getPost('description'); |
| 59 | 60 | $data['catalog_ids'] = $this->request->getPost('catalog', 'string', NULL ); |
| ... | ... | @@ -120,6 +121,7 @@ class PromoCodesController extends Controller |
| 120 | 121 | $data[0]['description'] = $this->request->getPost('description'); |
| 121 | 122 | $data[0]['group_ids'] = $this->request->getPost('items', 'string', NULL ); |
| 122 | 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 | 126 | $cover = $this->uploadImage(); |
| 125 | 127 | ... | ... |
src/app/backend/views/promo_codes/addEdit.php
| ... | ... | @@ -47,6 +47,14 @@ |
| 47 | 47 | </div> |
| 48 | 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 | 58 | <div class="clearfix input_wrapper"> |
| 51 | 59 | <div class="label"><label for="description">Описание</label></div> |
| 52 | 60 | <div class="input"> | ... | ... |
src/app/frontend/controllers/AjaxController.php
| ... | ... | @@ -173,23 +173,62 @@ class AjaxController extends \controllers\ControllerBase |
| 173 | 173 | } |
| 174 | 174 | |
| 175 | 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 | 235 | \ No newline at end of file | ... | ... |
src/app/frontend/controllers/DealerController.php
| ... | ... | @@ -1520,6 +1520,9 @@ class DealerController extends \controllers\ControllerBase |
| 1520 | 1520 | |
| 1521 | 1521 | if( !empty( $order['proposal_number'] ) ) |
| 1522 | 1522 | { |
| 1523 | + | |
| 1524 | + | |
| 1525 | + | |
| 1523 | 1526 | $this->sendmail->addCustomer( 2, $order ); |
| 1524 | 1527 | |
| 1525 | 1528 | $this->session->set( 'in_cart', []); | ... | ... |
src/app/frontend/controllers/MenuController.php
| ... | ... | @@ -211,6 +211,25 @@ class MenuController extends \controllers\ControllerBase |
| 211 | 211 | |
| 212 | 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 | 233 | $this->sendmail->addCustomer( 2, $order ); |
| 215 | 234 | |
| 216 | 235 | $this->session->set( 'in_cart', []); | ... | ... |
src/app/frontend/messages/ru.php
| ... | ... | @@ -143,7 +143,7 @@ return array( |
| 143 | 143 | "street_two" =>"пр-т Броварской, ст.м. Лесная, в сторону центра Киева;", |
| 144 | 144 | "address_two" => "ул. Большая Кольцевая, 110-А, оптово-розничный рынок \"Столичный\", павильон \"Рыба и мясо\";", |
| 145 | 145 | "address_three" => "пр-т Академика Глушкова №6, ст.м. Ипподром, напротив Южного автовокзала;", |
| 146 | - "address_four" => "ул. Харьковское шоссе, 166-В, возле магазина \"Сільпо\";", | |
| 146 | + "address_four" => "ул. Харьковское шоссе, 164А, возле магазина \"Сільпо\";", | |
| 147 | 147 | "address_five" => "пр-т Оболонский 43, ст.м. Героев Днепра;", |
| 148 | 148 | "address_six"=>"Киево-Святошинский р-н, с.Крюковщина, ул.Балукова, 14;", |
| 149 | 149 | "address_seven"=>"ул. Архитектора Вербицкого, 22/1, возле магазина \"Велика кишеня\";", |
| ... | ... | @@ -151,7 +151,7 @@ return array( |
| 151 | 151 | "new_address_first" => 'ст.м. Лесная, пр-т Броварской, в сторону г. Бровары;', |
| 152 | 152 | "new_address_second" => 'ул. Большая Кольцевая, 110-А, оптово-розничный рынок "Столичный", павильон "Рыба и мясо";', |
| 153 | 153 | "new_address_third" => 'ст.м. Ипподром, пр-т Академика Глушкова №6, напротив Южного автовокзала;', |
| 154 | - "new_address_fourth" => 'ул. Харьковское шоссе, 166-В, возле магазина "Сільпо";', | |
| 154 | + "new_address_fourth" => 'ул. Харьковское шоссе, 164А, возле магазина "Сільпо";', | |
| 155 | 155 | "new_address_fifth" => 'пр-т Оболонский 43, ст.м. Героев Днепра;', |
| 156 | 156 | "new_address_sixth" => 'Киево-Святошинский р-н, с.Крюковщина, ул.Балукова, 14;', |
| 157 | 157 | "new_address_seventh" => 'ул. Архитектора Вербицкого, 22/1, возле магазина "Велика кишеня";', |
| ... | ... | @@ -388,4 +388,8 @@ return array( |
| 388 | 388 | "faq_j_text1" => "В каждой карточке товара указаны все варианты фасовки этой позиции, которые существуют. Профессионалам стоит обратить внимание на большие фасовки. Для того, чтобы узнать наличие и цены на профессиональные упаковки <span>в блоке «Фасовка»</span> необходимо выбрать ту фасовку, которая я Вас интересует (рис. 16). Если она доступна к заказу, то <span>в графе «Наличие»</span> зеленым цветом будет отображаться «Есть в наличии». Но, если товар отсутствует в данный момент, то в графе «Наличие» будет отображаться фраза «Отсутствует» (рис.16,17). При интересе к конкретному товару, которого сейчас нет в наличии, Вы можете связаться с нашими менеджерами по номерам телефона, указанным на сайте, для уточнения сроков ближайших поступлений и заблаговременно зарезервировать данный товар. Когда товар появится в наличии, наши менеджеры свяжутся с Вами для оформления заказа.", |
| 389 | 389 | "lang_name" => "rus", |
| 390 | 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 | 396 | \ No newline at end of file | ... | ... |
src/app/frontend/messages/ua.php
| ... | ... | @@ -163,7 +163,7 @@ return array( |
| 163 | 163 | "street_two" =>"ст.м. Лісова, пр-т Броварський, Торговий павільон \"Професійне насіння\" №25;", |
| 164 | 164 | "address_two" => "вул. Велика Кільцева 110-А, оптово-роздрібний ринок \"Столичний\", павільйон \"Риба та м'ясо\";", |
| 165 | 165 | "address_three" => "ст.м. Іподром, пр-т Академіка Глушкова №6, магазин \"Професійне насіння\" навпроти Південного автовокзалу;", |
| 166 | - "address_four" => "вул. Харьківське шосе 166-В, біля магазину \"Сільпо\"", | |
| 166 | + "address_four" => "вул. Харьківське шосе 164А, біля магазину \"Сільпо\"", | |
| 167 | 167 | "address_five" => "пр-т Оболонський, 43, ст.м. Героїв Дніпра;", |
| 168 | 168 | "address_six"=>"Києво-Святошинський р-н, с.Крюківщина, вул.Балукова, 14;", |
| 169 | 169 | "address_seven"=>"вул. Архітектора Вербицького 22/1", |
| ... | ... | @@ -172,7 +172,7 @@ return array( |
| 172 | 172 | "new_address_first" => 'ст.м. Лісова, пр-т Броварський, в сторону м. Бровари;', |
| 173 | 173 | "new_address_second" => 'вул. Велика Кільцева, 110-А, оптово-роздрібний ринок "Столичний", павільйон "Риба та м\'ясо";', |
| 174 | 174 | "new_address_third" => 'ст.м. Іподром, пр-т Академіка Глушкова №6, навпроти Південного автовокзалу;', |
| 175 | - "new_address_fourth" => 'вул. Харківське шоссе, 166-В, біля магазину "Сільпо";', | |
| 175 | + "new_address_fourth" => 'вул. Харківське шоссе, 164А, біля магазину "Сільпо";', | |
| 176 | 176 | "new_address_fifth" => 'пр-т Оболонський 43, ст.м. Героїв Дніпра;', |
| 177 | 177 | "new_address_sixth" => 'Києво-Святошинський р-н, с.Крюківщина, вул.Балукова, 14;', |
| 178 | 178 | "new_address_seventh" => 'вул. Архітектора Вербицького, 22/1, біля магазину "Велика кишеня";', |
| ... | ... | @@ -417,4 +417,8 @@ return array( |
| 417 | 417 | "faq_j_text1" => "У кожній картці товару вказані всі варіанти фасування цієї позиції, які існують. Професіоналам варто звернути увагу на великі фасовки. Для того, щоб дізнатися про наявність та ціни на професійні упаковки <span>в блоці «Фасовка»</span> необхідно вибрати ту фасовку, яка Вас цікавить (мал. 16). Якщо вона доступна до замовлення, то <span>в графі «Наявність»</span> зеленим кольором буде відображатися «Є в наявності». Але, якщо товар відсутній в даний момент, то в графі «Наявність» буде відображатися фраза «Відсутній» (мал.16,17). При зацікавленності в конкретному товарі, якого зараз немає в наявності, Ви можете зв'язатися з нашими менеджерами за номерами телефону, вказаним на сайті, для уточнення термінів найближчих надходжень і завчасно зарезервувати даний товар. Коли товар з'явиться в наявності, наші менеджери зв'яжуться з Вами для оформлення замовлення.", |
| 418 | 418 | "lang_name" => "ukr", |
| 419 | 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 | 425 | \ No newline at end of file | ... | ... |
src/app/frontend/views/menu/order.php
| ... | ... | @@ -589,10 +589,16 @@ |
| 589 | 589 | promo_code: $('#promo_code').val() |
| 590 | 590 | }, |
| 591 | 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 | 603 | error: function (error) { |
| 598 | 604 | $alert.addClass('alert-danger').removeClass('alert-success'); | ... | ... |
src/config/global.php
| ... | ... | @@ -48,7 +48,7 @@ return |
| 48 | 48 | '10001'=>'ст.м. Лісова, пр-т Броварський, Торговий павільон "Професійне насіння" №25;', |
| 49 | 49 | '10002'=>'вул. Велика Кільцева 110-А, оптово-роздрібний ринок "Столичний", павільйон "Риба та м\'ясо";', |
| 50 | 50 | '10003'=>'ст.м. Іподром, пр-т Академіка Глушкова, магазин "Професійне насіння" навпроти Південного автовокзалу;', |
| 51 | - '10004'=>'вул. Харьківське шосе 166-В, біля магазину "Сільпо";', | |
| 51 | + '10004'=>'вул. Харьківське шосе 164А, біля магазину "Сільпо";', | |
| 52 | 52 | '10005'=>'ст.м. Героїв Дніпра, пр-т Оболонський 43;', |
| 53 | 53 | '7' => "<b>Адресна доставка кур’єром по м.Києву</b><br />", |
| 54 | 54 | '77' => "Вартість доставки замовленнь складає 60 грн. У разі замовлення на суму більшу за 500 грн - доставка безкоштовна. Кур'єр попередньо узгодить з Вами час доставки телефоном.", |
| ... | ... | @@ -76,7 +76,7 @@ return |
| 76 | 76 | '10001'=>'ст.м. Лесная, пр-т Броварской, Торговий павильйон "Професійне насіння" №25;', |
| 77 | 77 | '10002'=>'ул. Большая Окружная 110-А, оптово-розничный рынок "Столичный", павильон "Рыба и мясо";', |
| 78 | 78 | '10003'=>'ст.м. Іподром, пр-т Академика Глушкова №6, магазин "Професійне насіння" напротив Южного автовокзала;', |
| 79 | - '10004'=>'ул. Харьковское шоссе 166-В, магазин "Професійне насіння" возле магазина "Сільпо";', | |
| 79 | + '10004'=>'ул. Харьковское шоссе 164А, магазин "Професійне насіння" возле магазина "Сільпо";', | |
| 80 | 80 | '10005'=>'ст.м. Героев Днепра, пр-т Оболонський 43, магазин "Професійне насіння";', |
| 81 | 81 | '7' => '<b>Адресная доставка курьером по г.Киеву</b> <br />', |
| 82 | 82 | "77" =>"Стоимость доставки заказа составляет 60 грн. В случае заказа на сумму большую 500 грн - доставка бесплатная. Курьер предварительно согласует с Вами время доставки по телефону.", | ... | ... |
src/lib/models.php
| ... | ... | @@ -50,6 +50,7 @@ namespace |
| 50 | 50 | protected $_reviews = false; |
| 51 | 51 | protected $_modal = false; |
| 52 | 52 | protected $_manager_mail = false; |
| 53 | + protected $_promo_to_user = false; | |
| 53 | 54 | |
| 54 | 55 | |
| 55 | 56 | |
| ... | ... | @@ -583,6 +584,17 @@ namespace |
| 583 | 584 | |
| 584 | 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 | 103 | all_items, |
| 104 | 104 | image, |
| 105 | 105 | start_date, |
| 106 | - end_date | |
| 106 | + end_date, | |
| 107 | + single_use | |
| 108 | + | |
| 107 | 109 | ) |
| 108 | 110 | VALUES |
| 109 | 111 | ( |
| ... | ... | @@ -116,7 +118,8 @@ class promo_codes extends \db |
| 116 | 118 | :all_items, |
| 117 | 119 | :image, |
| 118 | 120 | :start_date, |
| 119 | - :end_date | |
| 121 | + :end_date, | |
| 122 | + :single_use | |
| 120 | 123 | ) |
| 121 | 124 | RETURNING id |
| 122 | 125 | ', |
| ... | ... | @@ -130,7 +133,8 @@ class promo_codes extends \db |
| 130 | 133 | 'all_items' => $data['all_items'], |
| 131 | 134 | 'image' => $data['image'], |
| 132 | 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 | 139 | -1 |
| 136 | 140 | ); |
| ... | ... | @@ -154,7 +158,8 @@ class promo_codes extends \db |
| 154 | 158 | all_items = :all_items, |
| 155 | 159 | image = :image, |
| 156 | 160 | start_date = :start_date, |
| 157 | - end_date = :end_date | |
| 161 | + end_date = :end_date, | |
| 162 | + single_use = :single_use | |
| 158 | 163 | WHERE |
| 159 | 164 | id = :id |
| 160 | 165 | ', |
| ... | ... | @@ -168,6 +173,7 @@ class promo_codes extends \db |
| 168 | 173 | 'image' => $data['image'], |
| 169 | 174 | 'start_date' => $data['start_date'], |
| 170 | 175 | 'end_date' => $data['end_date'], |
| 176 | + 'single_use' => $data['single_use'], | |
| 171 | 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 | 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 | 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 | 3129 | /****************email-settings**********************/ |
| 3130 | 3130 | .email-settings_title { | ... | ... |
www/js/main.js
| ... | ... | @@ -637,7 +637,7 @@ $(document).ready(function() |
| 637 | 637 | |
| 638 | 638 | var contentString4 = |
| 639 | 639 | '<div id="content_map">'+ |
| 640 | - '<p>м. Київ, вул. Харьківське шосе 166-В, біля магазину "Сільпо"</p>'+ | |
| 640 | + '<p>м. Київ, вул. Харьківське шосе 164А, біля магазину "Сільпо"</p>'+ | |
| 641 | 641 | '<p>9:00 - 19:00</p>'+ |
| 642 | 642 | '<p>Пн-Пт</p>'+ |
| 643 | 643 | '<p>9:00 - 18:00</p>'+ | ... | ... |
www/js/main_ru.js
| ... | ... | @@ -681,7 +681,7 @@ $(document).ready(function() |
| 681 | 681 | |
| 682 | 682 | var contentString4 = |
| 683 | 683 | '<div id="content_map">'+ |
| 684 | - '<p>м. Київ, вул. Харьківське шосе 166-В, біля магазину "Сільпо"</p>'+ | |
| 684 | + '<p>м. Київ, вул. Харьківське шосе 164А, біля магазину "Сільпо"</p>'+ | |
| 685 | 685 | '<p>9:00 - 19:00</p>'+ |
| 686 | 686 | '<p>Пн-Пт</p>'+ |
| 687 | 687 | '<p>9:00 - 18:00</p>'+ | ... | ... |