-- ============================================================
-- Migracja 006: FAQ - pełne domknięcie wg koncepcji
-- Tartak Dana CMS - Etap 4 (uzupełnienie)
-- Kompatybilność: MySQL 8.0
-- ============================================================


-- -----------------------------------------------------------
-- Kategorie FAQ: wyrównanie do koncepcji
-- Docelowo: Produkty, Usługi, Transport, Zamówienia, Płatności, Konserwacja
-- -----------------------------------------------------------

-- Jeśli istnieje stary slug "zamowienia-platnosci" i nie ma "zamowienia",
-- zmień kategorię na "Zamówienia".
SET @has_old_orders_payments := (
    SELECT COUNT(*) FROM faq_categories WHERE slug = 'zamowienia-platnosci'
);
SET @has_orders := (
    SELECT COUNT(*) FROM faq_categories WHERE slug = 'zamowienia'
);
SET @sql := IF(
    @has_old_orders_payments > 0 AND @has_orders = 0,
    'UPDATE faq_categories
     SET title = ''Zamówienia'', slug = ''zamowienia'', sort_order = 40
     WHERE slug = ''zamowienia-platnosci''',
    'DO 0'
);
PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;

-- Upewnij się, że wymagane kategorie istnieją i mają właściwe sortowanie.
INSERT INTO faq_categories (title, slug, sort_order, is_published)
VALUES
    ('Produkty', 'produkty', 10, 1),
    ('Usługi', 'uslugi', 20, 1),
    ('Transport', 'transport', 30, 1),
    ('Zamówienia', 'zamowienia', 40, 1),
    ('Płatności', 'platnosci', 50, 1),
    ('Konserwacja', 'konserwacja', 60, 1)
ON DUPLICATE KEY UPDATE
    title = VALUES(title),
    sort_order = VALUES(sort_order),
    is_published = VALUES(is_published),
    updated_at = NOW();

-- Jeżeli po migracjach historycznych pozostała stara kategoria łączona,
-- przenieś jej pytania do "zamowienia" i usuń starą kategorię.
SET @has_old_orders_payments := (
    SELECT COUNT(*) FROM faq_categories WHERE slug = 'zamowienia-platnosci'
);
SET @has_orders := (
    SELECT COUNT(*) FROM faq_categories WHERE slug = 'zamowienia'
);

SET @sql := IF(
    @has_old_orders_payments > 0 AND @has_orders > 0,
    'UPDATE faq_items i
     JOIN faq_categories oldc ON oldc.id = i.category_id AND oldc.slug = ''zamowienia-platnosci''
     JOIN faq_categories newc ON newc.slug = ''zamowienia''
     SET i.category_id = newc.id',
    'DO 0'
);
PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;

SET @sql := IF(
    @has_old_orders_payments > 0 AND @has_orders > 0,
    'DELETE FROM faq_categories WHERE slug = ''zamowienia-platnosci''',
    'DO 0'
);
PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;

-- -----------------------------------------------------------
-- FAQ: seed pytań i odpowiedzi (25 pytań)
-- Idempotentnie: tylko jeśli pytanie jeszcze nie istnieje.
-- -----------------------------------------------------------

-- Produkty
INSERT INTO faq_items (category_id, question, answer_html, sort_order, is_published)
SELECT c.id, 'Jakie gatunki drewna oferujecie?', '<p>Najczęściej pracujemy na drewnie iglastym: sosna i świerk. W zależności od produktu oraz dostępności przygotowujemy także inne gatunki.</p>', 10, 1
FROM faq_categories c
WHERE c.slug = 'produkty'
  AND NOT EXISTS (SELECT 1 FROM faq_items WHERE question = 'Jakie gatunki drewna oferujecie?');

INSERT INTO faq_items (category_id, question, answer_html, sort_order, is_published)
SELECT c.id, 'Czy drewno jest suszone komorowo?', '<p>Tak, dla wybranych grup asortymentowych oferujemy drewno suszone komorowo. W karcie produktu podajemy parametry wilgotności i klasę materiału.</p>', 20, 1
FROM faq_categories c
WHERE c.slug = 'produkty'
  AND NOT EXISTS (SELECT 1 FROM faq_items WHERE question = 'Czy drewno jest suszone komorowo?');

