USE nautiloc;

INSERT INTO types_bateaux (libelle) VALUES
('Voilier'),
('Catamaran'),
('Bateau à moteur'),
('Semi-rigide'),
('Yacht de luxe'),
('Péniche festive');

INSERT INTO ports (nom, ville, description) VALUES
('Le Vieux-Port', 'Marseille', 'Ici, même les poissons portent des Ray-Ban. Le plus célèbre plan d\'eau du sud, entre bouillabaisse et mistral capricieux.'),
('Port Lympia', 'Nice', 'Là où les yachts font la queue pour se faire photographier. La Riviera dans toute sa splendeur dorée.'),
('Port des Minimes', 'La Rochelle', 'Minis les bateaux, maxi le fun. 4 500 anneaux, zéro raison de rester à terre.'),
('Port Vieux', 'Cannes', 'Ancré entre deux tapis rouges. Le port où même les mouettes portent des lunettes de soleil.'),
('Port de la Pointe Rouge', 'Marseille', 'Le pied de départ des calanques. Foncez, les calanques ne vous attendront pas.'),
('Port Deauville', 'Deauville', 'L\'Atlantique version couture. Entre planches, parasols et vagues normandes bien tempérées.'),
('Port de Bonifacio', 'Bonifacio', 'Perché sur ses falaises comme un aigle marin. Eaux turquoise, cap sur la Sardaigne à l\'horizon.'),
('Port de Saint-Florent', 'Saint-Florent', 'La Corse tranquille, sans les touristes du Vieux-Port. Partez avant qu\'ils ne découvrent l\'adresse.');

INSERT INTO formules (code, libelle, duree_heures, masque_creneau, ordre) VALUES
('session_matin',       'Sortie matin',            4,  1, 1),
('session_aprem',       'Sortie après-midi',        4,  2, 2),
('session_nuit',        'Sortie coucher de soleil', 4,  4, 3),
('session_journee',     'Journée complète',         8,  3, 4),
('session_aprem_nuit',  'Aprem + coucher de soleil',8,  6, 5),
('session_journee_nuit','Grand format du jour',     12, 7, 6);

INSERT INTO options (libelle, description, prix) VALUES
('Skipper à bord',        'Un pro du cap pour que vous n\'ayez qu\'à bronzer. Diplômé, souriant, ne se plaint pas du vent.',           80.00),
('Pack famille ahoy',     'Gilets de sauvetage enfants, filets de sécurité et kit premiers secours. Parce que les petits aventuriers méritent de rentrer entiers.', 35.00),
('Glacière garnie',       'Rosé frappé, eaux pétillantes, snacks méditerranéens. La mer c\'est bien, la mer avec ravitaillement c\'est mieux.', 28.00),
('Pack pêche du large',   'Cannes télescopiques, appâts assortis et fierté du pêcheur incluse. Prises non garanties, bonne humeur si.',  42.00),
('Apéro coucher de soleil','Champagne rosé, verrines marines et playlist jazz au crépuscule. Le genre de souvenir qui coûte cher à ne pas prendre.', 68.00),
('Wakeboard & ski nautique','Planche pro, chaussures, gilet impact et moniteur si souhaité. Tomber dans la mer n\'a jamais autant fait rire.', 55.00),
('Kit plongée surface',   'Masques panoramiques, palmes adultes & enfants, bouée signal. La méditerranée vue de dessous vaut le détour.',  24.00),
('Pack drone & caméra',   'Drone stabilisé, GoPro étanche et montage vidéo en souvenir. Vos amis ne vous croiront pas sans preuves.',     72.00),
('Panier pique-nique du pêcheur', 'Charcuterie locale, fromages de Corse ou du Pays Basque, pain artisanal et tapenade. La mer ça creuse.', 45.00),
('Baptême voile',         'Initiation à la barre avec un instructeur certifié. Au bout de 4h, vous ne direz plus jamais "le truc qui tient le mât".', 90.00);

INSERT INTO admins (login, password_hash, nom) VALUES
('admin', '$2y$10$nNwaQVlULemnkavMDlH0SOJL8E6zUHJmE7RAomgSAdlvLBTFVKp.K', 'Capitaine Admin');

