-- Export des triggers de la base `jobplut618`
-- Date : 2026-03-14 02:33:26

DELIMITER ;;
CREATE TRIGGER `appli_hardskills_recruiters_bu` BEFORE UPDATE ON `appli_hardskills_recruiters` FOR EACH ROW BEGIN
    -- Déclaration des variables de traduction
    DECLARE v_jobtitle_en_lookup VARCHAR(255) DEFAULT NULL;
    DECLARE v_jobtitle_fr_lookup VARCHAR(255) DEFAULT NULL;
    
    -- Gestionnaire d'erreur : Si la requête ne trouve rien, les variables restent NULL
    DECLARE CONTINUE HANDLER FOR NOT FOUND SET v_jobtitle_en_lookup = NULL, v_jobtitle_fr_lookup = NULL; 

    -- Initialisation des colonnes de traduction avec la valeur saisie (sécurité par défaut)
    SET NEW.jobtitle_FR = NEW.jobtitle;
    SET NEW.jobtitle_EN = NEW.jobtitle;

    -- *** DÉBUT LOGIQUE DE TRADUCTION ***

    -- Cas 1 : La langue saisie est le français (FR)
    IF NEW.lg_iso2 = 'FR' THEN
        
        -- Recherche de l'équivalent EN
        SELECT jobtitle_EN
        INTO v_jobtitle_en_lookup
        FROM appli_vw_jobtitle_EN_FR
        WHERE jobtitle_FR = NEW.jobtitle
        LIMIT 1;

        -- Mise à jour de la colonne EN si une traduction est trouvée
        SET NEW.jobtitle_EN = COALESCE(v_jobtitle_en_lookup, NEW.jobtitle);

    -- Cas 2 : La langue saisie est l'anglais (EN)
    ELSEIF NEW.lg_iso2 = 'EN' THEN
        
        -- Recherche de l'équivalent FR
        SELECT jobtitle_FR
        INTO v_jobtitle_fr_lookup
        FROM appli_vw_jobtitle_EN_FR
        WHERE jobtitle_EN = NEW.jobtitle 
        LIMIT 1;

        -- Mise à jour de la colonne FR si une traduction est trouvée
        SET NEW.jobtitle_FR = COALESCE(v_jobtitle_fr_lookup, NEW.jobtitle);
        
        -- NEW.jobtitle_EN conserve la valeur saisie (déjà fait par l'initialisation)

    -- Cas 3 (ELSE) : Toute autre langue (lg_iso2 est NULL ou autre)
    -- Les colonnes NEW.jobtitle_FR et NEW.jobtitle_EN conservent la valeur saisie
    -- grâce à l'initialisation faite au début. Pas besoin de code supplémentaire ici.
    
    END IF; -- Cette ligne est CRUCIALE et doit être présente.

    -- NEW.jobtitle conserve la valeur d'entrée.

END;;
DELIMITER ;


DELIMITER ;;
CREATE TRIGGER `trg_calc_amount_recruiters_insert` BEFORE INSERT ON `appli_pay_recruiters` FOR EACH ROW BEGIN
    IF NEW.period = 'daily' THEN
        SET NEW.calc_amount = NEW.salary * 20;
    ELSEIF NEW.period = 'weekly' THEN
        SET NEW.calc_amount = NEW.salary * 4;
    ELSEIF NEW.period = 'hourly' THEN
        SET NEW.calc_amount = NEW.salary * 160;
    ELSEIF NEW.period = 'yearly' THEN
        SET NEW.calc_amount = NEW.salary / 12;
    ELSE
        SET NEW.calc_amount = NEW.salary;
    END IF;
END;;
DELIMITER ;


DELIMITER ;;
CREATE TRIGGER `trg_calc_amount_recruiters_update` BEFORE UPDATE ON `appli_pay_recruiters` FOR EACH ROW BEGIN
    IF NEW.period = 'daily' THEN
        SET NEW.calc_amount = NEW.salary * 20;
    ELSEIF NEW.period = 'weekly' THEN
        SET NEW.calc_amount = NEW.salary * 4;
    ELSEIF NEW.period = 'hourly' THEN
        SET NEW.calc_amount = NEW.salary * 160;
    ELSEIF NEW.period = 'yearly' THEN
        SET NEW.calc_amount = NEW.salary / 12;
    ELSE
        SET NEW.calc_amount = NEW.salary;
    END IF;
END;;
DELIMITER ;


DELIMITER ;;
CREATE TRIGGER `trg_calc_amount_seekers_insert` BEFORE INSERT ON `appli_pay_seekers` FOR EACH ROW BEGIN
    IF NEW.period = 'daily' THEN
        SET NEW.calc_amount = NEW.salary * 20;
    ELSEIF NEW.period = 'weekly' THEN
        SET NEW.calc_amount = NEW.salary * 4;
    ELSEIF NEW.period = 'hourly' THEN
        SET NEW.calc_amount = NEW.salary * 160;
    ELSEIF NEW.period = 'yearly' THEN
        SET NEW.calc_amount = NEW.salary / 12;
    ELSE
        SET NEW.calc_amount = NEW.salary;
    END IF;
END;;
DELIMITER ;


DELIMITER ;;
CREATE TRIGGER `trg_calc_amount_seekers_update` BEFORE UPDATE ON `appli_pay_seekers` FOR EACH ROW BEGIN
    IF NEW.period = 'daily' THEN
        SET NEW.calc_amount = NEW.salary * 20;
    ELSEIF NEW.period = 'weekly' THEN
        SET NEW.calc_amount = NEW.salary * 4;
    ELSEIF NEW.period = 'hourly' THEN
        SET NEW.calc_amount = NEW.salary * 160;
    ELSEIF NEW.period = 'yearly' THEN
        SET NEW.calc_amount = NEW.salary / 12;
    ELSE
        SET NEW.calc_amount = NEW.salary;
    END IF;
END;;
DELIMITER ;


DELIMITER ;;
CREATE TRIGGER `appli_recru_empl_apply_bi` BEFORE INSERT ON `appli_recru_empl_apply` FOR EACH ROW BEGIN
  -- Déclaration de la variable locale pour stocker le résultat de la recherche EN
  DECLARE v_jobtitle_en_lookup VARCHAR(255) DEFAULT NULL;
  
  -- Gestionnaire d'erreur : Si la requête ne trouve rien, la variable reste NULL et le trigger continue.
  DECLARE CONTINUE HANDLER FOR NOT FOUND SET v_jobtitle_en_lookup = NULL; 

  -- Cas 1 : Si la langue est française (FR)
  -- On utilise NEW.jobtitle (valeur FR) pour chercher l'équivalent EN dans la vue.
  IF NEW.lg_iso2 = 'FR' THEN
    
    -- Recherche de l'équivalent EN
    SELECT jobtitle_EN
    INTO v_jobtitle_en_lookup
    FROM appli_vw_jobtitle_EN_FR
    WHERE jobtitle_FR = NEW.jobtitle
    LIMIT 1;

    -- Si une traduction a été trouvée
    IF v_jobtitle_en_lookup IS NOT NULL THEN
      -- On met l'équivalent EN dans la colonne cible
      SET NEW.jobtitle_en = v_jobtitle_en_lookup;
    ELSE
      -- Si aucune traduction n'est trouvée, on utilise la valeur saisie (FR) par défaut dans jobtitle_en
      SET NEW.jobtitle_en = NEW.jobtitle; 
    END IF;

  -- Cas 2 : Si la langue est anglaise (EN) ou toute autre langue
  -- On met simplement la valeur saisie dans jobtitle_en.
  ELSE 
    -- On s'assure que la colonne cible jobtitle_en est bien renseignée avec la valeur d'entrée
    SET NEW.jobtitle_en = NEW.jobtitle;
    
  END IF;
  
END;;
DELIMITER ;


DELIMITER ;;
CREATE TRIGGER `appli_recru_empl_apply_bu` BEFORE UPDATE ON `appli_recru_empl_apply` FOR EACH ROW BEGIN
  -- Déclaration de la variable locale pour stocker le résultat de la recherche EN
  DECLARE v_jobtitle_en_lookup VARCHAR(255) DEFAULT NULL;
  
  -- Gestionnaire d'erreur : Si la requête ne trouve rien, la variable reste NULL et le trigger continue.
  DECLARE CONTINUE HANDLER FOR NOT FOUND SET v_jobtitle_en_lookup = NULL; 

  -- Cas 1 : Si la langue est française (FR)
  -- On utilise NEW.jobtitle (valeur FR) pour chercher l'équivalent EN dans la vue.
  IF NEW.lg_iso2 = 'FR' THEN
    
    -- Recherche de l'équivalent EN
    SELECT jobtitle_EN
    INTO v_jobtitle_en_lookup
    FROM appli_vw_jobtitle_EN_FR
    WHERE jobtitle_FR = NEW.jobtitle
    LIMIT 1;

    -- Si une traduction a été trouvée
    IF v_jobtitle_en_lookup IS NOT NULL THEN
      -- On met l'équivalent EN dans la colonne cible
      SET NEW.jobtitle_en = v_jobtitle_en_lookup;
    ELSE
      -- Si aucune traduction n'est trouvée, on utilise la valeur saisie (FR) par défaut dans jobtitle_en
      SET NEW.jobtitle_en = NEW.jobtitle; 
    END IF;

  -- Cas 2 : Si la langue est anglaise (EN) ou toute autre langue
  -- On met simplement la valeur saisie dans jobtitle_en.
  ELSE 
    -- On s'assure que la colonne cible jobtitle_en est bien renseignée avec la valeur d'entrée
    SET NEW.jobtitle_en = NEW.jobtitle;
    
  END IF;
  
END;;
DELIMITER ;


DELIMITER ;;
CREATE TRIGGER `appli_softskills_recruiters_bu` BEFORE UPDATE ON `appli_softskills_recruiters` FOR EACH ROW BEGIN
    -- Déclaration des variables de traduction
    DECLARE v_jobtitle_en_lookup VARCHAR(255) DEFAULT NULL;
    DECLARE v_jobtitle_fr_lookup VARCHAR(255) DEFAULT NULL;
    
    -- Gestionnaire d'erreur : Si la requête ne trouve rien, les variables restent NULL
    DECLARE CONTINUE HANDLER FOR NOT FOUND SET v_jobtitle_en_lookup = NULL, v_jobtitle_fr_lookup = NULL; 

    -- Initialisation des colonnes de traduction avec la valeur saisie (sécurité par défaut)
    SET NEW.jobtitle_FR = NEW.jobtitle;
    SET NEW.jobtitle_EN = NEW.jobtitle;

    -- *** DÉBUT LOGIQUE DE TRADUCTION ***

    -- Cas 1 : La langue saisie est le français (FR)
    IF NEW.lg_iso2 = 'FR' THEN
        
        -- Recherche de l'équivalent EN
        SELECT jobtitle_EN
        INTO v_jobtitle_en_lookup
        FROM appli_vw_jobtitle_EN_FR
        WHERE jobtitle_FR = NEW.jobtitle
        LIMIT 1;

        -- Mise à jour de la colonne EN si une traduction est trouvée
        SET NEW.jobtitle_EN = COALESCE(v_jobtitle_en_lookup, NEW.jobtitle);

    -- Cas 2 : La langue saisie est l'anglais (EN)
    ELSEIF NEW.lg_iso2 = 'EN' THEN
        
        -- Recherche de l'équivalent FR
        SELECT jobtitle_FR
        INTO v_jobtitle_fr_lookup
        FROM appli_vw_jobtitle_EN_FR
        WHERE jobtitle_EN = NEW.jobtitle 
        LIMIT 1;

        -- Mise à jour de la colonne FR si une traduction est trouvée
        SET NEW.jobtitle_FR = COALESCE(v_jobtitle_fr_lookup, NEW.jobtitle);
        
        -- NEW.jobtitle_EN conserve la valeur saisie (déjà fait par l'initialisation)

    -- Cas 3 (ELSE) : Toute autre langue (lg_iso2 est NULL ou autre)
    -- Les colonnes NEW.jobtitle_FR et NEW.jobtitle_EN conservent la valeur saisie
    -- grâce à l'initialisation faite au début. Pas besoin de code supplémentaire ici.
    
    END IF; -- Cette ligne est CRUCIALE et doit être présente.

    -- NEW.jobtitle conserve la valeur d'entrée.

END;;
DELIMITER ;


DELIMITER ;;
CREATE TRIGGER `appli_year_recruiters_bi` BEFORE INSERT ON `appli_year_recruiters` FOR EACH ROW BEGIN
  -- Déclaration de la variable locale pour stocker le résultat de la recherche EN
  DECLARE v_jobtitle_en_lookup VARCHAR(255) DEFAULT NULL;
  
  -- Gestionnaire d'erreur : Si la requête ne trouve rien, la variable reste NULL et le trigger continue.
  DECLARE CONTINUE HANDLER FOR NOT FOUND SET v_jobtitle_en_lookup = NULL; 

  -- Cas 1 : Si la langue est française (FR)
  -- On utilise NEW.jobtitle (valeur FR) pour chercher l'équivalent EN dans la vue.
  IF NEW.lg_iso2 = 'FR' THEN
    
    -- Recherche de l'équivalent EN
    SELECT jobtitle_EN
    INTO v_jobtitle_en_lookup
    FROM appli_vw_jobtitle_EN_FR
    WHERE jobtitle_FR = NEW.jobtitle
    LIMIT 1;

    -- Si une traduction a été trouvée
    IF v_jobtitle_en_lookup IS NOT NULL THEN
      -- On met l'équivalent EN dans la colonne cible
      SET NEW.jobtitle_en = v_jobtitle_en_lookup;
    ELSE
      -- Si aucune traduction n'est trouvée, on utilise la valeur saisie (FR) par défaut dans jobtitle_en
      SET NEW.jobtitle_en = NEW.jobtitle; 
    END IF;

  -- Cas 2 : Si la langue est anglaise (EN) ou toute autre langue
  -- On met simplement la valeur saisie dans jobtitle_en.
  ELSE 
    -- On s'assure que la colonne cible jobtitle_en est bien renseignée avec la valeur d'entrée
    SET NEW.jobtitle_en = NEW.jobtitle;
    
  END IF;
  
END;;
DELIMITER ;


DELIMITER ;;
CREATE TRIGGER `appli_year_recruiters_bu` BEFORE UPDATE ON `appli_year_recruiters` FOR EACH ROW BEGIN
  -- Déclaration de la variable locale pour stocker le résultat de la recherche EN
  DECLARE v_jobtitle_en_lookup VARCHAR(255) DEFAULT NULL;
  
  -- Gestionnaire d'erreur : Si la requête ne trouve rien, la variable reste NULL et le trigger continue.
  DECLARE CONTINUE HANDLER FOR NOT FOUND SET v_jobtitle_en_lookup = NULL; 

  -- Cas 1 : Si la langue est française (FR)
  -- On utilise NEW.jobtitle (valeur FR) pour chercher l'équivalent EN dans la vue.
  IF NEW.lg_iso2 = 'FR' THEN
    
    -- Recherche de l'équivalent EN
    SELECT jobtitle_EN
    INTO v_jobtitle_en_lookup
    FROM appli_vw_jobtitle_EN_FR
    WHERE jobtitle_FR = NEW.jobtitle
    LIMIT 1;

    -- Si une traduction a été trouvée
    IF v_jobtitle_en_lookup IS NOT NULL THEN
      -- On met l'équivalent EN dans la colonne cible
      SET NEW.jobtitle_en = v_jobtitle_en_lookup;
    ELSE
      -- Si aucune traduction n'est trouvée, on utilise la valeur saisie (FR) par défaut dans jobtitle_en
      SET NEW.jobtitle_en = NEW.jobtitle; 
    END IF;

  -- Cas 2 : Si la langue est anglaise (EN) ou toute autre langue
  -- On met simplement la valeur saisie dans jobtitle_en.
  ELSE 
    -- On s'assure que la colonne cible jobtitle_en est bien renseignée avec la valeur d'entrée
    SET NEW.jobtitle_en = NEW.jobtitle;
    
  END IF;
  
END;;
DELIMITER ;


