namespace controls; class Tickets { static public function main_view() { global $settings; if ( !$settings['tickets']['enable_sell'] ) return \Tpl::view( 'tickets/disabled-sell' ); return \Tpl::view('tickets/main-view', [ 'cart' => \S::get_session('basket'), 'settings' => $settings ]); } static public function ticket_add() { global $settings; $selected_date = \S::get( 'date' ) ? \S::get( 'date' ) : null; $diffDays = \S::get('diffdays') ?? 0; if ( $selected_date ) { $selected = new \DateTime($selected_date); $today = new \DateTime(date('Y-m-d') . ' 00:00:00'); $diffDays = $selected->diff($today)->days; } $basket = \S::get_session('basket'); $ticket_id = \S::get('ticket_id'); if ( $basket[$ticket_id][$diffDays] ) { $basket[$ticket_id][$diffDays]['quantity']++; } else { if ($diffDays == 0) { $addon = $settings['tickets'][$ticket_id]['dynamic_prices']['day0'] ?? 0; } elseif ($diffDays <= 2) { $addon = $settings['tickets'][$ticket_id]['dynamic_prices']['day1_2'] ?? 0; } elseif ($diffDays <= 7) { $addon = $settings['tickets'][$ticket_id]['dynamic_prices']['day3_7'] ?? 0; } else { $addon = 0; } $basket[$ticket_id][$diffDays]['ticket_id'] = $ticket_id; $basket[$ticket_id][$diffDays]['ticket_price'] = $settings['tickets'][$ticket_id]['price'] + $addon; $basket[$ticket_id][$diffDays]['product_id'] = $settings['tickets'][$ticket_id]['product_id']; $basket[$ticket_id][$diffDays]['quantity'] = 1; $basket[$ticket_id][$diffDays]['date'] = $selected_date; } if ( strpos( $ticket_id, "gift" ) !== false ) { $basket['gift-price'][0]['quantity'] = 1; $basket['gift-price'][0]['ticket_price'] = $settings['tickets']['gift-price']['price']; $basket['gift-price'][0]['product_id'] = $settings['tickets']['gift-price']['product_id']; $basket['gift-price'][0]['ticket_id'] = 'gift-price'; } $basket = \factory\Tickets::recalculate_ticket_protection( $basket ); \S::set_session( 'basket', $basket ); if (\S::get('basket_step_1')) echo json_encode([ 'basket_form' => \Tpl::view('tickets/basket-form', [ 'cart' => $basket, 'settings' => $settings ]), 'basket_summary' => \Tpl::view('tickets/basket-summary', [ 'cart' => $basket, 'settings' => $settings ]) ]); else echo json_encode(['shopping_cart' => \Tpl::view('tickets/shopping-cart', [ 'cart' => $basket, 'settings' => $settings ])]); exit; } static public function ticket_subtract() { global $settings; $basket = \S::get_session('basket'); $ticket_id = \S::get('ticket_id'); $diffdays = \S::get('diffdays'); if ($basket[$ticket_id][$diffdays]['quantity'] > 0) { $basket[$ticket_id][$diffdays]['quantity']--; if ($basket[$ticket_id][$diffdays]['quantity'] == 0) { unset($basket[$ticket_id][$diffdays]); if (empty($basket[$ticket_id])) { unset($basket[$ticket_id]); } $giftKeys = array_filter(array_keys($basket), function ($key) { return strpos($key, "gift") !== false && $key != "gift-price"; }); if (empty($giftKeys)) { unset($basket['gift-price']); } } } $basket = \factory\Tickets::recalculate_ticket_protection( $basket ); \S::set_session( 'basket', $basket ); if (\S::get('basket_step_1')) echo json_encode([ 'basket_form' => \Tpl::view('tickets/basket-form', [ 'cart' => $basket, 'settings' => $settings ]), 'basket_summary' => \Tpl::view('tickets/basket-summary', [ 'cart' => $basket, 'settings' => $settings ]), 'cart_count' => count($basket) ]); else echo json_encode([ 'shopping_cart' => \Tpl::view('tickets/shopping-cart', [ 'cart' => $basket, 'settings' => $settings ]), 'cart_count' => count($basket) ]); exit; } static public function ticket_remove() { global $settings; $basket = \S::get_session('basket'); $ticket_id = \S::get('ticket_id'); $diffdays = \S::get('diffdays'); unset($basket[$ticket_id]); $giftKeys = array_filter(array_keys($basket), function ($key) { return strpos($key, "gift") !== false && $key != "gift-price"; }); if (empty($giftKeys)) { unset($basket['gift-price']); } $basket = \factory\Tickets::recalculate_ticket_protection( $basket ); \S::set_session('basket', $basket); if (\S::get('basket_step_1')) echo json_encode([ 'basket_form' => \Tpl::view('tickets/basket-form', [ 'cart' => $basket, 'settings' => $settings ]), 'basket_summary' => \Tpl::view('tickets/basket-summary', [ 'cart' => $basket, 'settings' => $settings ]), 'cart_count' => count($basket) ]); else echo json_encode([ 'shopping_cart' => \Tpl::view('tickets/shopping-cart', [ 'cart' => $basket, 'settings' => $settings ]), 'cart_count' => count($basket) ]); exit; } // Strona koszyka static public function basket_view() { global $settings; if ( \S::get( 'ticket_protection' ) == 'true' ) { \S::set_session( 'ticket_protection', true ); \factory\Tickets::add_ticket_protection(); header( 'Location: /tickets/basket_view/' ); exit; } if ( \S::get( 'ticket_protection' ) == 'false' ) { \S::set_session( 'ticket_protection', false ); \factory\Tickets::remove_ticket_protection(); header( 'Location: /tickets/basket_view/' ); exit; } return \Tpl::view('tickets/basket-view', [ 'cart' => \S::get_session('basket'), 'settings' => $settings ]); } // Przetwarzanie formularza static public function basketFormHandler() { global $settings, $mdb; $basket = \S::get_session('basket'); $date = date('Y-m-d H:i:s'); $finalPrice = 0; foreach ( ( $basket ) as $data => $value ) { foreach ( $value as $key => $val ) { $price = $val['ticket_price']; $quantity = $val['quantity']; $finalPrice += $price * $quantity; } } $hash = md5(trim($_POST['email']) . trim($_POST['city']) . trim(date("Y-m-d H:i:s"))); //* Zapisywanie do DB klienta $mdb->insert('orders', [ 'name' => trim($_POST['name']), 'surname' => trim($_POST['surname']), 'email' => trim($_POST['email']), 'zip_code' => trim($_POST['zip_code']), 'city' => trim($_POST['city']), 'street' => trim($_POST['street']), 'order_price' => trim($finalPrice), 'date_added' => $date, 'hash' => $hash, 'vat' => trim($_POST['vat'] == 'on' ? '1' : '0'), 'company_name' => trim($_POST['company_name']), 'nip' => trim($_POST['nip']), 'gift_address' => trim($_POST['gift_address']) ] ); //* Id klienta $last_id = $mdb->id(); if ( $last_id ) { foreach ( ( $basket ) as $data => $value ) { foreach ( $value as $key => $val ) { $price = $val['ticket_price']; $quantity = $val['quantity']; $finalPrice += $price * $quantity; } } foreach ( ( $basket ) as $data => $value ) { foreach ( $value as $key => $val ) { if ( $val['date'] ) { $dateFormatted = new \DateTime( $val['date'] ); $dateFormatted = $dateFormatted->format('Y-m-d'); } else $dateFormatted = null; // Zapisywanie do DB bilety $mdb -> insert( 'order_tickets', [ 'order_id' => $last_id, 'product_id' => $val['product_id'], 'name' => trim( $settings['tickets'][$val['ticket_id']]['name'] ), 'quantity' => trim( $val["quantity"]), 'price' => trim( $val['ticket_price']), 'date_visit' => $dateFormatted, 'date_added' => $date ] ); } } //QR CODE $dir = 'orders/' . $hash[0] . '/' . $hash[1] . '/'; if (!file_exists($dir . $hash . '.png')) { if (!is_dir($dir)) mkdir($dir, 0755, true); \QRcode::png($hash, $dir . $hash . '.png', QR_ECLEVEL_H, 4); } \S::del_session('basket'); header('Location: /tickets/przelewy24/order=' . $hash); } else { header('Location: /tickets/main_view/'); } exit; } //* Strona końcowego zamówienia static public function przelewy24() { global $settings, $mdb; $hash = \S::get('order'); $order = \factory\Tickets::get_order_details_by_hash(\S::get('order')); $subject = "brzezovka.pl - zamówienie biletów"; $message = '

| Dane zamówienia | '; $message .= 'Dane zamawiającego | '; $message .= '
|---|---|
| Cena: ' . $order['order_price'] . 'zł | '; $message .= '' . $order['name'] . ' ' . $order['surname'] . ' | '; $message .= '
| Data: ' . $order['date_added'] . ' | '; $message .= '' . $order['city'] . ' ' . $order['zip_code'] . ' | '; $message .= '
| '; $message .= ' | ' . $order['email'] . ' | '; $message .= '
| Bilet | Termin wizyty | Cena | Ilość | Razem |
|---|---|---|---|---|
| ' . $value['name'] . ' | '; $message .= '' . $value['date_visit'] . ' | '; $message .= '' . $value['price'] . ' | '; $message .= '' . $value["quantity"] . ' | '; $message .= '' . $value['price']*$value["quantity"] . 'zł | '; $message .= '
' . $order['gift_address'] . '
'; } $message .= '