INSERT INTO faq_items (category_id, question, answer_html, sort_order, is_published)
SELECT c.id, 'Jakie wymiary desek elewacyjnych są dostępne?', '<p>Dostępne profile i zakres wymiarów zależą od rodzaju deski. Aktualne parametry podajemy na kartach produktów oraz podczas wyceny.</p>', 30, 1
FROM faq_categories c
WHERE c.slug = 'produkty'
  AND NOT EXISTS (SELECT 1 FROM faq_items WHERE question = 'Jakie wymiary desek elewacyjnych są dostępne?');

INSERT INTO faq_items (category_id, question, answer_html, sort_order, is_published)
SELECT c.id, 'Czy mogę zamówić niestandardowe wymiary?', '<p>W wielu przypadkach tak. Skontaktuj się z nami i podaj wymagane przekroje, długości oraz ilość, a sprawdzimy możliwości produkcyjne.</p>', 40, 1
FROM faq_categories c
WHERE c.slug = 'produkty'
  AND NOT EXISTS (SELECT 1 FROM faq_items WHERE question = 'Czy mogę zamówić niestandardowe wymiary?');

INSERT INTO faq_items (category_id, question, answer_html, sort_order, is_published)
SELECT c.id, 'Co oznacza klasa C24?', '<p>C24 to klasa wytrzymałości drewna konstrukcyjnego zgodna z normami budowlanymi. Oznacza materiał o określonych parametrach nośności i jakości.</p>', 50, 1
FROM faq_categories c
WHERE c.slug = 'produkty'
  AND NOT EXISTS (SELECT 1 FROM faq_items WHERE question = 'Co oznacza klasa C24?');

-- Usługi
INSERT INTO faq_items (category_id, question, answer_html, sort_order, is_published)
SELECT c.id, 'Czy oferujecie impregnację ciśnieniową?', '<p>Tak, w zależności od typu materiału i przeznaczenia realizujemy impregnację oraz doradzamy odpowiedni wariant zabezpieczenia drewna.</p>', 10, 1
FROM faq_categories c
WHERE c.slug = 'uslugi'
  AND NOT EXISTS (SELECT 1 FROM faq_items WHERE question = 'Czy oferujecie impregnację ciśnieniową?');

INSERT INTO faq_items (category_id, question, answer_html, sort_order, is_published)
SELECT c.id, 'Ile trwa heblowanie zamówionej partii drewna?', '<p>Czas realizacji zależy od ilości oraz aktualnego obłożenia produkcji. Orientacyjny termin podajemy podczas przyjęcia zamówienia.</p>', 20, 1
FROM faq_categories c
WHERE c.slug = 'uslugi'
  AND NOT EXISTS (SELECT 1 FROM faq_items WHERE question = 'Ile trwa heblowanie zamówionej partii drewna?');

INSERT INTO faq_items (category_id, question, answer_html, sort_order, is_published)
SELECT c.id, 'Czy przecieracie drewno klienta?', '<p>Taką usługę realizujemy po wcześniejszym ustaleniu zakresu prac i parametrów materiału. Skontaktuj się z nami, aby potwierdzić dostępny termin.</p>', 30, 1
FROM faq_categories c
WHERE c.slug = 'uslugi'
  AND NOT EXISTS (SELECT 1 FROM faq_items WHERE question = 'Czy przecieracie drewno klienta?');

INSERT INTO faq_items (category_id, question, answer_html, sort_order, is_published)
SELECT c.id, 'Czy mogę zamówić usługę bez zakupu materiału?', '<p>W części przypadków tak. Zakres usług bez materiału ustalamy indywidualnie na podstawie rodzaju prac oraz dostępności mocy produkcyjnych.</p>', 40, 1
FROM faq_categories c
WHERE c.slug = 'uslugi'
  AND NOT EXISTS (SELECT 1 FROM faq_items WHERE question = 'Czy mogę zamówić usługę bez zakupu materiału?');

