-- DELETE FROM quiz_privilege_usage;
-- DELETE FROM privileges;
-- DELETE FROM answer;
-- DELETE FROM question;
-- DELETE FROM quiz;
-- DELETE FROM account;


INSERT INTO account (id, user_id, created_at, deleted) VALUES
    ('550e8400-e29b-41d4-a716-446655440001', 'test_user_123',   CURRENT_TIMESTAMP, false),
    ('550e8400-e29b-41d4-a716-446655440002', 'existing_user_456',   CURRENT_TIMESTAMP, false),
    ('550e8400-e29b-41d4-a716-446655440003', 'user_for_delete_789',   CURRENT_TIMESTAMP, false),
    ('550e8400-e29b-41d4-a716-446655440004', 'deleted_user_999',   CURRENT_TIMESTAMP, true),
    ('550e8400-e29b-41d4-a716-446655440005', 'no_privileges_user',   CURRENT_TIMESTAMP, false),
    ('550e8400-e29b-41d4-a716-446655440006', 'multi_privileges_user',   CURRENT_TIMESTAMP, false);

INSERT INTO privileges (privilegeID, account_id, privilege_name, amount) VALUES
    ('quizCnt', '550e8400-e29b-41d4-a716-446655440001', 'Количество Заявок', 10),
    ('quizUnlimTime', '550e8400-e29b-41d4-a716-446655440002', 'Безлимит Опросов', 30),
    ('squizHideBadge', '550e8400-e29b-41d4-a716-446655440002', 'Скрытие шильдика в опроснике', 15),
    ('quizManual', '550e8400-e29b-41d4-a716-446655440003', 'Заказать quiz', 2),
    ('quizGigaChat', '550e8400-e29b-41d4-a716-446655440003', 'Услуга от GigaChat', 5),
    ('quizCnt', '550e8400-e29b-41d4-a716-446655440006', 'Количество Заявок', 50),
    ('quizUnlimTime', '550e8400-e29b-41d4-a716-446655440006', 'Безлимит Опросов', 90),
    ('squizHideBadge', '550e8400-e29b-41d4-a716-446655440006', 'Скрытие шильдика в опроснике', 60),
    ('quizManual', '550e8400-e29b-41d4-a716-446655440006', 'Заказать quiz', 10),
    ('quizGigaChat', '550e8400-e29b-41d4-a716-446655440006', 'Услуга от GigaChat', 20);

INSERT INTO quiz (qid, accountid, name, description, status, created_at, updated_at) VALUES
    (gen_random_uuid(), 'test_user_123', 'Тестовый квиз 1', 'Описание тестового квиза 1', 'start', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP),
    (gen_random_uuid(), 'test_user_123', 'Тестовый квиз 2', 'Описание тестового квиза 2', 'draft', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP),
    (gen_random_uuid(), 'existing_user_456', 'Существующий квиз 1', 'Описание существующего квиза 1', 'start', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP),
    (gen_random_uuid(), 'existing_user_456', 'Существующий квиз 2', 'Описание существующего квиза 2', 'template', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP),
    (gen_random_uuid(), 'user_for_delete_789', 'Квиз для удаления 1', 'Описание квиза для удаления 1', 'start', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP),
    (gen_random_uuid(), 'user_for_delete_789', 'Квиз для удаления 2', 'Описание квиза для удаления 2', 'draft', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP),
    (gen_random_uuid(), 'multi_privileges_user', 'Мультипривилегированный квиз 1', 'Описание мультипривилегированного квиза 1', 'start', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP),
    (gen_random_uuid(), 'multi_privileges_user', 'Мультипривилегированный квиз 2', 'Описание мультипривилегированного квиза 2', 'template', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP);