INSERT INTO bateaux (nom, slogan, description, photo_url, capacite, permis_requis, familial, skipper_disponible, id_type_bateau, id_port) VALUES
('Moby Trick',        'Le grand blanc du plaisir marin.',    'Inspiré de la célèbre baleine, en nettement moins dangereux. Ce voilier classique file sur les flots avec une élégance toute cétacée. Idéal pour les amoureux du large et des jeux de mots douteux.',                                          'https://images.unsplash.com/photo-1698179486922-762cffd0753e?q=80&w=1400&auto=format&fit=crop', 6,  0, 0, 1, 1, 1),
('Cap ou Pas Cap',    'La question ne se pose plus.',         'Un catamaran taillé pour les indécis qui finissent toujours par larguer les amarres. Double coque, double joie, zéro regret. La mer dit oui.',                                                                                                   'https://images.unsplash.com/photo-1723037706467-18ba6d269666?q=80&w=1400&auto=format&fit=crop', 10, 1, 1, 1, 2, 2),
('Rame Qui Peut',     'La vitesse, c\'est pour les autres.',  'Ne vous fiez pas au nom : ce semi-rigide turbo fait du 45 nœuds avant le café. Parfait pour ceux qui veulent sentir le sel leur claquer le visage à grande vitesse.',                                                                            'https://images.unsplash.com/photo-1776142518956-16499852ce86?q=80&w=1400&auto=format&fit=crop', 8,  1, 0, 1, 4, 3),
('La Belle Excuse',   'Parce qu\'il faut bien une raison.',   'Votre boss a besoin d\'une justification ? "Réunion d\'équipe en mer." Ce yacht discret mais chic transforme chaque session en prétexte parfait. Clim, pont teck, aucune culpabilité.',                                                         'https://images.unsplash.com/photo-1567899378494-47b22a2ae96a?q=80&w=1400&auto=format&fit=crop', 8,  0, 0, 1, 5, 4),
('Flotteur de Gloire', 'Il flotte, donc il navigue.',         'Ce voilier de compétition reconverti en balade a gardé sa toile de régate et perdu son équipage stressé. Performance maritime servie avec le sourire.',                                                                                            'https://images.unsplash.com/photo-1632899806837-400e81b33686?q=80&w=1400&auto=format&fit=crop', 6,  1, 0, 0, 1, 5),
('SOS Bronzette',     'La SNSM ne viendra pas vous sauver du soleil.',  'Catamaran solarium homologué. Deux filets tendus sur l\'eau turquoise, une glacière bien garnie et un horizon à 360°. Urgence relative.',                                                                                             'https://images.unsplash.com/photo-1558268295-a713169178e1?q=80&w=1400&auto=format&fit=crop', 12, 0, 1, 1, 2, 6),
('Hors-Bord du Destin','Le destin, c\'est vous qui le pilotez.','Semi-rigide nerveux pour âmes aventureuses. Saute les vagues, frôle les bouées, fait peur aux méduses. Permis exigé, adrénaline incluse.',                                                                                                     'https://plus.unsplash.com/premium_photo-1664361480696-482b9f44fbec?q=80&w=1400&auto=format&fit=crop', 7,  1, 0, 1, 4, 7),
('Trop Mer pour Toi', 'Jeu de mots certifié, navigation aussi.','Ce bateau à moteur assume totalement son nom. Spacieux, confortable, équipé cuisine. Pour ceux qui veulent épater sans se mouiller les pieds.',                                                                                                   'https://plus.unsplash.com/premium_photo-1661911911426-6082a2ca3c37?q=80&w=1400&auto=format&fit=crop', 9,  0, 1, 1, 3, 8),
('Le Nœud Marin',     'Attache-toi, ça va swinguer.',         'Voilier de croisière solide comme un nœud de chaise. Il a vu des tempêtes, des dauphins et des touristes en bermuda. Il ne juge pas.',                                                                                                          'https://images.unsplash.com/photo-1498623116890-37e912163d5d?q=80&w=1400&auto=format&fit=crop', 6,  1, 0, 1, 1, 1),
('Aqua Poney',        'Ni aquatique, ni équestre. Les deux.',  'Ce catamaran familial a été conçu pour les enfants qui rêvent de sirènes et les adultes qui rêvent de rosé. Filet avant confortable, hilarité garantie au nom.',                                                                                  'https://images.unsplash.com/photo-1599580792927-de3b03c5dc20?q=80&w=1400&auto=format&fit=crop', 11, 0, 1, 1, 2, 2),
('Escale Royale',     'Parce que vous le valez bien.',        'Yacht de luxe avec cockpit cuir, bar intégré et sono qualité studio. Quand quelqu\'un dit "petit budget", ce n\'est pas cette page.',                                                                                                             'https://images.unsplash.com/photo-1562281302-809108fd533c?q=80&w=1400&auto=format&fit=crop', 8,  0, 0, 1, 5, 4),
('Mer-veilleux',      'L\'adjectif, pas le gâteau.',          'Bateau à moteur mid-range qui surclasse ses concurrents à l\'ancre. Accélération franche, stabilité exemplaire, capitaine de bonne humeur si vous prenez l\'option skipper.',                                                                     'https://images.unsplash.com/photo-1635486122232-20ad1842620c?q=80&w=1400&auto=format&fit=crop', 7,  1, 0, 1, 3, 5),
('La Sirène Rebelle', 'Elle n\'attire plus les marins, elle les emmène.', 'Voilier féminin, rapide, caractère affirmé. Ce plan Dufour de 37 pieds vous emmènera aux calanques avant même que vous ayez fini votre premier café à bord.',                                                                       'https://plus.unsplash.com/premium_photo-1721077803568-8deb8dc760ed?q=80&w=1400&auto=format&fit=crop', 6,  1, 0, 1, 1, 5),
('Le Vieux Loup',     'Pas de dents, mais beaucoup de milles.','Ce voilier vintage a plus de récits dans ses membrures qu\'une bibliothèque. Restauré avec amour, il navigue avec sagesse et quelques grincements de trop.',                                                                                   'https://plus.unsplash.com/premium_photo-1664304681328-ad671a906e60?q=80&w=1400&auto=format&fit=crop', 5,  1, 0, 0, 1, 6),
('Bienvenue à Bord',  'Le titre du film de votre vie.',       'Semi-rigide convivial parfait pour les sorties entre amis. Assez rapide pour être fun, assez stable pour manger des chips dedans. Le polyvalent sans complexe.',                                                                                  'https://images.unsplash.com/photo-1635776033909-ffa6a9b19ab6?q=80&w=1400&auto=format&fit=crop', 8,  1, 0, 1, 4, 7),
('Paréo & Mojito',    'Le dress code est dans le nom.',       'Catamaran festif conçu pour transformer n\'importe quel mardi en samedi soir. Pont avant en teck, enceintes Bluetooth, bimini grand luxe. Venir en short, rentrer en légende.',                                                                  'https://plus.unsplash.com/premium_photo-1710276817782-72e8b913ee26?q=80&w=1400&auto=format&fit=crop', 12, 0, 1, 1, 2, 8),
('Permis de Rêver',   'Permis exigé. Le rêve, offert.',       'Bateau à moteur puissant pour pilotes confirmés. Lignes sportives, cockpit ergonomique, accélération qui coupe le souffle et la conversation.',                                                                                                   'https://images.unsplash.com/photo-1727379899259-81ec81876551?q=80&w=1400&auto=format&fit=crop', 6,  1, 0, 1, 3, 3),
('L\'Insouciant',     'Le nom dit tout.',                     'Voilier de plaisance sans prise de tête. Voiles faciles à manier, cockpit spacieux, ambiance bord-de-mer sans drama. Idéal pour les novices accompagnés d\'un skipper aussi détendu que le nom.',                                               'https://images.unsplash.com/photo-1503634192480-e77a6436f075?q=80&w=1400&auto=format&fit=crop', 6,  0, 0, 1, 1, 1),
('Grand Bleu Junior', 'Le mythe, version accessible.',        'Hommage officieux au chef-d\'œuvre de Besson. Ce semi-rigide vous approchera des grottes sous-marines de Bonifacio aussi près que la prudence le permet.',                                                                                        'https://images.unsplash.com/photo-1613993854053-151c103d3fb6?q=80&w=1400&auto=format&fit=crop', 9,  1, 0, 1, 4, 7),
('Farniente Forever', 'L\'oisiveté comme art de vivre.',      'Yacht de luxe conçu pour ne rien faire avec style. Chaises longues en teck, bain de soleil arrière, frigo à champagne. Pour ceux qui travaillent dur à ne rien faire.',                                                                         'https://plus.unsplash.com/premium_photo-1680831748191-d726a2f7b201?q=80&w=1400&auto=format&fit=crop', 8,  0, 0, 1, 5, 2),
('La Bonne Vague',    'Surfez-la avant qu\'elle disparaisse.','Catamaran rapide et moderne avec foils de stabilisation. Glisse sur l\'eau comme une rumeur bien placée. Idéal pour les amateurs de sensations douces mais réelles.',                                                                             'https://images.unsplash.com/photo-1581271164789-7c97932822d3?q=80&w=1400&auto=format&fit=crop', 10, 1, 1, 1, 2, 3),
('Pas Vu Pas Pris',   'Radar désactivé. Fiscalité maritime incluse.', 'Nom suggestif, bateau parfaitement légal. Ce bateau à moteur discret est idéal pour les balades matinales quand la mer est encore vide et les mouettes pas encore énervées.',                                                          'https://images.unsplash.com/photo-1709821483772-fca9426025b1?q=80&w=1400&auto=format&fit=crop', 7,  1, 0, 0, 3, 4),
('Alizé Capricieuse', 'Elle souffle quand elle veut.',        'Voilier nerveux qui répond à chaque brise avec enthousiasme. Parfait pour les marins qui aiment quand ça bouge un peu et les vêtements sèchent vite.',                                                                                           'https://images.unsplash.com/photo-1540946485063-a40da27545f8?q=80&w=1400&auto=format&fit=crop', 5,  1, 0, 1, 1, 8),
('La Péniche du Phare','Quand la fête rencontre le large.',   'Péniche festive reconvertie en bateau d\'excursion. Scène DJ, bar panoramique, lumières LED. Pour des anniversaires, enterrements de vie de garçon ou simples mercredis transformés en festival.',                                              'https://images.unsplash.com/photo-1618764268189-a6d3f1a8872f?q=80&w=1400&auto=format&fit=crop', 20, 0, 1, 1, 6, 6),
('Nuit Blanche en Mer','Dormir peu, naviguer beaucoup.',      'Catamaran de croisière équipé pour les sorties nuit. Cabines doubles, éclairage de cockpit, GPS de nuit. Pour ceux qui pensent que les étoiles méritent un meilleur point de vue.',                                                             'https://plus.unsplash.com/premium_photo-1680831748352-3a6f45a3468e?q=80&w=1400&auto=format&fit=crop', 8,  1, 0, 1, 2, 7);