-- Zamówienia
INSERT INTO faq_items (category_id, question, answer_html, sort_order, is_published)
SELECT c.id, 'Jak złożyć zamówienie?', '<p>Najprościej telefonicznie lub przez formularz zapytania. Podaj produkt/usługę, ilość, wymiary i termin, a przygotujemy ofertę.</p>', 10, 1
FROM faq_categories c
WHERE c.slug = 'zamowienia'
  AND NOT EXISTS (SELECT 1 FROM faq_items WHERE question = 'Jak złożyć zamówienie?');

INSERT INTO faq_items (category_id, question, answer_html, sort_order, is_published)
SELECT c.id, 'Jak długo trwa realizacja zamówienia?', '<p>Termin zależy od typu asortymentu, ilości i aktualnego obłożenia. Zawsze potwierdzamy realny czas realizacji przed finalizacją.</p>', 20, 1
FROM faq_categories c
WHERE c.slug = 'zamowienia'
  AND NOT EXISTS (SELECT 1 FROM faq_items WHERE question = 'Jak długo trwa realizacja zamówienia?');

INSERT INTO faq_items (category_id, question, answer_html, sort_order, is_published)
SELECT c.id, 'Czy mogę zarezerwować towar przed odbiorem?', '<p>Tak, po potwierdzeniu dostępności i warunków zamówienia możemy zarezerwować materiał do ustalonego terminu odbioru.</p>', 30, 1
FROM faq_categories c
WHERE c.slug = 'zamowienia'
  AND NOT EXISTS (SELECT 1 FROM faq_items WHERE question = 'Czy mogę zarezerwować towar przed odbiorem?');

INSERT INTO faq_items (category_id, question, answer_html, sort_order, is_published)
SELECT c.id, 'Czy realizujecie zamówienia dla firm i osób prywatnych?', '<p>Tak, obsługujemy zarówno klientów indywidualnych, jak i firmy wykonawcze oraz inwestorów.</p>', 40, 1
FROM faq_categories c
WHERE c.slug = 'zamowienia'
  AND NOT EXISTS (SELECT 1 FROM faq_items WHERE question = 'Czy realizujecie zamówienia dla firm i osób prywatnych?');

-- Płatności
INSERT INTO faq_items (category_id, question, answer_html, sort_order, is_published)
SELECT c.id, 'Jakie formy płatności akceptujecie?', '<p>Akceptujemy standardowe formy płatności, w tym gotówkę, przelew oraz płatność kartą. Szczegóły potwierdzamy przy zamówieniu.</p>', 10, 1
FROM faq_categories c
WHERE c.slug = 'platnosci'
  AND NOT EXISTS (SELECT 1 FROM faq_items WHERE question = 'Jakie formy płatności akceptujecie?');

INSERT INTO faq_items (category_id, question, answer_html, sort_order, is_published)
SELECT c.id, 'Czy wystawiacie faktury VAT?', '<p>Tak, wystawiamy faktury VAT dla zamówień firmowych oraz indywidualnych zgodnie z obowiązującymi przepisami.</p>', 20, 1
FROM faq_categories c
WHERE c.slug = 'platnosci'
  AND NOT EXISTS (SELECT 1 FROM faq_items WHERE question = 'Czy wystawiacie faktury VAT?');

INSERT INTO faq_items (category_id, question, answer_html, sort_order, is_published)
SELECT c.id, 'Czy wymagana jest zaliczka przy większym zamówieniu?', '<p>Przy większych zamówieniach możemy wymagać zaliczki. Warunki finansowe ustalamy indywidualnie na etapie oferty.</p>', 30, 1
FROM faq_categories c
WHERE c.slug = 'platnosci'
  AND NOT EXISTS (SELECT 1 FROM faq_items WHERE question = 'Czy wymagana jest zaliczka przy większym zamówieniu?');

INSERT INTO faq_items (category_id, question, answer_html, sort_order, is_published)
SELECT c.id, 'Czy można zapłacić przy odbiorze?', '<p>W wielu przypadkach tak. Sposób płatności przy odbiorze potwierdzamy podczas finalizacji zamówienia.</p>', 40, 1
FROM faq_categories c
WHERE c.slug = 'platnosci'
  AND NOT EXISTS (SELECT 1 FROM faq_items WHERE question = 'Czy można zapłacić przy odbiorze?');

