Files
bilety.brzezovka.pl/templates/tickets/main-view.php
2025-04-30 23:59:49 +02:00

362 lines
13 KiB
PHP

<?php
if (isset($_POST['selected_date'])) {
$selected_date = $_POST['selected_date'];
$selected = DateTime::createFromFormat('d-m-Y', $selected_date);
$today = new DateTime();
$interval = $today->diff($selected);
$days_diff = (int)$interval->format('%r%a');
function date_price($item, $days_diff) {
if($days_diff == 0) {
$price = $item['price'] + $item['dynamic_prices']['day0'];
return $price . ' zł';
}
elseif ($days_diff == 1 || $days_diff == 2) {
$price = $item['price'] + $item['dynamic_prices']['day1_2'];
return $price . ' zł';
}
elseif ($days_diff >= 3 && $days_diff <= 7) {
$price = $item['price'] + $item['dynamic_prices']['day3_7'];
return $price . ' zł';
}
else {
$price = $item['price'];
return $price . ' zł';
}
}
}
?>
<script src="https://cdn.jsdelivr.net/npm/flatpickr"></script>
<script src="https://cdn.jsdelivr.net/npm/flatpickr/dist/l10n/pl.js"></script>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/flatpickr/dist/flatpickr.min.css">
<div class="tickets_calendar container" >
<form id="dateForm" method="POST">
<div class="_title">Wybierz datę przyjazdu:</div>
<input type="text" id="flatpickr" name="selected_date" value="<?= isset($_POST['selected_date']) ? htmlspecialchars($_POST['selected_date']) : ''; ?>" style="display: none;" >
</form>
</div>
<? if (isset($_POST['selected_date'])) : ?>
<div class="tickets container">
<!-- <div class="sale-box">
<h2>Do 31 marca ceny na wszystkie bilety <span>-20%</span></h2>
</div> -->
<!-- Bilet ulgowy -->
<div class="ticket-container">
<div class="title-container">
<h2 class="title">Bilet ulgowy</h2>
<p class="description">do 140cm wzrostu</p>
</div>
<? foreach($this -> settings['bilety-ulgowe'] as $key => $item) : ?>
<div class="ticket">
<div class="ticket-description ticket-description--<?= $this -> settings['tickets'][$item]['color']; ?>">
<h3 class="ticket__name"><?= explode( '-', $this -> settings['tickets'][$item]['name'])[0]; ?></h3>
<p class="description">bilet całodniowy</p>
<? if($this -> settings['tickets'][$item]['alert']) : ?>
<p class="ticket-alert"><?= $this -> settings['tickets'][$item]['alert']; ?></p>
<? endif; ?>
</div>
<h3 class="price">
<?php
echo date_price(
$this -> settings['tickets'][$item],
$days_diff
);
?>
</h3>
<!-- <h3 class="price"><?= $this -> settings['tickets'][$item]['price']; ?> zł</h3> -->
<div class="ticket-quantity">
<button class="add button" ticket_id="<?= $item; ?>"><i class="fa fa-plus"></i></button>
<span>1x</span>
<button class="subtract button" ticket_id="<?= $item; ?>" diffdays="<?= $days_diff; ?>"><i class="fa fa-minus"></i></button>
</div>
</div>
<? endforeach; ?>
</div>
<!-- Bilet normalny -->
<div class="ticket-container">
<div class="title-container">
<h2 class="title">Bilet normalny</h2>
<p class="description">od 140cm wzrostu</p>
</div>
<? foreach($this -> settings['bilety-normalne'] as $key => $item) : ?>
<div class="ticket">
<div class="ticket-description ticket-description--<?= $this -> settings['tickets'][$item]['color']; ?>">
<h3 class="ticket__name"><?= explode( '-', $this -> settings['tickets'][$item]['name'])[0]; ?></h3>
<p class="description">bilet całodniowy</p>
<? if($this -> settings['tickets'][$item]['alert']) : ?>
<p class="ticket-alert"><?= $this -> settings['tickets'][$item]['alert']; ?></p>
<? endif; ?>
</div>
<h3 class="price">
<?php
echo date_price(
$this -> settings['tickets'][$item],
$days_diff
);
?>
</h3>
<div class="ticket-quantity">
<button class="add button" ticket_id="<?= $item; ?>"><i class="fa fa-plus"></i></button>
<span>1x</span>
<button class="subtract button" ticket_id="<?= $item; ?>" diffdays="<?= $days_diff; ?>"><i class="fa fa-minus"></i></button>
</div>
</div>
<? endforeach; ?>
</div>
<? if($selected >= DateTime::createFromFormat('d-m-Y', '28-06-2025')): ?>
<!-- Bilet ALL OPEN -->
<div class="ticket-container">
<div class="title-container">
<h2 class="title">Bilet ALL OPEN</h2>
<p class="description">bilety do wszystkich parków</p>
</div>
<? foreach($this -> settings['bilety-all-open'] as $key => $item) : ?>
<? $pattern = "/All Open -/"; ?>
<div class="ticket">
<div class="ticket-description ticket-description--<?= $this -> settings['tickets'][$item]['color']; ?>">
<!-- <h3 class="ticket__name"><?= explode( '-', $this -> settings['tickets'][$item]['name'])[1]; ?></h3> -->
<h3 class="ticket__name"><?= preg_replace($pattern, '', $this -> settings['tickets'][$item]['name']); ?></h3>
<p class="description">bilet całodniowy</p>
</div>
<h3 class="price">
<?php
echo date_price(
$this -> settings['tickets'][$item],
$days_diff
);
?>
</h3>
<div class="ticket-quantity">
<button class="add button" ticket_id="<?= $item; ?>"><i class="fa fa-plus"></i></button>
<span>1x</span>
<button class="subtract button" ticket_id="<?= $item; ?>" diffdays="<?= $days_diff; ?>"><i class="fa fa-minus"></i></button>
</div>
</div>
<? endforeach; ?>
</div>
<? endif; ?>
<? if($selected >= DateTime::createFromFormat('d-m-Y', '28-06-2025')): ?>
<div class="ticket-container">
<div class="title-container">
<h2 class="title">Bilety rodzinne</h2>
<p class="description">bilety dla rodzin</p>
</div>
<? foreach($this -> settings['bilety-rodzinne'] as $key => $item) : ?>
<div class="ticket">
<div class="ticket-description ticket-description--<?= $this -> settings['tickets'][$item]['color']; ?>">
<h3 class="ticket__name"><?= $this -> settings['tickets'][$item]['name']; ?></h3>
<p class="description">bilet całodniowy</p>
</div>
<h3 class="price">
<?php
echo date_price(
$this -> settings['tickets'][$item],
$days_diff
);
?>
</h3>
<div class="ticket-quantity">
<button class="add button" ticket_id="<?= $item; ?>"><i class="fa fa-plus"></i></button>
<span>1x</span>
<button class="subtract button" ticket_id="<?= $item; ?>" diffdays="<?= $days_diff; ?>"><i class="fa fa-minus"></i></button>
</div>
</div>
<? endforeach; ?>
</div>
<? endif; ?>
<div class="ticket-container">
<div class="title-container">
<h2 class="title">Karnety</h2>
<p class="description">Na cały sezon</p>
</div>
<? foreach($this -> settings['karnety'] as $key => $item) : ?>
<div class="ticket">
<div class="ticket-description ticket-description--<?= $this -> settings['tickets'][$item]['color']; ?>">
<h3 class="ticket__name"><?= $this -> settings['tickets'][$item]['name']; ?></h3>
<!-- <p class="description">bilet całodniowy</p> -->
</div>
<h3 class="price">
<?php
echo date_price(
$this -> settings['tickets'][$item],
$days_diff
);
?>
</h3>
<div class="ticket-quantity">
<button class="add button" ticket_id="<?= $item; ?>"><i class="fa fa-plus"></i></button>
<span>1x</span>
<button class="subtract button" ticket_id="<?= $item; ?>" diffdays="<?= $days_diff; ?>"><i class="fa fa-minus"></i></button>
</div>
</div>
<? endforeach; ?>
</div>
</div>
<? endif; ?>
<div class="bottom-info">
<div class="bottom-info__description container">
<p>KASA NIE ZWRACA PIENIĘDZY ZA NIEWYKORZYSTANE ATRAKCJE ZE WZGLĘDU NA ZŁĄ POGODĘ, NAGŁĄ AWARIĘ TECHNICZNĄ ORAZ
OGRANICZONĄ PRZEPUSTOWOŚĆ DANYCH ATRAKCJI.</p>
<p>Przed zakupem biletu do Kompleksu Turystycznego BRZEZÓVKA należy zapoznać się z
<a style="color: #72b81b;" href="/tickets/regulamin/">regulaminem</a>, oraz <a style="color: #72b81b;" href="/tickets/regulamin_biletow_prezentowych/">regulaminem biletów prezentowych</a>.</p>
</div>
<div class="bottom-info__background "></div>
</div>
<div class="shopping-cart-container">
<div class=" <?= $this->cart ? 'shopping-cart shopping-cart--active' : "shopping-cart" ?>">
<div class="basket"><i class="fa-solid fa-ticket"></i></div>
<div class="quantity">
<p>Bilety</p>
</div>
<ul class="tickets__list">
<?php
$summary = 0;
foreach ($this->cart as $ticket_id => $combinations) :
foreach ($combinations as $key => $value) :
$summary_ticket = $value['ticket_price'] * $value['quantity'];
$summary += $summary_ticket;
?>
<li class="ticket">
<p class="ticket__description">
<?= $this->settings['tickets'][$ticket_id]['name'] . ' <span>x' . $value["quantity"] . '</span>' ?>
</p>
<p class="ticket__price">cena: <span><?= $summary_ticket ?> zł</span> </p>
<button class="ticket__button" data-ticket-id="<?= $ticket_id ?>" data-combination-key="<?= $key ?>">x</button>
</li>
<?php
endforeach;
endforeach;
?>
</ul>
<div class="sum-section">
<p>Łączna suma:</p>
<p class="sum"><?= $summary ?> zł</p>
</div>
<a href="/tickets/basket_view/" class="buy-btn">Kup teraz</a>
<button class="off-btn">x</button>
</div>
</div>
<script type="text/javascript">
$(function() {
$('body').on('click', '.shopping-cart .off-btn', function() {
$('.shopping-cart').removeClass('shopping-cart--active');
});
//add
$('body').on('click', '.add', function() {
var ticket_id = $(this).attr('ticket_id');
var date = $('#flatpickr').val();
$.ajax({
type: 'POST',
cache: false,
url: '/tickets/ticket_add/',
data: {
ticket_id: ticket_id,
date: date,
},
beforeSend: function() {},
success: function(data) {
response = jQuery.parseJSON(data);
$('.shopping-cart-container').html(response.shopping_cart);
// if (!$('.shopping-cart').hasClass('shopping-cart-active'))
// $('.shopping-cart').addClass('shopping-cart--active');
}
});
});
//subtract
$('body').on('click', '.subtract', function() {
var ticket_id = $(this).attr('ticket_id');
var diffdays = $(this).attr('diffdays');
console.log(diffdays);
$.ajax({
type: 'POST',
cache: false,
url: '/tickets/ticket_subtract/',
data: {
ticket_id: ticket_id,
diffdays: diffdays
},
beforeSend: function() {},
success: function(data) {
response = jQuery.parseJSON(data);
$('.shopping-cart-container').html(response.shopping_cart);
// if (response.cart_count = 0)
// $('.shopping-cart').removeClass('shopping-cart--active');
}
});
});
//remove
$('body').on('click', '.ticket__button', function() {
var ticket_id = $(this).attr('ticket_id');
$.ajax({
type: 'POST',
cache: false,
url: '/tickets/ticket_remove/',
data: {
ticket_id: ticket_id
},
beforeSend: function() {},
success: function(data) {
response = jQuery.parseJSON(data);
$('.shopping-cart-container').html(response.shopping_cart);
if (response.cart_count = 0)
$('.shopping-cart').removeClass('shopping-cart--active');
console.log($('.shopping-cart'));
}
});
});
});
//
const shoppingCart = document.querySelector(".shopping-cart");
document.addEventListener('onChange', () => {
let list = document.querySelectorAll(".ticket");
let subtract = document.querySelector(".subtract");
subtract.addEventListener("click", () => {
if (list.length === 0) {
shoppingCart.classList.remove("shopping-cart--active");
}
})
})
document.addEventListener('DOMContentLoaded', function() {
flatpickr("#flatpickr", {
inline: true,
dateFormat: "d-m-Y",
disableMobile: true,
minDate: "today",
locale: "pl",
theme: "material_blue",
onChange: function(selectedDates, dateStr, instance) {
document.getElementById('dateForm').submit();
}
});
});
</script>