{% extends 'web/base.html' %}
{% load static %}
{% block title %}Услуга - {{ service.name }}{% endblock %}

{% block content %}

<div class="container py-4 py-xl-5">
    <div class="row gy-4 gy-md-0">
        <div class="col-md-6">
            <div class="p-xl-5 m-xl-5"><img class="rounded img-fluid w-100 fit-cover" style="min-height: 300px;" src="{{ service.image.url }}" /></div>
        </div>
        <div class="col-md-6 d-md-flex align-items-md-center">
            <div style="max-width: 350px;">
                <h2 class="text-uppercase fw-bold">{{ service.name }}<br /></h2>
                <p class="my-3">{{ service.description }}</p>
                <!-- Кнопка открытия модального окна -->
                <button id="openModalBtn" class="btn btn-primary" data-service-id="{{ service.id }}">Открыть заявку на услугу</button>
            </div>
        </div>
    </div>
</div>

{% include "web/modal_order_form.html" %}

<div class="container py-4">
    <div class="row-cols-auto">
        <div class="col-md-8 col-xl-6 text-center mx-auto">
            <h2>Проекты</h2>
            <p>Список проектов, связанных с данной услугой:</p>
        </div>
    </div>
    <div class="row gy-4 row-cols-1 row-cols-sm-2 row-cols-lg-3">
        {% for project in service.projects.all %}
        <div class="col">
            <div class="card project-card">
                <div class="card-body">
                    <h5 class="card-title">{{ project.name }}</h5>
                    <p class="card-text small-text">{{ project.description }}</p>
                    <p class="card-text small-text"><strong>Сообщение заказчика:</strong> {{ project.order.message }}</p>
                    <p class="card-text small-text"><strong>Дата завершения:</strong> {{ project.completion_date }}</p>
                    <p class="card-text small-text"><strong>Статус:</strong> {{ project.get_status_display }}</p>
                </div>
            </div>
        </div>
        {% endfor %}
    </div>
</div>

<div class="container py-4">
    <div class="row-cols-auto">
        <div class="col-md-8 col-xl-6 text-center mx-auto">
            <h2>Отзывы</h2>
            <p>Наших любимых клиентов. Спасибо, что Вы с нами!</p>
        </div>
    </div>

    <div class="row gy-4 row-cols-1 row-cols-sm-2 row-cols-lg-3">
        {% for review in reviews %}
        <div class="col">
            <div class="card review-card">
                <div class="card-body">
                    <p class="card-text small-text">{{ review.comment }}</p>
                    <div class="d-flex">
                        {% if review.client.image %}
                            <img class="rounded-circle flex-shrink-0 me-3 fit-cover" width="50" height="50" src="{{ review.client.image.url }}" />
                        {% else %}
                            <img class="rounded-circle flex-shrink-0 me-3 fit-cover" width="50" height="50" src="https://cdn.bootstrapstudio.io/placeholders/1400x800.png" />
                        {% endif %}
                        <div>
                            <p class="fw-bold text-primary mb-0 small-text">{{ review.client.first_name }} {{ review.client.last_name }}</p>
                            <p class="text-muted mb-0 small-text">Оценка: {{ review.rating }} из 5</p>
                        </div>
                    </div>
                </div>
            </div>
        </div>
        {% endfor %}
    </div>
</div>

<style>
    /* Добавляем стили для анимации появления модального окна */
    #serviceModal {
        display: none;
        position: fixed;
        z-index: 1;
        left: 0;
        top: 0;
        width: 100%;
        height: 100%;
        background-color: rgba(0, 0, 0, 0.4);
    }

    .modal-content {
        position: relative;
        background-color: #fefefe;
        margin: auto;
        padding: 20px;
        border: 1px solid #888;
        width: 80%;
        max-width: 600px;
        transform: scale(0);
        transition: transform 0.5s ease;
    }

    .modal.show .modal-content {
        transform: scale(1);
    }
</style>

<script <script src="{% static 'assets/js/modal-init.js' %}"> </script>
<script>
    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);
            });
    }
    
    document.addEventListener('DOMContentLoaded', function () {
        // Получение CSRF токена
        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');
    
        // Открытие модального окна
        const openModalBtn = document.getElementById('openModalBtn');
        const serviceModal = document.getElementById('serviceModal');
        if (openModalBtn) {
            openModalBtn.addEventListener('click', function (event) {
                event.preventDefault(); // Предотвращаем отправку формы при нажатии на кнопку
                serviceModal.classList.add('show');
                serviceModal.style.display = 'block';
            });
        } else {
            console.error('Не удалось найти элемент с id openModalBtn.');
        }
    
        // Закрытие модальных окон
        document.querySelectorAll('.close').forEach(closeBtn => {
            closeBtn.addEventListener('click', function () {
                serviceModal.classList.remove('show');
                setTimeout(() => {
                    serviceModal.style.display = 'none';
                }, 500); // Ждем, пока завершится анимация закрытия
            });
        });
    
        // Обработчик кнопки "Продолжить" для генерации QR-кода
        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;
    
                // Проверяем, чтобы все поля были заполнены
                if (!clientEmail || !clientPhone || !clientName || !description) {
                    alert('Все поля должны быть заполнены.');
                    return;
                }
    
                // Выполняем валидацию телефона перед продолжением
                let phonePattern = /^\+?[0-9\s\-]{7,15}$/;
                if (!phonePattern.test(clientPhone)) {
                    alert('Введите правильный номер телефона.');
                    return; // Останавливаем выполнение, если телефон не валиден
                }
    
                // Получаем serviceId из кнопки открытия модального окна
                const serviceId = openModalBtn.getAttribute('data-service-id');
                if (!serviceId) {
                    console.error('Не удалось найти идентификатор услуги');
                    return;
                }
    
                // Запрос на генерацию QR-кода с использованием метода POST
                fetch(`/service/generate_qr_code/${serviceId}/`, {
                    method: 'POST',
                    headers: {
                        'Content-Type': 'application/json',
                        'X-CSRFToken': csrftoken // Добавляем CSRF токен в заголовок
                    },
                    body: JSON.stringify({
                        client_email: clientEmail,
                        client_phone: clientPhone,
                        client_name: clientName,
                        description: description
                    })
                })
                .then(response => {
                    if (!response.ok) {
                        throw new Error('Ошибка при генерации QR-кода');
                    }
                    return response.json();
                })
                .then(data => {
                    if (!data.qr_code_url) {
                        throw new Error('Ответ не содержит URL QR-кода');
                    }
    
                    // Обновляем src изображения QR-кода и показываем его
                    const qrCodeImg = document.getElementById('qrCodeImg');
                    qrCodeImg.src = data.qr_code_url;
                    qrCodeImg.style.display = 'block';
    
                    // Запуск проверки статуса каждые 5 секунд
                    const interval = setInterval(() => {
                        checkVerificationStatus(data.service_request_id, interval, clientEmail, clientPhone, description);
                    }, 5000);
                })
                .catch(error => {
                    console.error('Ошибка при генерации QR-кода:', error);
                });
            });
        }
    });
    
</script>

{% endblock %}