INSERT INTO tarifs (id_bateau, id_formule, prix)
SELECT b.id_bateau, f.id_formule,
    ROUND(
        CASE f.code
            WHEN 'session_matin'       THEN 80  + (b.capacite * 12) + (b.permis_requis * 20) + ((b.id_type_bateau = 5) * 60)
            WHEN 'session_aprem'       THEN 90  + (b.capacite * 13) + (b.permis_requis * 20) + ((b.id_type_bateau = 5) * 60)
            WHEN 'session_nuit'        THEN 110 + (b.capacite * 15) + (b.permis_requis * 25) + ((b.id_type_bateau = 5) * 80)
            WHEN 'session_journee'     THEN 180 + (b.capacite * 22) + (b.permis_requis * 35) + ((b.id_type_bateau = 5) * 120)
            WHEN 'session_aprem_nuit'  THEN 220 + (b.capacite * 26) + (b.permis_requis * 40) + ((b.id_type_bateau = 5) * 140)
            ELSE                            270 + (b.capacite * 32) + (b.permis_requis * 50) + ((b.id_type_bateau = 5) * 180)
        END / 5
    ) * 5 AS prix
FROM bateaux b
CROSS JOIN formules f;

INSERT INTO clients (prenom, nom, email, telephone, password_hash, blackliste, created_at)
SELECT
    ELT(((n-1) % 60)+1,
        'Lina','Noah','Emma','Jules','Camille','Léo','Nina','Arthur','Manon','Yanis',
        'Sofia','Théo','Jade','Lucas','Inès','Raphaël','Chloé','Antoine','Lucie','Maxime',
        'Alice','Hugo','Zoé','Gabin','Louise','Ethan','Mila','Oscar','Anna','Nolan',
        'Clara','Maël','Sarah','Tom','Léna','Bastien','Eva','Mathis','Iris','Sacha',
        'Romy','Enzo','Agathe','Paul','Jeanne','Noé','Lola','Baptiste','Ambre','Nathan',
        'Julia','Axel','Rose','Timéo','Margaux','Eliott','Ava','Robin','Elise','Malo') AS prenom,
    ELT(((n-1) % 60)+1,
        'Morel','Rivière','Martin','Boyer','Leroux','Perrin','Marchand','Leclerc','Durand','Masson',
        'Fontaine','Girard','Bonnet','Dupont','Lambert','François','Martinez','Bernard','Petit','Robert',
        'Garnier','Rousseau','Blanc','Gauthier','Chevalier','Muller','Henry','Roussel','Nicolas','Lemoine',
        'Guerin','Schmitt','Colin','Vidal','Renard','Aubert','Barbier','Faure','Roy','Dumas',
        'Lacroix','Olivier','Andre','Mercier','Dupuis','Brun','Perrot','Caron','Picard','Roger',
        'Meunier','Gaillard','Arnaud','Legrand','Pons','Bertin','Rey','Charpentier','Boulanger','Prevost') AS nom,
    LOWER(CONCAT(
        ELT(((n-1) % 60)+1,
            'lina','noah','emma','jules','camille','leo','nina','arthur','manon','yanis',
            'sofia','theo','jade','lucas','ines','raphael','chloe','antoine','lucie','maxime',
            'alice','hugo','zoe','gabin','louise','ethan','mila','oscar','anna','nolan',
            'clara','mael','sarah','tom','lena','bastien','eva','mathis','iris','sacha',
            'romy','enzo','agathe','paul','jeanne','noe','lola','baptiste','ambre','nathan',
            'julia','axel','rose','timeo','margaux','eliott','ava','robin','elise','malo'),
        '.',
        ELT(((n-1) % 60)+1,
            'morel','riviere','martin','boyer','leroux','perrin','marchand','leclerc','durand','masson',
            'fontaine','girard','bonnet','dupont','lambert','francois','martinez','bernard','petit','robert',
            'garnier','rousseau','blanc','gauthier','chevalier','muller','henry','roussel','nicolas','lemoine',
            'guerin','schmitt','colin','vidal','renard','aubert','barbier','faure','roy','dumas',
            'lacroix','olivier','andre','mercier','dupuis','brun','perrot','caron','picard','roger',
            'meunier','gaillard','arnaud','legrand','pons','bertin','rey','charpentier','boulanger','prevost'),
        n, '@nautimail.fr')) AS email,
    CONCAT('0', ELT((n % 3)+1,'6','7','6'), LPAD((10000000 + n * 313) % 100000000, 8, '0')) AS telephone,
    '$2y$10$3ZTr7.RwMgnXNGhVMjx8DuiUYxjttvOGcwI4m6z.I6KcW/3B/Scem' AS password_hash,
    IF(n IN (5, 23, 41, 67, 79), 1, 0) AS blackliste,
    DATE_SUB(NOW(), INTERVAL FLOOR(10 + (n * 7 % 350)) DAY) AS created_at