-- Transport
INSERT INTO faq_items (category_id, question, answer_html, sort_order, is_published)
SELECT c.id, 'Gdzie dostarczacie drewno?', '<p>Obsługujemy Ełk i okolice oraz region Warmii i Mazur. Przy większych zamówieniach realizujemy dostawy także do dalszych lokalizacji.</p>', 10, 1
FROM faq_categories c
WHERE c.slug = 'transport'
  AND NOT EXISTS (SELECT 1 FROM faq_items WHERE question = 'Gdzie dostarczacie drewno?');

INSERT INTO faq_items (category_id, question, answer_html, sort_order, is_published)
SELECT c.id, 'Ile kosztuje transport?', '<p>Koszt zależy od odległości, gabarytu i wagi zamówienia. Dokładną wycenę transportu podajemy przy przygotowaniu oferty.</p>', 20, 1
FROM faq_categories c
WHERE c.slug = 'transport'
  AND NOT EXISTS (SELECT 1 FROM faq_items WHERE question = 'Ile kosztuje transport?');

INSERT INTO faq_items (category_id, question, answer_html, sort_order, is_published)
SELECT c.id, 'Jak przygotować się na dostawę?', '<p>Warto zapewnić dojazd dla pojazdu dostawczego oraz miejsce do bezpiecznego rozładunku materiału.</p>', 30, 1
FROM faq_categories c
WHERE c.slug = 'transport'
  AND NOT EXISTS (SELECT 1 FROM faq_items WHERE question = 'Jak przygotować się na dostawę?');

INSERT INTO faq_items (category_id, question, answer_html, sort_order, is_published)
SELECT c.id, 'Czy mogę odebrać zamówienie własnym transportem?', '<p>Tak, możliwy jest odbiór osobisty po wcześniejszym uzgodnieniu terminu i przygotowaniu zamówienia.</p>', 40, 1
FROM faq_categories c
WHERE c.slug = 'transport'
  AND NOT EXISTS (SELECT 1 FROM faq_items WHERE question = 'Czy mogę odebrać zamówienie własnym transportem?');

-- Konserwacja
INSERT INTO faq_items (category_id, question, answer_html, sort_order, is_published)
SELECT c.id, 'Jak konserwować deski elewacyjne?', '<p>Zalecamy regularną kontrolę powłoki ochronnej oraz stosowanie preparatów dostosowanych do gatunku drewna i warunków ekspozycji.</p>', 10, 1
FROM faq_categories c
WHERE c.slug = 'konserwacja'
  AND NOT EXISTS (SELECT 1 FROM faq_items WHERE question = 'Jak konserwować deski elewacyjne?');

INSERT INTO faq_items (category_id, question, answer_html, sort_order, is_published)
SELECT c.id, 'Jak dbać o taras drewniany?', '<p>Taras warto czyścić sezonowo, usuwać zanieczyszczenia i okresowo odnawiać warstwę ochronną zgodnie z zaleceniami producenta preparatu.</p>', 20, 1
FROM faq_categories c
WHERE c.slug = 'konserwacja'
  AND NOT EXISTS (SELECT 1 FROM faq_items WHERE question = 'Jak dbać o taras drewniany?');

INSERT INTO faq_items (category_id, question, answer_html, sort_order, is_published)
SELECT c.id, 'Jak często odnawiać impregnację?', '<p>Częstotliwość zależy od warunków użytkowania i ekspozycji. Najczęściej przegląd wykonuje się co sezon, a odświeżenie powłoki co 1–3 lata.</p>', 30, 1
FROM faq_categories c
WHERE c.slug = 'konserwacja'
  AND NOT EXISTS (SELECT 1 FROM faq_items WHERE question = 'Jak często odnawiać impregnację?');

INSERT INTO faq_items (category_id, question, answer_html, sort_order, is_published)
SELECT c.id, 'Jak przechowywać drewno przed montażem?', '<p>Materiał należy składować na równym podłożu, z przekładkami i osłoną przed opadami, przy zachowaniu wentylacji.</p>', 40, 1
FROM faq_categories c
WHERE c.slug = 'konserwacja'
  AND NOT EXISTS (SELECT 1 FROM faq_items WHERE question = 'Jak przechowywać drewno przed montażem?');