DO $$
    DECLARE
        quiz1_id BIGINT;
        quiz2_id BIGINT;
        quiz3_id BIGINT;
        quiz4_id BIGINT;
        quiz5_id BIGINT;
        quiz6_id BIGINT;
        quiz7_id BIGINT;
        quiz8_id BIGINT;
    BEGIN
        SELECT id INTO quiz1_id FROM quiz WHERE name = 'Тестовый квиз 1' LIMIT 1;
        SELECT id INTO quiz2_id FROM quiz WHERE name = 'Тестовый квиз 2' LIMIT 1;
        SELECT id INTO quiz3_id FROM quiz WHERE name = 'Существующий квиз 1' LIMIT 1;
        SELECT id INTO quiz4_id FROM quiz WHERE name = 'Существующий квиз 2' LIMIT 1;
        SELECT id INTO quiz5_id FROM quiz WHERE name = 'Квиз для удаления 1' LIMIT 1;
        SELECT id INTO quiz6_id FROM quiz WHERE name = 'Квиз для удаления 2' LIMIT 1;
        SELECT id INTO quiz7_id FROM quiz WHERE name = 'Мультипривилегированный квиз 1' LIMIT 1;
        SELECT id INTO quiz8_id FROM quiz WHERE name = 'Мультипривилегированный квиз 2' LIMIT 1;

        INSERT INTO question (quiz_id, title, description, questiontype, required, deleted, page, content, version) VALUES
            (quiz1_id, 'Первый вопрос тестового квиза', 'Описание первого вопроса', 'variant', true, false, 1, '{"options": ["Вариант 1", "Вариант 2", "Вариант 3"]}', 1),
            (quiz1_id, 'Второй вопрос тестового квиза', 'Описание второго вопроса', 'text', false, false, 1, '{"placeholder": "Введите ответ"}', 1),
            (quiz2_id, 'Вопрос черновика', 'Описание вопроса черновика', 'select', true, false, 1, '{"options": ["Выбор 1", "Выбор 2"]}', 1),
            (quiz3_id, 'Вопрос существующего квиза', 'Описание вопроса существующего квиза', 'rating', false, false, 1, '{"max_rating": 5}', 1),
            (quiz4_id, 'Вопрос шаблона', 'Описание вопроса шаблона', 'emoji', true, false, 1, '{"emojis": ["😀", "😢", "😡"]}', 1),
            (quiz5_id, 'Вопрос для удаления 1', 'Описание вопроса для удаления 1', 'variant', true, false, 1, '{"options": ["Удалить 1", "Удалить 2"]}', 1),
            (quiz5_id, 'Вопрос для удаления 2', 'Описание вопроса для удаления 2', 'text', false, false, 1, '{"placeholder": "Введите текст для удаления"}', 1),
            (quiz6_id, 'Вопрос черновика для удаления', 'Описание вопроса черновика для удаления', 'select', true, false, 1, '{"options": ["Удалить выбор 1", "Удалить выбор 2"]}', 1),
            (quiz7_id, 'Вопрос мультипривилегированного квиза 1', 'Описание вопроса мультипривилегированного квиза 1', 'images', true, false, 1, '{"images": ["image1.jpg", "image2.jpg"]}', 1),
            (quiz8_id, 'Вопрос мультипривилегированного квиза 2', 'Описание вопроса мультипривилегированного квиза 2', 'varimg', false, false, 1, '{"options": ["Вариант с картинкой 1", "Вариант с картинкой 2"], "images": ["img1.jpg", "img2.jpg"]}', 1);

        INSERT INTO answer (content, quiz_id, question_id, fingerprint, session, version) VALUES
            ('Ответ на первый вопрос', quiz1_id, (SELECT id FROM question WHERE title = 'Первый вопрос тестового квиза' LIMIT 1), 'fp_test_1', 'session_1', 1),
            ('Ответ на второй вопрос', quiz1_id, (SELECT id FROM question WHERE title = 'Второй вопрос тестового квиза' LIMIT 1), 'fp_test_2', 'session_1', 1),
            ('Ответ на вопрос существующего квиза', quiz3_id, (SELECT id FROM question WHERE title = 'Вопрос существующего квиза' LIMIT 1), 'fp_existing_1', 'session_2', 1),
            ('Ответ на вопрос шаблона', quiz4_id, (SELECT id FROM question WHERE title = 'Вопрос шаблона' LIMIT 1), 'fp_template_1', 'session_3', 1),
            ('Ответ на вопрос для удаления 1', quiz5_id, (SELECT id FROM question WHERE title = 'Вопрос для удаления 1' LIMIT 1), 'fp_delete_1', 'session_4', 1),
            ('Ответ на вопрос для удаления 2', quiz5_id, (SELECT id FROM question WHERE title = 'Вопрос для удаления 2' LIMIT 1), 'fp_delete_2', 'session_4', 1),
            ('Ответ на вопрос мультипривилегированного квиза 1', quiz7_id, (SELECT id FROM question WHERE title = 'Вопрос мультипривилегированного квиза 1' LIMIT 1), 'fp_multipriv_1', 'session_5', 1),
            ('Ответ на вопрос мультипривилегированного квиза 2', quiz8_id, (SELECT id FROM question WHERE title = 'Вопрос мультипривилегированного квиза 2' LIMIT 1), 'fp_multipriv_2', 'session_6', 1);

        INSERT INTO quiz_privilege_usage (quiz_id, privilege_id, used_count) VALUES
             (quiz1_id, 'quizCnt', 2),
             (quiz3_id, 'quizUnlimTime', 1),
             (quiz4_id, 'squizHideBadge', 1),
             (quiz5_id, 'quizManual', 2),
             (quiz7_id, 'quizGigaChat', 1),
             (quiz8_id, 'quizCnt', 1);

    END $$;

UPDATE quiz SET
    questions_count = (SELECT COUNT(*) FROM question WHERE quiz_id = quiz.id AND deleted = false),
    answers_count = (SELECT COUNT(*) FROM answer WHERE quiz_id = quiz.id)
WHERE id IN (SELECT DISTINCT quiz_id FROM question);