FROM (
    SELECT ones.n + tens.n * 10 + 1 AS n
    FROM (SELECT 0 n UNION SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4
          UNION SELECT 5 UNION SELECT 6 UNION SELECT 7 UNION SELECT 8 UNION SELECT 9) ones
    CROSS JOIN (SELECT 0 n UNION SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4
                UNION SELECT 5 UNION SELECT 6 UNION SELECT 7 UNION SELECT 8) tens
    WHERE ones.n + tens.n * 10 + 1 <= 90
) seq_clients;

INSERT INTO reservations (numero, id_client, id_bateau, id_formule, date_depart, nb_personnes, prix_base, statut, note_admin, created_at)
SELECT
    CONCAT('NAV-', YEAR(CURDATE()), '-', LPAD(n, 5, '0')) AS numero,
    ((n - 1) % 90) + 1 AS id_client,
    ((n - 1) % 25) + 1 AS id_bateau,
    ((n - 1) % 6)  + 1 AS id_formule,
    CASE
        WHEN n <= 80  THEN DATE_ADD(CURDATE(), INTERVAL (n % 60) - 20 DAY)
        WHEN n <= 160 THEN DATE_ADD(CURDATE(), INTERVAL 30 + (n % 90) DAY)
        ELSE               DATE_ADD(CURDATE(), INTERVAL 120 + (n % 150) DAY)
    END AS date_depart,
    1 + (n % 9) AS nb_personnes,
    (SELECT t.prix FROM tarifs t WHERE t.id_bateau = ((n-1) % 25)+1 AND t.id_formule = ((n-1) % 6)+1 LIMIT 1) AS prix_base,
    CASE
        WHEN n % 11 = 0 THEN 'annulee'
        WHEN n % 8  = 0 THEN 'remboursee'
        WHEN n % 4  = 0 THEN 'en_attente'
        ELSE                 'confirmee'
    END AS statut,
    ELT((n % 8)+1,
        NULL, NULL, NULL, NULL, NULL,
        'Client VIP — soigner l\'accueil',
        'Allergie aux fruits de mer signalée',
        'Anniversaire à bord — prévoir décoration') AS note_admin,
    DATE_SUB(NOW(), INTERVAL FLOOR(5 + n * 0.6) DAY) AS created_at
