110 lines
4.6 KiB
JavaScript
110 lines
4.6 KiB
JavaScript
document.addEventListener("DOMContentLoaded", function () {
|
||
var modalElement = document.getElementById('orderModal');
|
||
if (modalElement) {
|
||
var modal = new bootstrap.Modal(modalElement);
|
||
|
||
// Инициализация модального окна
|
||
modalElement.addEventListener('show.bs.modal', function (event) {
|
||
console.log("Модальное окно открыто");
|
||
});
|
||
|
||
modalElement.addEventListener('hide.bs.modal', function (event) {
|
||
console.log("Модальное окно закрыто");
|
||
});
|
||
}
|
||
});
|
||
|
||
document.addEventListener('DOMContentLoaded', function () {
|
||
const generateQrButton = document.getElementById('generateQrButton');
|
||
|
||
if (generateQrButton) {
|
||
generateQrButton.addEventListener('click', function () {
|
||
const clientEmail = document.getElementById('clientEmail').value;
|
||
const clientPhone = document.getElementById('clientPhone').value;
|
||
const clientName = document.getElementById('clientName').value;
|
||
const description = document.getElementById('description').value;
|
||
const serviceId = generateQrButton.getAttribute('data-service-id');
|
||
|
||
// Проверка заполненности полей
|
||
if (!clientEmail || !clientPhone || !clientName || !description || !serviceId) {
|
||
alert('Все поля должны быть заполнены.');
|
||
return;
|
||
}
|
||
|
||
// Получение CSRF токена из cookies
|
||
function getCookie(name) {
|
||
let cookieValue = null;
|
||
if (document.cookie && document.cookie !== '') {
|
||
const cookies = document.cookie.split(';');
|
||
for (let i = 0; i < cookies.length; i++) {
|
||
const cookie = cookies[i].trim();
|
||
if (cookie.substring(0, name.length + 1) === (name + '=')) {
|
||
cookieValue = decodeURIComponent(cookie.substring(name.length + 1));
|
||
break;
|
||
}
|
||
}
|
||
}
|
||
return cookieValue;
|
||
}
|
||
|
||
const csrftoken = getCookie('csrftoken');
|
||
|
||
// Отправка POST запроса на создание заявки
|
||
fetch('/service/create_request/', {
|
||
method: 'POST',
|
||
headers: {
|
||
'Content-Type': 'application/json',
|
||
'X-CSRFToken': csrftoken
|
||
},
|
||
body: JSON.stringify({
|
||
client_email: clientEmail,
|
||
client_phone: clientPhone,
|
||
client_name: clientName,
|
||
service_id: serviceId,
|
||
description: description
|
||
})
|
||
})
|
||
.then(response => {
|
||
if (!response.ok) {
|
||
throw new Error('Ошибка при создании заявки');
|
||
}
|
||
return response.json();
|
||
})
|
||
.then(data => {
|
||
if (data.status === 'success') {
|
||
alert(data.message);
|
||
} else if (data.status === 'existing_request') {
|
||
alert(data.message);
|
||
} else {
|
||
alert('Неизвестная ошибка. Пожалуйста, попробуйте снова.');
|
||
}
|
||
})
|
||
.catch(error => {
|
||
console.error('Ошибка при создании заявки:', error);
|
||
});
|
||
});
|
||
}
|
||
});
|
||
|
||
function checkVerificationStatus(serviceRequestId, interval) {
|
||
fetch(`/service/request_status/${serviceRequestId}/`)
|
||
.then(response => {
|
||
if (!response.ok) {
|
||
throw new Error('Ошибка при проверке статуса заявки');
|
||
}
|
||
return response.json();
|
||
})
|
||
.then(data => {
|
||
if (data.is_verified) {
|
||
// Закрываем форму и показываем окно подтверждения
|
||
document.getElementById('serviceModal').style.display = 'none';
|
||
document.getElementById('confirmationModal').style.display = 'block';
|
||
|
||
// Останавливаем интервал проверки статуса
|
||
clearInterval(interval);
|
||
}
|
||
})
|
||
.catch(error => {
|
||
console.error('Ошибка при проверке статуса заявки:', error);
|
||
});
|
||
} |