From 991a9b104ec2b345ecaefc6192984af941d881c7 Mon Sep 17 00:00:00 2001 From: "Andrey K. Choi" Date: Wed, 26 Nov 2025 21:30:44 +0900 Subject: [PATCH] =?UTF-8?q?=D0=98=D1=81=D0=BF=D1=80=D0=B0=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=D0=B0=20=D1=84=D0=BE=D1=80=D0=BC=D0=B0=20=D0=B7?= =?UTF-8?q?=D0=B0=D0=BA=D0=B0=D0=B7=D0=B0=20=D1=83=D1=81=D0=BB=D1=83=D0=B3?= =?UTF-8?q?=D0=B8=20=D0=B4=D0=BB=D1=8F=20=D0=BF=D0=BE=D0=BA=D0=B0=D0=B7?= =?UTF-8?q?=D0=B0=20QR-=D0=BA=D0=BE=D0=B4=D0=B0=20=D0=B2=D0=BC=D0=B5=D1=81?= =?UTF-8?q?=D1=82=D0=BE=20=D1=81=D0=BE=D0=B7=D0=B4=D0=B0=D0=BD=D0=B8=D1=8F?= =?UTF-8?q?=20=D0=B7=D0=B0=D1=8F=D0=B2=D0=BA=D0=B8=20=D0=BD=D0=B0=D0=BF?= =?UTF-8?q?=D1=80=D1=8F=D0=BC=D1=83=D1=8E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../web/templates/web/service_detail.html | 91 +++++++++++++------ 1 file changed, 65 insertions(+), 26 deletions(-) diff --git a/smartsoltech/web/templates/web/service_detail.html b/smartsoltech/web/templates/web/service_detail.html index e4dada6..ebd9316 100644 --- a/smartsoltech/web/templates/web/service_detail.html +++ b/smartsoltech/web/templates/web/service_detail.html @@ -417,21 +417,16 @@ document.addEventListener('DOMContentLoaded', function() { // Get CSRF token const csrfToken = document.querySelector('[name=csrfmiddlewaretoken]').value; - // Prepare data for submission + // Prepare data for QR code generation const serviceId = document.getElementById('serviceId').value; const clientData = { - service_id: serviceId, - first_name: formData.get('first_name'), - last_name: formData.get('last_name'), - email: formData.get('email'), - phone: formData.get('phone'), - description: formData.get('description'), - budget: formData.get('budget'), - timeline: formData.get('timeline') + client_email: formData.get('email'), + client_phone: formData.get('phone'), + client_name: formData.get('name') }; - // Submit to server - fetch(`/service/request/${serviceId}/`, { + // Submit to QR code generation endpoint + fetch(`/service/generate_qr_code/${serviceId}/`, { method: 'POST', headers: { 'Content-Type': 'application/json', @@ -441,24 +436,41 @@ document.addEventListener('DOMContentLoaded', function() { }) .then(response => response.json()) .then(data => { - if (data.success) { - // Show success animation + if (data.registration_link) { + // Hide form and show QR code document.querySelector('.modal-body form').style.display = 'none'; - document.getElementById('successSection').style.display = 'block'; + document.getElementById('successSection').style.display = 'none'; - // Close modal after delay - setTimeout(() => { - const modal = bootstrap.Modal.getInstance(document.getElementById('serviceModal')); - if (modal) { - modal.hide(); - } - // Reset form - form.reset(); - document.querySelector('.modal-body form').style.display = 'block'; - document.getElementById('successSection').style.display = 'none'; - }, 3000); + // Create QR code section + const qrSection = document.createElement('div'); + qrSection.id = 'qrSection'; + qrSection.className = 'text-center py-4'; + qrSection.innerHTML = ` +

Завершите заявку в Telegram

+

Отсканируйте QR-код или перейдите по ссылке для завершения регистрации заявки

+
+ QR Code +
+
+ + + Открыть в Telegram + + +
+ `; + + document.querySelector('.modal-body').appendChild(qrSection); + + // Hide footer buttons + document.querySelector('.modal-footer').style.display = 'none'; + + } else if (data.status === 'existing_request') { + alert('У вас уже есть активная заявка на данную услугу. Проверьте ваш Telegram.'); } else { - alert('Ошибка при отправке заявки: ' + (data.message || 'Попробуйте позже')); + alert('Ошибка при создании заявки: ' + (data.error || 'Попробуйте позже')); } }) .catch(error => { @@ -473,6 +485,33 @@ document.addEventListener('DOMContentLoaded', function() { }); } }); + +// Function to reset modal to initial state +function resetModal() { + const modal = document.getElementById('serviceModal'); + const form = document.getElementById('serviceRequestForm'); + const qrSection = document.getElementById('qrSection'); + + // Remove QR section if exists + if (qrSection) { + qrSection.remove(); + } + + // Show form and hide success section + document.querySelector('.modal-body form').style.display = 'block'; + document.getElementById('successSection').style.display = 'none'; + + // Show footer + document.querySelector('.modal-footer').style.display = 'flex'; + + // Reset form + form.reset(); +} + +// Reset modal when it's closed +document.getElementById('serviceModal').addEventListener('hidden.bs.modal', function () { + resetModal(); +});