FROM (
    SELECT ones.n + tens.n * 10 + hundreds.n * 100 + 1 AS n
    FROM (SELECT 0 n UNION SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4
          UNION SELECT 5 UNION SELECT 6 UNION SELECT 7 UNION SELECT 8 UNION SELECT 9) ones
    CROSS JOIN (SELECT 0 n UNION SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4
                UNION SELECT 5 UNION SELECT 6 UNION SELECT 7 UNION SELECT 8 UNION SELECT 9) tens
    CROSS JOIN (SELECT 0 n UNION SELECT 1 UNION SELECT 2) hundreds
    WHERE ones.n + tens.n * 10 + hundreds.n * 100 + 1 <= 240
) seq_resa;

INSERT INTO reservations_options (id_reservation, id_option, prix_unitaire)
SELECT r.id_reservation, o.id_option, o.prix
FROM reservations r
JOIN options o ON o.id_option = ((r.id_reservation - 1) % 10) + 1
WHERE r.id_reservation % 2 = 0;

INSERT INTO reservations_options (id_reservation, id_option, prix_unitaire)
SELECT r.id_reservation, o.id_option, o.prix
FROM reservations r
JOIN options o ON o.id_option = ((r.id_reservation + 4) % 10) + 1
WHERE r.id_reservation % 3 = 0
ON DUPLICATE KEY UPDATE prix_unitaire = VALUES(prix_unitaire);

INSERT INTO remboursements (id_reservation, montant, motif, note_admin, created_at)
SELECT r.id_reservation,
    ROUND(r.prix_base * ELT((r.id_reservation % 4)+1, 0.25, 0.50, 0.75, 1.00), 2),
    ELT((r.id_reservation % 5)+1,
        'Météo défavorable — force 7 annoncée',
        'Demande annulation client sous 48h',
        'Panne mécanique signalée avant départ',
        'Double réservation — remboursement partiel',
        'Geste commercial suite à retard pontons'),
    ELT((r.id_reservation % 3)+1,
        'Remboursement validé direction',
        'Avoir envoyé par email au client',
        NULL),
    DATE_ADD(r.created_at, INTERVAL 1 + (r.id_reservation % 5) DAY)
FROM reservations r
WHERE r.statut = 'remboursee';
