1
This commit is contained in:
@@ -502,6 +502,7 @@
|
||||
<div class="col-md-6">
|
||||
<label class="form-label">Промокод</label>
|
||||
<input type="text" class="form-control" id="promocodeInput" name="promocode" placeholder="Введите промокод" style="text-transform: uppercase;">
|
||||
<div id="promocodeError" class="text-danger small mt-1" style="display: none;"></div>
|
||||
</div>
|
||||
<div class="col-md-6 d-flex align-items-end">
|
||||
<button type="button" class="btn btn-outline-primary btn-sm" id="checkPromocodeBtn" style="width: 100%;">Проверить промокод</button>
|
||||
@@ -536,8 +537,8 @@
|
||||
</div>
|
||||
|
||||
<script src="js/bootstrap.bundle.min.js"></script>
|
||||
<script src="js/rooms-public.js"></script>
|
||||
<script src="js/main.js"></script>
|
||||
<script src="js/rooms-public.js?v=20260511"></script>
|
||||
<script src="js/main.js?v=20260511b"></script>
|
||||
<script src="js/i18n.js"></script>
|
||||
<script src="js/reviews.js"></script>
|
||||
|
||||
|
||||
@@ -212,11 +212,13 @@ async function checkPromocode() {
|
||||
return;
|
||||
}
|
||||
|
||||
const basePrice = ROOM_PRICES[room] ? ROOM_PRICES[room] * calculateNights(checkin, checkout) : 0;
|
||||
const guests = parseInt(document.querySelector('[name="guests"]').value) || 1;
|
||||
const basePrice = ROOM_PRICES[room] ? ROOM_PRICES[room] * guests * calculateNights(checkin, checkout) : 0;
|
||||
|
||||
if (!promocode) {
|
||||
updatePriceDisplay(basePrice, 0, 0, basePrice);
|
||||
currentPromocodeData = null;
|
||||
hidePromocodeError();
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -224,20 +226,37 @@ async function checkPromocode() {
|
||||
const response = await fetch('/api/promocodes/validate', {
|
||||
method: 'POST',
|
||||
headers: { 'Content-Type': 'application/json' },
|
||||
body: JSON.stringify({ code: promocode, room_type: room, checkin, checkout })
|
||||
body: JSON.stringify({ code: promocode, room_type: room, checkin, checkout, guests })
|
||||
});
|
||||
const data = await response.json();
|
||||
|
||||
if (data.valid) {
|
||||
currentPromocodeData = data;
|
||||
updatePriceDisplay(data.base_price, data.discount_percent, data.discount_amount, data.total_price);
|
||||
hidePromocodeError();
|
||||
} else {
|
||||
hidePriceInfo();
|
||||
currentPromocodeData = null;
|
||||
updatePriceDisplay(basePrice, 0, 0, basePrice);
|
||||
showPromocodeError('Промокод не найден или срок его действия истёк');
|
||||
}
|
||||
} catch (error) {
|
||||
console.error('Promocode validation error:', error);
|
||||
hidePriceInfo();
|
||||
showPromocodeError('Ошибка проверки промокода');
|
||||
}
|
||||
}
|
||||
|
||||
function showPromocodeError(message) {
|
||||
const errorDiv = document.getElementById('promocodeError');
|
||||
if (errorDiv) {
|
||||
errorDiv.textContent = '✖ ' + message;
|
||||
errorDiv.style.display = 'block';
|
||||
}
|
||||
}
|
||||
|
||||
function hidePromocodeError() {
|
||||
const errorDiv = document.getElementById('promocodeError');
|
||||
if (errorDiv) {
|
||||
errorDiv.style.display = 'none';
|
||||
}
|
||||
}
|
||||
|
||||
@@ -245,6 +264,7 @@ document.getElementById('checkPromocodeBtn').addEventListener('click', checkProm
|
||||
document.getElementById('promocodeInput').addEventListener('blur', checkPromocode);
|
||||
document.querySelector('[name="checkin"]').addEventListener('change', checkPromocode);
|
||||
document.querySelector('[name="checkout"]').addEventListener('change', checkPromocode);
|
||||
document.querySelector('[name="guests"]').addEventListener('change', checkPromocode);
|
||||
document.querySelectorAll('.btn-book').forEach(btn => {
|
||||
btn.addEventListener('click', function() {
|
||||
setTimeout(checkPromocode, 100);
|
||||
|
||||
@@ -112,7 +112,7 @@ function initRoomBookingHandlers() {
|
||||
const roomType = this.getAttribute('data-room-type');
|
||||
const roomName = this.getAttribute('data-room-name');
|
||||
const maxGuests = parseInt(this.getAttribute('data-max-guests')) || 4;
|
||||
document.getElementById('selectedRoom').value = roomType + ' — ' + roomName;
|
||||
document.getElementById('selectedRoom').value = roomType;
|
||||
document.getElementById('selectedRoomId').value = roomId;
|
||||
updateGuestOptionsDynamic(roomType, maxGuests);
|
||||
hidePriceInfo();
|
||||
|
||||
Reference in New Issue
Block a user