--
-- START / TI#645 — Dossiers liés : bootstrap
--

-- Ensemble statique des valeurs possibles pour la colonne lien_dossier_dossier.type_lien
CREATE TYPE lien_dossier_dossier_type_lien AS ENUM ('manuel', 'auto_recours');

-- Table
CREATE TABLE lien_dossier_dossier (
    lien_dossier_dossier integer NOT NULL,
    dossier_src character varying(30) NOT NULL,
    dossier_cible character varying(30) NOT NULL,
    type_lien lien_dossier_dossier_type_lien NOT NULL
);
-- Séquence
CREATE SEQUENCE lien_dossier_dossier_seq
    START WITH 1
    INCREMENT BY 1
    NO MINVALUE
    NO MAXVALUE
    CACHE 1;
ALTER SEQUENCE lien_dossier_dossier_seq
  OWNED BY lien_dossier_dossier.lien_dossier_dossier;
-- Contraintes
ALTER TABLE ONLY lien_dossier_dossier
    ADD CONSTRAINT lien_dossier_dossier_pkey PRIMARY KEY (lien_dossier_dossier);
ALTER TABLE ONLY lien_dossier_dossier
    ADD CONSTRAINT lien_dossier_dossier_dossier_autorisation_dossier_src_fk FOREIGN KEY (dossier_src) REFERENCES dossier(dossier);
ALTER TABLE ONLY lien_dossier_dossier
    ADD CONSTRAINT lien_dossier_dossier_dossier_cible_fk FOREIGN KEY (dossier_cible) REFERENCES dossier(dossier);
ALTER TABLE ONLY lien_dossier_dossier
    ADD CONSTRAINT lien_dossier_dossier_dossier_src_dossier_cible_key UNIQUE (dossier_src, dossier_cible);
-- Commentaires
COMMENT ON TABLE lien_dossier_dossier IS 'Table de liaison entre les dossiers d''instruction';
COMMENT ON COLUMN lien_dossier_dossier.lien_dossier_dossier IS 'Identifiant unique';
COMMENT ON COLUMN lien_dossier_dossier.dossier_src IS 'Dossier d''instruction source de la liaison, c''est sur celui-ci que les dossiers d''instruction cibles seront affichés';
COMMENT ON COLUMN lien_dossier_dossier.dossier_cible IS 'Dossier d''instruction cible de la liaison, les dossiers d''instruction cibles n''ont pas les DI source sur leur tableau de laison';
COMMENT ON COLUMN lien_dossier_dossier.type_lien IS 'Statique : manuel / auto_recours';

--
-- END / TI#645 — Dossiers liés : bootstrap
--

--
-- START / #647 — Dossiers liés : interfaces 
--

INSERT INTO om_droit (om_droit, libelle, om_profil)
SELECT nextval('om_droit_seq'),'lien_dossier_dossier_gestion_defaut',(SELECT om_profil FROM om_profil WHERE libelle = 'CHEF DE SERVICE')
WHERE
    NOT EXISTS (
        SELECT om_droit FROM om_droit WHERE libelle = 'lien_dossier_dossier_gestion_defaut' AND om_profil = (SELECT om_profil FROM om_profil WHERE libelle = 'CHEF DE SERVICE')
    );

INSERT INTO om_droit (om_droit, libelle, om_profil)
SELECT nextval('om_droit_seq'),'lien_dossier_dossier_gestion_defaut',(SELECT om_profil FROM om_profil WHERE libelle = 'DIVISIONNAIRE')
WHERE
    NOT EXISTS (
        SELECT om_droit FROM om_droit WHERE libelle = 'lien_dossier_dossier_gestion_defaut' AND om_profil = (SELECT om_profil FROM om_profil WHERE libelle = 'DIVISIONNAIRE')
    );

INSERT INTO om_droit (om_droit, libelle, om_profil)
SELECT nextval('om_droit_seq'),'lien_dossier_dossier_gestion_defaut',(SELECT om_profil FROM om_profil WHERE libelle = 'INSTRUCTEUR')
WHERE
    NOT EXISTS (
        SELECT om_droit FROM om_droit WHERE libelle = 'lien_dossier_dossier_gestion_defaut' AND om_profil = (SELECT om_profil FROM om_profil WHERE libelle = 'INSTRUCTEUR')
    );

INSERT INTO om_droit (om_droit, libelle, om_profil)
SELECT nextval('om_droit_seq'),'lien_dossier_dossier_gestion_defaut',(SELECT om_profil FROM om_profil WHERE libelle = 'INSTRUCTEUR SERVICE')
WHERE
    NOT EXISTS (
        SELECT om_droit FROM om_droit WHERE libelle = 'lien_dossier_dossier_gestion_defaut' AND om_profil = (SELECT om_profil FROM om_profil WHERE libelle = 'INSTRUCTEUR SERVICE')
    );

INSERT INTO om_droit (om_droit, libelle, om_profil)
SELECT nextval('om_droit_seq'),'lien_dossier_dossier_gestion_defaut',(SELECT om_profil FROM om_profil WHERE libelle = 'INSTRUCTEUR POLYVALENT')
WHERE
    NOT EXISTS (
        SELECT om_droit FROM om_droit WHERE libelle = 'lien_dossier_dossier_gestion_defaut' AND om_profil = (SELECT om_profil FROM om_profil WHERE libelle = 'INSTRUCTEUR POLYVALENT')
    );

INSERT INTO om_droit (om_droit, libelle, om_profil)
SELECT nextval('om_droit_seq'),'lien_dossier_dossier_gestion_defaut',(SELECT om_profil FROM om_profil WHERE libelle = 'INSTRUCTEUR POLYVALENT COMMUNE')
WHERE
    NOT EXISTS (
        SELECT om_droit FROM om_droit WHERE libelle = 'lien_dossier_dossier_gestion_defaut' AND om_profil = (SELECT om_profil FROM om_profil WHERE libelle = 'INSTRUCTEUR POLYVALENT COMMUNE')
    );

INSERT INTO om_droit (om_droit, libelle, om_profil)
SELECT nextval('om_droit_seq'),'lien_dossier_dossier_gestion_defaut',(SELECT om_profil FROM om_profil WHERE libelle = 'QUALIFICATEUR')
WHERE
    NOT EXISTS (
        SELECT om_droit FROM om_droit WHERE libelle = 'lien_dossier_dossier_gestion_defaut' AND om_profil = (SELECT om_profil FROM om_profil WHERE libelle = 'QUALIFICATEUR')
    );

INSERT INTO om_droit (om_droit, libelle, om_profil)
SELECT nextval('om_droit_seq'),'dossier_instruction_supprimer_liaison',(SELECT om_profil FROM om_profil WHERE libelle = 'CHEF DE SERVICE')
WHERE
    NOT EXISTS (
        SELECT om_droit FROM om_droit WHERE libelle = 'dossier_instruction_supprimer_liaison' AND om_profil = (SELECT om_profil FROM om_profil WHERE libelle = 'CHEF DE SERVICE')
    );

INSERT INTO om_droit (om_droit, libelle, om_profil)
SELECT nextval('om_droit_seq'),'dossier_instruction_supprimer_liaison',(SELECT om_profil FROM om_profil WHERE libelle = 'DIVISIONNAIRE')
WHERE
    NOT EXISTS (
        SELECT om_droit FROM om_droit WHERE libelle = 'dossier_instruction_supprimer_liaison' AND om_profil = (SELECT om_profil FROM om_profil WHERE libelle = 'DIVISIONNAIRE')
    );

INSERT INTO om_droit (om_droit, libelle, om_profil)
SELECT nextval('om_droit_seq'),'dossier_instruction_supprimer_liaison',(SELECT om_profil FROM om_profil WHERE libelle = 'INSTRUCTEUR')
WHERE
    NOT EXISTS (
        SELECT om_droit FROM om_droit WHERE libelle = 'dossier_instruction_supprimer_liaison' AND om_profil = (SELECT om_profil FROM om_profil WHERE libelle = 'INSTRUCTEUR')
    );

INSERT INTO om_droit (om_droit, libelle, om_profil)
SELECT nextval('om_droit_seq'),'dossier_instruction_supprimer_liaison',(SELECT om_profil FROM om_profil WHERE libelle = 'INSTRUCTEUR SERVICE')
WHERE
    NOT EXISTS (
        SELECT om_droit FROM om_droit WHERE libelle = 'dossier_instruction_supprimer_liaison' AND om_profil = (SELECT om_profil FROM om_profil WHERE libelle = 'INSTRUCTEUR SERVICE')
    );

INSERT INTO om_droit (om_droit, libelle, om_profil)
SELECT nextval('om_droit_seq'),'dossier_instruction_supprimer_liaison',(SELECT om_profil FROM om_profil WHERE libelle = 'INSTRUCTEUR POLYVALENT')
WHERE
    NOT EXISTS (
        SELECT om_droit FROM om_droit WHERE libelle = 'dossier_instruction_supprimer_liaison' AND om_profil = (SELECT om_profil FROM om_profil WHERE libelle = 'INSTRUCTEUR POLYVALENT')
    );

INSERT INTO om_droit (om_droit, libelle, om_profil)
SELECT nextval('om_droit_seq'),'dossier_instruction_supprimer_liaison',(SELECT om_profil FROM om_profil WHERE libelle = 'INSTRUCTEUR POLYVALENT COMMUNE')
WHERE
    NOT EXISTS (
        SELECT om_droit FROM om_droit WHERE libelle = 'dossier_instruction_supprimer_liaison' AND om_profil = (SELECT om_profil FROM om_profil WHERE libelle = 'INSTRUCTEUR POLYVALENT COMMUNE')
    );

INSERT INTO om_droit (om_droit, libelle, om_profil)
SELECT nextval('om_droit_seq'),'dossier_instruction_supprimer_liaison',(SELECT om_profil FROM om_profil WHERE libelle = 'QUALIFICATEUR')
WHERE
    NOT EXISTS (
        SELECT om_droit FROM om_droit WHERE libelle = 'dossier_instruction_supprimer_liaison' AND om_profil = (SELECT om_profil FROM om_profil WHERE libelle = 'QUALIFICATEUR')
    );

INSERT INTO om_droit (om_droit, libelle, om_profil)
SELECT nextval('om_droit_seq'),'lien_dossier_dossier',(SELECT om_profil FROM om_profil WHERE libelle = 'ADMINISTRATEUR GENERAL')
WHERE
    NOT EXISTS (
        SELECT om_droit FROM om_droit WHERE libelle = 'lien_dossier_dossier' AND om_profil = (SELECT om_profil FROM om_profil WHERE libelle = 'ADMINISTRATEUR GENERAL')
    );

INSERT INTO om_droit (om_droit, libelle, om_profil)
SELECT nextval('om_droit_seq'),'lien_dossier_dossier',(SELECT om_profil FROM om_profil WHERE libelle = 'ADMINISTRATEUR FONCTIONNEL')
WHERE
    NOT EXISTS (
        SELECT om_droit FROM om_droit WHERE libelle = 'lien_dossier_dossier' AND om_profil = (SELECT om_profil FROM om_profil WHERE libelle = 'ADMINISTRATEUR FONCTIONNEL')
    );

INSERT INTO om_droit (om_droit, libelle, om_profil)
SELECT nextval('om_droit_seq'),'lien_dossier_dossier',(SELECT om_profil FROM om_profil WHERE libelle = 'ADMINISTRATEUR TECHNIQUE ET FONCTIONNEL')
WHERE
    NOT EXISTS (
        SELECT om_droit FROM om_droit WHERE libelle = 'lien_dossier_dossier' AND om_profil = (SELECT om_profil FROM om_profil WHERE libelle = 'ADMINISTRATEUR TECHNIQUE ET FONCTIONNEL')
    );

INSERT INTO om_droit (om_droit, libelle, om_profil)
SELECT nextval('om_droit_seq'),'lien_dossier_dossier',(SELECT om_profil FROM om_profil WHERE libelle = 'ADMINISTRATEUR TECHNIQUE')
WHERE
    NOT EXISTS (
        SELECT om_droit FROM om_droit WHERE libelle = 'lien_dossier_dossier' AND om_profil = (SELECT om_profil FROM om_profil WHERE libelle = 'ADMINISTRATEUR TECHNIQUE')
    );

-- Ajouts des droits de consultation de l'onglet des dossiers liés
INSERT INTO om_droit (om_droit, libelle, om_profil)
SELECT nextval('om_droit_seq'),'lien_dossier_dossier_tab',(SELECT om_profil FROM om_profil WHERE libelle = 'CHEF DE SERVICE')
WHERE
    NOT EXISTS (
        SELECT om_droit FROM om_droit WHERE libelle = 'lien_dossier_dossier_tab' AND om_profil = (SELECT om_profil FROM om_profil WHERE libelle = 'CHEF DE SERVICE')
    );

INSERT INTO om_droit (om_droit, libelle, om_profil)
SELECT nextval('om_droit_seq'),'lien_dossier_dossier_tab',(SELECT om_profil FROM om_profil WHERE libelle = 'DIVISIONNAIRE')
WHERE
    NOT EXISTS (
        SELECT om_droit FROM om_droit WHERE libelle = 'lien_dossier_dossier_tab' AND om_profil = (SELECT om_profil FROM om_profil WHERE libelle = 'DIVISIONNAIRE')
    );

INSERT INTO om_droit (om_droit, libelle, om_profil)
SELECT nextval('om_droit_seq'),'lien_dossier_dossier_tab',(SELECT om_profil FROM om_profil WHERE libelle = 'INSTRUCTEUR')
WHERE
    NOT EXISTS (
        SELECT om_droit FROM om_droit WHERE libelle = 'lien_dossier_dossier_tab' AND om_profil = (SELECT om_profil FROM om_profil WHERE libelle = 'INSTRUCTEUR')
    );

INSERT INTO om_droit (om_droit, libelle, om_profil)
SELECT nextval('om_droit_seq'),'lien_dossier_dossier_tab',(SELECT om_profil FROM om_profil WHERE libelle = 'INSTRUCTEUR SERVICE')
WHERE
    NOT EXISTS (
        SELECT om_droit FROM om_droit WHERE libelle = 'lien_dossier_dossier_tab' AND om_profil = (SELECT om_profil FROM om_profil WHERE libelle = 'INSTRUCTEUR SERVICE')
    );

INSERT INTO om_droit (om_droit, libelle, om_profil)
SELECT nextval('om_droit_seq'),'lien_dossier_dossier_tab',(SELECT om_profil FROM om_profil WHERE libelle = 'INSTRUCTEUR POLYVALENT')
WHERE
    NOT EXISTS (
        SELECT om_droit FROM om_droit WHERE libelle = 'lien_dossier_dossier_tab' AND om_profil = (SELECT om_profil FROM om_profil WHERE libelle = 'INSTRUCTEUR POLYVALENT')
    );

INSERT INTO om_droit (om_droit, libelle, om_profil)
SELECT nextval('om_droit_seq'),'lien_dossier_dossier_tab',(SELECT om_profil FROM om_profil WHERE libelle = 'INSTRUCTEUR POLYVALENT COMMUNE')
WHERE
    NOT EXISTS (
        SELECT om_droit FROM om_droit WHERE libelle = 'lien_dossier_dossier_tab' AND om_profil = (SELECT om_profil FROM om_profil WHERE libelle = 'INSTRUCTEUR POLYVALENT COMMUNE')
    );

INSERT INTO om_droit (om_droit, libelle, om_profil)
SELECT nextval('om_droit_seq'),'lien_dossier_dossier_tab',(SELECT om_profil FROM om_profil WHERE libelle = 'QUALIFICATEUR')
WHERE
    NOT EXISTS (
        SELECT om_droit FROM om_droit WHERE libelle = 'lien_dossier_dossier_tab' AND om_profil = (SELECT om_profil FROM om_profil WHERE libelle = 'QUALIFICATEUR')
    );

INSERT INTO om_droit (om_droit, libelle, om_profil)
SELECT nextval('om_droit_seq'),'lien_dossier_dossier_tab',(SELECT om_profil FROM om_profil WHERE libelle = 'CELLULE SUIVI')
WHERE
    NOT EXISTS (
        SELECT om_droit FROM om_droit WHERE libelle = 'lien_dossier_dossier_tab' AND om_profil = (SELECT om_profil FROM om_profil WHERE libelle = 'CELLULE SUIVI')
    );

INSERT INTO om_droit (om_droit, libelle, om_profil)
SELECT nextval('om_droit_seq'),'lien_dossier_dossier_tab',(SELECT om_profil FROM om_profil WHERE libelle = 'GUICHET UNIQUE')
WHERE
    NOT EXISTS (
        SELECT om_droit FROM om_droit WHERE libelle = 'lien_dossier_dossier_tab' AND om_profil = (SELECT om_profil FROM om_profil WHERE libelle = 'GUICHET UNIQUE')
    );

INSERT INTO om_droit (om_droit, libelle, om_profil)
SELECT nextval('om_droit_seq'),'lien_dossier_dossier_tab',(SELECT om_profil FROM om_profil WHERE libelle = 'SERVICE CONSULTÉ INTERNE')
WHERE
    NOT EXISTS (
        SELECT om_droit FROM om_droit WHERE libelle = 'lien_dossier_dossier_tab' AND om_profil = (SELECT om_profil FROM om_profil WHERE libelle = 'SERVICE CONSULTÉ INTERNE')
    );

INSERT INTO om_droit (om_droit, libelle, om_profil)
SELECT nextval('om_droit_seq'),'lien_dossier_dossier_tab',(SELECT om_profil FROM om_profil WHERE libelle = 'VISUALISATION DA et DI')
WHERE
    NOT EXISTS (
        SELECT om_droit FROM om_droit WHERE libelle = 'lien_dossier_dossier_tab' AND om_profil = (SELECT om_profil FROM om_profil WHERE libelle = 'VISUALISATION DA et DI')
    );

INSERT INTO om_droit (om_droit, libelle, om_profil)
SELECT nextval('om_droit_seq'),'lien_dossier_dossier_tab',(SELECT om_profil FROM om_profil WHERE libelle = 'GUICHET ET SUIVI')
WHERE
    NOT EXISTS (
        SELECT om_droit FROM om_droit WHERE libelle = 'lien_dossier_dossier_tab' AND om_profil = (SELECT om_profil FROM om_profil WHERE libelle = 'GUICHET ET SUIVI')
    );

INSERT INTO om_droit (om_droit, libelle, om_profil)
SELECT nextval('om_droit_seq'),'dossier_instruction_supprimer_liaison_auto',(SELECT om_profil FROM om_profil WHERE libelle = 'ADMINISTRATEUR GENERAL')
WHERE
    NOT EXISTS (
        SELECT om_droit FROM om_droit WHERE libelle = 'dossier_instruction_supprimer_liaison_auto' AND om_profil = (SELECT om_profil FROM om_profil WHERE libelle = 'ADMINISTRATEUR GENERAL')
    );

INSERT INTO om_droit (om_droit, libelle, om_profil)
SELECT nextval('om_droit_seq'),'dossier_instruction_supprimer_liaison_auto',(SELECT om_profil FROM om_profil WHERE libelle = 'ADMINISTRATEUR FONCTIONNEL')
WHERE
    NOT EXISTS (
        SELECT om_droit FROM om_droit WHERE libelle = 'dossier_instruction_supprimer_liaison_auto' AND om_profil = (SELECT om_profil FROM om_profil WHERE libelle = 'ADMINISTRATEUR FONCTIONNEL')
    );

INSERT INTO om_droit (om_droit, libelle, om_profil)
SELECT nextval('om_droit_seq'),'dossier_instruction_supprimer_liaison_auto',(SELECT om_profil FROM om_profil WHERE libelle = 'ADMINISTRATEUR TECHNIQUE ET FONCTIONNEL')
WHERE
    NOT EXISTS (
        SELECT om_droit FROM om_droit WHERE libelle = 'dossier_instruction_supprimer_liaison_auto' AND om_profil = (SELECT om_profil FROM om_profil WHERE libelle = 'ADMINISTRATEUR TECHNIQUE ET FONCTIONNEL')
    );

UPDATE om_droit
SET libelle = 'dossier_lies_tab'
WHERE libelle = 'dossier_instruction_display_da_di_tab';

UPDATE om_droit
SET libelle = 'dossier_lies'
WHERE libelle = 'dossier_instruction_display_da_di';

UPDATE om_droit
SET libelle = 'dossier_lies_geographiquement'
WHERE libelle = 'dossier_autorisation_display_da_di';

UPDATE om_droit
SET libelle = 'dossier_lies_geographiquement_tab'
WHERE libelle = 'dossier_autorisation_display_da_di_tab';


--
-- END / #647 — Dossiers liés : interfaces 
--

--
-- START - Modifications de la structure
--

-- Ajout des champs pour RE
ALTER TABLE dossier
ADD autorisation_contestee character varying(30) NULL,
ADD date_cloture_instruction date NULL;
COMMENT ON COLUMN dossier.autorisation_contestee IS 'Le numéro de l''autorisation contestée (DI)';
COMMENT ON COLUMN dossier.date_cloture_instruction IS 'Date de fin d''instruction du dossier recours';

ALTER TABLE dossier ADD CONSTRAINT dossier_autorisation_contestee_fkey
FOREIGN KEY ("autorisation_contestee") REFERENCES dossier (dossier);

ALTER TABLE demande
ADD autorisation_contestee character varying(30) NULL;
COMMENT ON COLUMN demande.autorisation_contestee IS 'Le numéro de l''autorisation contestée (DI)';

ALTER TABLE demande ADD CONSTRAINT demande_autorisation_contestee_fkey
FOREIGN KEY (autorisation_contestee) REFERENCES dossier (dossier);

-- Ajout des champs pour IN
ALTER TABLE dossier
ADD date_premiere_visite date NULL,
ADD date_derniere_visite date NULL,
ADD date_contradictoire date NULL,
ADD date_retour_contradictoire date NULL,
ADD date_ait date NULL,
ADD date_transmission_parquet date NULL,
ADD instructeur_2 integer NULL;

COMMENT ON COLUMN dossier.date_premiere_visite IS 'Date du premier PV, mise à jour par l''instruction';
COMMENT ON COLUMN dossier.date_derniere_visite IS 'Date du dernier PV, mise à jour par l''instruction';
COMMENT ON COLUMN dossier.date_contradictoire IS 'Date alimentée par l''instruction';
COMMENT ON COLUMN dossier.date_retour_contradictoire IS 'Date alimentée par l''instruction';
COMMENT ON COLUMN dossier.date_ait IS 'Date alimentée par l''instruction';
COMMENT ON COLUMN dossier.date_transmission_parquet IS 'Date alimentée par l''instruction';
COMMENT ON COLUMN dossier.instructeur_2 IS 'Instructeur en charge du dossier d''instruction';

ALTER TABLE ONLY dossier
    ADD CONSTRAINT dossier_instructeur_2_fkey FOREIGN KEY (instructeur_2) REFERENCES instructeur(instructeur);

-- Ajout de la table objet_recours
CREATE TABLE objet_recours (
  "objet_recours" integer NOT NULL,
  "code" character varying(10) NOT NULL,
  "libelle" character varying(255) NOT NULL,
  "description" text NULL,
  "om_validite_debut" date NULL,
  "om_validite_fin" date NULL
);

CREATE SEQUENCE objet_recours_seq
    START WITH 1
    INCREMENT BY 1
    NO MINVALUE
    NO MAXVALUE
    CACHE 1;

ALTER TABLE ONLY objet_recours ADD CONSTRAINT objet_recours_pkey PRIMARY KEY (objet_recours);

COMMENT ON COLUMN "objet_recours"."objet_recours" IS 'Identifiant unique';
COMMENT ON COLUMN "objet_recours"."code" IS 'Code';
COMMENT ON COLUMN "objet_recours"."libelle" IS 'Libelle';
COMMENT ON COLUMN "objet_recours"."description" IS 'Description';
COMMENT ON COLUMN "objet_recours"."om_validite_debut" IS 'Date de début de validité';
COMMENT ON COLUMN "objet_recours"."om_validite_fin" IS 'Date de fin de validité';

-- Ajout de la table moyen_souleve
CREATE TABLE moyen_souleve (
  "moyen_souleve" integer NOT NULL,
  "code" character varying(10) NOT NULL,
  "libelle" character varying(255) NOT NULL,
  "description" text NULL,
  "om_validite_debut" date NULL,
  "om_validite_fin" date NULL
);

CREATE SEQUENCE moyen_souleve_seq
    START WITH 1
    INCREMENT BY 1
    NO MINVALUE
    NO MAXVALUE
    CACHE 1;

ALTER TABLE ONLY moyen_souleve ADD CONSTRAINT moyen_souleve_pkey PRIMARY KEY (moyen_souleve);

COMMENT ON COLUMN "moyen_souleve"."moyen_souleve" IS 'Identifiant unique';
COMMENT ON COLUMN "moyen_souleve"."code" IS 'Code';
COMMENT ON COLUMN "moyen_souleve"."libelle" IS 'Libelle';
COMMENT ON COLUMN "moyen_souleve"."description" IS 'Description';
COMMENT ON COLUMN "moyen_souleve"."om_validite_debut" IS 'Date de début de validité';
COMMENT ON COLUMN "moyen_souleve"."om_validite_fin" IS 'Date de fin de validité';

-- Ajout de la table moyen_retenu_juge
CREATE TABLE moyen_retenu_juge (
  "moyen_retenu_juge" integer NOT NULL,
  "code" character varying(10) NOT NULL,
  "libelle" character varying(255) NOT NULL,
  "description" text NULL,
  "om_validite_debut" date NULL,
  "om_validite_fin" date NULL
);

CREATE SEQUENCE moyen_retenu_juge_seq
    START WITH 1
    INCREMENT BY 1
    NO MINVALUE
    NO MAXVALUE
    CACHE 1;

ALTER TABLE ONLY moyen_retenu_juge ADD CONSTRAINT moyen_retenu_juge_pkey PRIMARY KEY (moyen_retenu_juge);

COMMENT ON COLUMN "moyen_retenu_juge"."moyen_retenu_juge" IS 'Identifiant unique';
COMMENT ON COLUMN "moyen_retenu_juge"."code" IS 'Code';
COMMENT ON COLUMN "moyen_retenu_juge"."libelle" IS 'Libelle';
COMMENT ON COLUMN "moyen_retenu_juge"."description" IS 'Description';
COMMENT ON COLUMN "moyen_retenu_juge"."om_validite_debut" IS 'Date de début de validité';
COMMENT ON COLUMN "moyen_retenu_juge"."om_validite_fin" IS 'Date de fin de validité';

-- Ajout de la table instructeur_qualite
CREATE TABLE instructeur_qualite (
  "instructeur_qualite" integer NOT NULL,
  "code" character varying(10) NOT NULL,
  "libelle" character varying(255) NOT NULL,
  "description" text NULL
);

CREATE SEQUENCE instructeur_qualite_seq
    START WITH 1
    INCREMENT BY 1
    NO MINVALUE
    NO MAXVALUE
    CACHE 1;

ALTER TABLE ONLY instructeur_qualite ADD CONSTRAINT instructeur_qualite_pkey PRIMARY KEY (instructeur_qualite);

COMMENT ON COLUMN "instructeur_qualite"."instructeur_qualite" IS 'Identifiant unique';
COMMENT ON COLUMN "instructeur_qualite"."code" IS 'Code';
COMMENT ON COLUMN "instructeur_qualite"."libelle" IS 'Libelle';
COMMENT ON COLUMN "instructeur_qualite"."description" IS 'Description';

INSERT INTO instructeur_qualite (instructeur_qualite, code, libelle) VALUES (nextval('instructeur_qualite_seq'), 'instr', 'instructeur');
INSERT INTO instructeur_qualite (instructeur_qualite, code, libelle) VALUES (nextval('instructeur_qualite_seq'), 'juri', 'juriste');
INSERT INTO instructeur_qualite (instructeur_qualite, code, libelle) VALUES (nextval('instructeur_qualite_seq'), 'tech', 'technicien');

-- Ajout du champs instructeur_qualite table instructeur
ALTER TABLE instructeur
ADD instructeur_qualite integer;
COMMENT ON COLUMN instructeur.instructeur_qualite IS 'Qualité de l''instructeur';

UPDATE instructeur
SET instructeur_qualite = (SELECT instructeur_qualite FROM instructeur_qualite WHERE code='instr');

ALTER TABLE ONLY instructeur
    ADD CONSTRAINT instructeur_instructeur_qualite_fkey FOREIGN KEY (instructeur_qualite) REFERENCES instructeur_qualite(instructeur_qualite);

ALTER TABLE instructeur ALTER COLUMN instructeur_qualite SET NOT NULL;

-- Ajout des champs pour les cerfa
ALTER TABLE donnees_techniques
ADD ctx_objet_recours integer NULL,
-- ADD ctx_moyen_souleve integer NULL,
-- ADD ctx_moyen_retenu_juge integer NULL,
ADD ctx_reference_sagace character varying(255) NULL,
ADD ctx_nature_travaux_infra text NULL,
ADD ctx_synthese_nti text NULL,
ADD ctx_article_non_resp text NULL,
ADD ctx_synthese_anr text NULL,
ADD ctx_reference_parquet character varying(255) NULL,
ADD ctx_element_taxation character varying(255) NULL,
ADD ctx_infraction boolean NULL,
ADD ctx_regularisable boolean NULL,
ADD ctx_reference_courrier character varying(255) NULL,
ADD ctx_date_audience date NULL,
ADD ctx_date_ajournement date NULL;
-- Commentaires
COMMENT ON COLUMN donnees_techniques.ctx_objet_recours IS 'Objet du recours';
-- COMMENT ON COLUMN donnees_techniques.ctx_moyen_souleve IS 'Moyens soulevés';
-- COMMENT ON COLUMN donnees_techniques.ctx_moyen_retenu_juge IS 'Moyens retenus par le juge';
COMMENT ON COLUMN donnees_techniques.ctx_reference_sagace IS 'Références sagaces';
COMMENT ON COLUMN donnees_techniques.ctx_nature_travaux_infra IS 'Nature des travaux en infraction (NTI)';
COMMENT ON COLUMN donnees_techniques.ctx_synthese_nti IS 'Synthèse des NTI';
COMMENT ON COLUMN donnees_techniques.ctx_article_non_resp IS 'Article(s) non respecté(s) (ANR)';
COMMENT ON COLUMN donnees_techniques.ctx_synthese_anr IS 'Synthèse (ANR)';
COMMENT ON COLUMN donnees_techniques.ctx_reference_parquet IS 'Références Parquet';
COMMENT ON COLUMN donnees_techniques.ctx_element_taxation IS 'Éléments de taxation';
COMMENT ON COLUMN donnees_techniques.ctx_infraction IS 'Infraction';
COMMENT ON COLUMN donnees_techniques.ctx_regularisable IS 'Régularisable';
COMMENT ON COLUMN donnees_techniques.ctx_reference_courrier IS 'Référence(s) courrier';
COMMENT ON COLUMN donnees_techniques.ctx_date_audience IS 'Date d''audience';
COMMENT ON COLUMN donnees_techniques.ctx_date_ajournement IS 'Date d''ajournement';

ALTER TABLE ONLY donnees_techniques
    ADD CONSTRAINT donnees_techniques_ctx_objet_recours_fkey FOREIGN KEY (ctx_objet_recours) REFERENCES objet_recours(objet_recours);

ALTER TABLE cerfa
ADD ctx_objet_recours boolean NULL,
ADD ctx_moyen_souleve boolean NULL,
ADD ctx_moyen_retenu_juge boolean NULL,
ADD ctx_reference_sagace boolean NULL,
ADD ctx_nature_travaux_infra boolean NULL,
ADD ctx_synthese_nti boolean NULL,
ADD ctx_article_non_resp boolean NULL,
ADD ctx_synthese_anr boolean NULL,
ADD ctx_reference_parquet boolean NULL,
ADD ctx_element_taxation boolean NULL,
ADD ctx_infraction boolean NULL,
ADD ctx_regularisable boolean NULL,
ADD ctx_reference_courrier boolean NULL,
ADD ctx_date_audience boolean NULL,
ADD ctx_date_ajournement boolean NULL;
-- Commentaires
COMMENT ON COLUMN cerfa.ctx_objet_recours IS 'Objet du recours';
COMMENT ON COLUMN cerfa.ctx_moyen_souleve IS 'Moyens soulevés';
COMMENT ON COLUMN cerfa.ctx_moyen_retenu_juge IS 'Moyens retenus par le juge';
COMMENT ON COLUMN cerfa.ctx_reference_sagace IS 'Références sagaces';
COMMENT ON COLUMN cerfa.ctx_nature_travaux_infra IS 'Nature des travaux en infraction (NTI)';
COMMENT ON COLUMN cerfa.ctx_synthese_nti IS 'Synthèse des NTI';
COMMENT ON COLUMN cerfa.ctx_article_non_resp IS 'Article(s) non respecté(s) (ANR)';
COMMENT ON COLUMN cerfa.ctx_synthese_anr IS 'Synthèse (ANR)';
COMMENT ON COLUMN cerfa.ctx_reference_parquet IS 'Références Parquet';
COMMENT ON COLUMN cerfa.ctx_element_taxation IS 'Éléments de taxation';
COMMENT ON COLUMN cerfa.ctx_infraction IS 'Infraction';
COMMENT ON COLUMN cerfa.ctx_regularisable IS 'Régularisable';
COMMENT ON COLUMN cerfa.ctx_reference_courrier IS 'Référence(s) courrier';
COMMENT ON COLUMN cerfa.ctx_date_audience IS 'Date d''audience';
COMMENT ON COLUMN cerfa.ctx_date_ajournement IS 'Date d''ajournement';

-- Ajout de la table de liaison pour les moyens soulevés
-- Table
CREATE TABLE lien_donnees_techniques_moyen_souleve (
    lien_donnees_techniques_moyen_souleve integer NOT NULL,
    donnees_techniques integer NOT NULL,
    moyen_souleve integer NOT NULL
);
-- Commentaires
COMMENT ON COLUMN lien_donnees_techniques_moyen_souleve.lien_donnees_techniques_moyen_souleve IS 'Identifiant unique';
COMMENT ON COLUMN lien_donnees_techniques_moyen_souleve.donnees_techniques IS 'Identifiant des données techniques';
COMMENT ON COLUMN lien_donnees_techniques_moyen_souleve.moyen_souleve IS 'Indentifiant du moyen soulevé';
-- Séquence
CREATE SEQUENCE lien_donnees_techniques_moyen_souleve_seq
    START WITH 1
    INCREMENT BY 1
    NO MINVALUE
    NO MAXVALUE
    CACHE 1;
-- Contraintes
ALTER TABLE ONLY lien_donnees_techniques_moyen_souleve ADD CONSTRAINT
    lien_donnees_techniques_moyen_souleve_pkey PRIMARY KEY (lien_donnees_techniques_moyen_souleve);
ALTER TABLE ONLY lien_donnees_techniques_moyen_souleve
    ADD CONSTRAINT lien_donnees_techniques_moyen_souleve_donnees_techniques_fkey FOREIGN KEY (donnees_techniques) REFERENCES donnees_techniques(donnees_techniques);
ALTER TABLE ONLY lien_donnees_techniques_moyen_souleve
    ADD CONSTRAINT lien_donnees_techniques_moyen_souleve_moyen_souleve_fkey FOREIGN KEY (moyen_souleve) REFERENCES moyen_souleve(moyen_souleve);

-- Ajout de la table de liaison pour les moyens retenus par le juge
-- Table
CREATE TABLE lien_donnees_techniques_moyen_retenu_juge (
    lien_donnees_techniques_moyen_retenu_juge integer NOT NULL,
    donnees_techniques integer NOT NULL,
    moyen_retenu_juge integer NOT NULL
);
-- Commentaires
COMMENT ON COLUMN lien_donnees_techniques_moyen_retenu_juge.lien_donnees_techniques_moyen_retenu_juge IS 'Identifiant unique';
COMMENT ON COLUMN lien_donnees_techniques_moyen_retenu_juge.donnees_techniques IS 'Identifiant des données techniques';
COMMENT ON COLUMN lien_donnees_techniques_moyen_retenu_juge.moyen_retenu_juge IS 'Indentifiant du moyen retenu par le juge';
-- Séquence
CREATE SEQUENCE lien_donnees_techniques_moyen_retenu_juge_seq
    START WITH 1
    INCREMENT BY 1
    NO MINVALUE
    NO MAXVALUE
    CACHE 1;
-- Contraintes
ALTER TABLE ONLY lien_donnees_techniques_moyen_retenu_juge ADD CONSTRAINT lien_donnees_techniques_moyen_retenu_juge_pkey PRIMARY KEY (lien_donnees_techniques_moyen_retenu_juge);
ALTER TABLE ONLY lien_donnees_techniques_moyen_retenu_juge
    ADD CONSTRAINT lien_donnees_techniques_moyen_retenu_juge_donnees_techniques_fkey FOREIGN KEY (donnees_techniques) REFERENCES donnees_techniques(donnees_techniques);
ALTER TABLE ONLY lien_donnees_techniques_moyen_retenu_juge
    ADD CONSTRAINT lien_donnees_techniques_moyen_retenu_juge_moyen_retenu_juge_fkey FOREIGN KEY (moyen_retenu_juge) REFERENCES moyen_retenu_juge(moyen_retenu_juge);

-- Lien entre les profils/utilisateurs et les groupes
CREATE TABLE lien_om_profil_groupe (
lien_om_profil_groupe integer NOT NULL,
om_profil integer NOT NULL,
groupe integer NOT NULL,
confidentiel boolean DEFAULT FALSE,
enregistrement_demande boolean DEFAULT FALSE
);
CREATE SEQUENCE lien_om_profil_groupe_seq
    START WITH 1
    INCREMENT BY 1
    NO MINVALUE
    NO MAXVALUE
    CACHE 1;

ALTER TABLE ONLY lien_om_profil_groupe
    ADD CONSTRAINT lien_om_profil_groupe_pkey PRIMARY KEY (lien_om_profil_groupe);

ALTER TABLE ONLY lien_om_profil_groupe
    ADD CONSTRAINT om_profil_groupe_key UNIQUE (om_profil, groupe);

COMMENT ON COLUMN "lien_om_profil_groupe"."lien_om_profil_groupe" IS 'Identifiant unique';
COMMENT ON COLUMN "lien_om_profil_groupe"."om_profil" IS 'Identifiant du profil';
COMMENT ON COLUMN "lien_om_profil_groupe"."groupe" IS 'Indentifiant du groupe';
COMMENT ON COLUMN "lien_om_profil_groupe"."confidentiel" IS 'Visualisation des dossiers du groupe';
COMMENT ON COLUMN "lien_om_profil_groupe"."enregistrement_demande" IS 'Ajout ou non de dossier pour ce groupe';

ALTER TABLE ONLY lien_om_profil_groupe
    ADD CONSTRAINT lien_om_profil_groupe_om_profil_fkey FOREIGN KEY (om_profil) REFERENCES om_profil(om_profil);
ALTER TABLE ONLY lien_om_profil_groupe
    ADD CONSTRAINT lien_om_profil_groupe_groupe_fkey FOREIGN KEY (groupe) REFERENCES groupe(groupe);

CREATE TABLE lien_om_utilisateur_groupe (
lien_om_utilisateur_groupe integer NOT NULL,
login character varying(30) NOT NULL,
groupe integer NOT NULL,
confidentiel boolean DEFAULT FALSE,
enregistrement_demande boolean DEFAULT FALSE
);
CREATE SEQUENCE lien_om_utilisateur_groupe_seq
    START WITH 1
    INCREMENT BY 1
    NO MINVALUE
    NO MAXVALUE
    CACHE 1;

ALTER TABLE ONLY lien_om_utilisateur_groupe ADD CONSTRAINT lien_om_utilisateur_groupe_pkey PRIMARY KEY (lien_om_utilisateur_groupe);

COMMENT ON COLUMN "lien_om_utilisateur_groupe"."lien_om_utilisateur_groupe" IS 'Identifiant unique';
COMMENT ON COLUMN "lien_om_utilisateur_groupe"."login" IS 'Identifiant de l''utilisateur';
COMMENT ON COLUMN "lien_om_utilisateur_groupe"."groupe" IS 'Indentifiant du groupe';
COMMENT ON COLUMN "lien_om_utilisateur_groupe"."confidentiel" IS 'Visualisation des dossiers du groupe';
COMMENT ON COLUMN "lien_om_utilisateur_groupe"."enregistrement_demande" IS 'Ajout ou non de dossier pour ce groupe';

ALTER TABLE ONLY lien_om_utilisateur_groupe
    ADD CONSTRAINT lien_om_utilisateur_groupe_groupe_fkey FOREIGN KEY (groupe) REFERENCES groupe(groupe);

-- Ajout des champs archive dans la table *instruction*
ALTER TABLE instruction ADD COLUMN archive_date_cloture_instruction date NULL;
ALTER TABLE instruction ADD COLUMN archive_date_premiere_visite date NULL;
ALTER TABLE instruction ADD COLUMN archive_date_derniere_visite date NULL;
ALTER TABLE instruction ADD COLUMN archive_date_contradictoire date NULL;
ALTER TABLE instruction ADD COLUMN archive_date_retour_contradictoire date NULL;
ALTER TABLE instruction ADD COLUMN archive_date_ait date NULL;
ALTER TABLE instruction ADD COLUMN archive_date_transmission_parquet date NULL;
--
COMMENT ON COLUMN instruction.archive_date_cloture_instruction IS 'Valeur du champ date_cloture_instruction du dossier d''instruction avant ajout de l''événement d''instruction';
COMMENT ON COLUMN instruction.archive_date_premiere_visite IS 'Valeur du champ date_premiere_visite du dossier d''instruction avant ajout de l''événement d''instruction';
COMMENT ON COLUMN instruction.archive_date_derniere_visite IS 'Valeur du champ date_derniere_visite du dossier d''instruction avant ajout de l''événement d''instruction';
COMMENT ON COLUMN instruction.archive_date_contradictoire IS 'Valeur du champ date_contradictoire du dossier d''instruction avant ajout de l''événement d''instruction';
COMMENT ON COLUMN instruction.archive_date_retour_contradictoire IS 'Valeur du champ date_retour_contradictoire du dossier d''instruction avant ajout de l''événement d''instruction';
COMMENT ON COLUMN instruction.archive_date_ait IS 'Valeur du champ date_ait du dossier d''instruction avant ajout de l''événement d''instruction';
COMMENT ON COLUMN instruction.archive_date_transmission_parquet IS 'Valeur du champ date_transmission_parquet du dossier d''instruction avant ajout de l''événement d''instruction';

-- Ajout des champs règle dans la table *action*
ALTER TABLE action ADD COLUMN regle_date_cloture_instruction character varying(60) NULL;
ALTER TABLE action ADD COLUMN regle_date_premiere_visite character varying(60) NULL;
ALTER TABLE action ADD COLUMN regle_date_derniere_visite character varying(60) NULL;
ALTER TABLE action ADD COLUMN regle_date_contradictoire character varying(60) NULL;
ALTER TABLE action ADD COLUMN regle_date_retour_contradictoire character varying(60) NULL;
ALTER TABLE action ADD COLUMN regle_date_ait character varying(60) NULL;
ALTER TABLE action ADD COLUMN regle_date_transmission_parquet character varying(60) NULL;
--
COMMENT ON COLUMN action.regle_date_cloture_instruction IS 'Règle de calcul de la date de cloture de l''instruction des dossiers d''instruction';
COMMENT ON COLUMN action.regle_date_premiere_visite IS 'Règle de calcul de la date de première visite des dossiers d''instruction';
COMMENT ON COLUMN action.regle_date_derniere_visite IS 'Règle de calcul de la date de dernière visite des dossiers d''instruction';
COMMENT ON COLUMN action.regle_date_contradictoire IS 'Règle de calcul de la date de contradictoire des dossiers d''instruction';
COMMENT ON COLUMN action.regle_date_retour_contradictoire IS 'Règle de calcul de la date de retour de contradictoire des dossiers d''instruction';
COMMENT ON COLUMN action.regle_date_ait IS 'Règle de calcul de la date d''AIT des dossiers d''instruction';
COMMENT ON COLUMN action.regle_date_transmission_parquet IS 'Règle de calcul de la date de transmission au parquet des dossiers d''instruction';

-- Ajout du groupe sur le type de DA
ALTER TABLE dossier_autorisation_type
ADD affichage_form character varying(250);
UPDATE dossier_autorisation_type SET affichage_form = 'ADS';
ALTER TABLE dossier_autorisation_type ALTER COLUMN affichage_form SET NOT NULL;
COMMENT ON COLUMN "dossier_autorisation_type"."affichage_form" IS 'Type d''affichage du formulaire du dossier (DI et/ou DA)';

-- Ajout du champ permettant de ne pas afficher un DA dans l'application
ALTER TABLE dossier_autorisation_type ADD COLUMN cacher_da boolean DEFAULT FALSE;
COMMENT ON COLUMN dossier_autorisation_type.cacher_da IS 'Si positionné à oui, alors les DA de ce type ne seront pas visibles';

-- Ajout de la table de liaison d'ajout de pièce par qualité d'instructeur
-- Table
CREATE TABLE lien_document_numerise_type_instructeur_qualite (
    lien_document_numerise_type_instructeur_qualite integer NOT NULL,
    document_numerise_type integer NOT NULL,
    instructeur_qualite integer NOT NULL
);
-- Commentaires
COMMENT ON COLUMN lien_document_numerise_type_instructeur_qualite.lien_document_numerise_type_instructeur_qualite IS 'Identifiant unique';
COMMENT ON COLUMN lien_document_numerise_type_instructeur_qualite.document_numerise_type IS 'Identifiant des types de pièce';
COMMENT ON COLUMN lien_document_numerise_type_instructeur_qualite.instructeur_qualite IS 'Indentifiant de la qualité des instructeurs';
-- Séquence
CREATE SEQUENCE lien_document_numerise_type_instructeur_qualite_seq
    START WITH 1
    INCREMENT BY 1
    NO MINVALUE
    NO MAXVALUE
    CACHE 1;
-- Contraintes
ALTER TABLE ONLY lien_document_numerise_type_instructeur_qualite ADD CONSTRAINT lien_document_numerise_type_instructeur_qualite_pkey PRIMARY KEY (lien_document_numerise_type_instructeur_qualite);
ALTER TABLE ONLY lien_document_numerise_type_instructeur_qualite
    ADD CONSTRAINT lien_document_numerise_type_instructeur_qualite_document_numerise_type_fkey FOREIGN KEY (document_numerise_type) REFERENCES document_numerise_type(document_numerise_type);
ALTER TABLE ONLY lien_document_numerise_type_instructeur_qualite
    ADD CONSTRAINT lien_document_numerise_type_instructeur_qualite_instructeur_qualite_fkey FOREIGN KEY (instructeur_qualite) REFERENCES instructeur_qualite(instructeur_qualite);

--
-- END - Modifications de la structure
--

--
-- START - Ajout des nouveaux profils
--

-- Assistante
INSERT INTO om_profil VALUES (nextval('om_profil_seq'), 'ASSISTANTE', 0, NULL, NULL);
INSERT INTO om_droit 
SELECT
    nextval('om_droit_seq'),
    om_droit.libelle,
    (SELECT om_profil FROM om_profil WHERE libelle = 'ASSISTANTE')
FROM om_droit
JOIN om_profil ON om_droit.om_profil = om_profil.om_profil
WHERE om_profil.libelle = 'INSTRUCTEUR SERVICE';

-- Chef de service Contentieux
INSERT INTO om_profil VALUES (nextval('om_profil_seq'), 'CHEF DE SERVICE CONTENTIEUX', 0, NULL, NULL);
INSERT INTO om_droit 
SELECT
    nextval('om_droit_seq'),
    om_droit.libelle,
    (SELECT om_profil FROM om_profil WHERE libelle = 'CHEF DE SERVICE CONTENTIEUX')
FROM om_droit
JOIN om_profil ON om_droit.om_profil = om_profil.om_profil
WHERE om_profil.libelle = 'INSTRUCTEUR SERVICE';

-- Juriste
INSERT INTO om_profil VALUES (nextval('om_profil_seq'), 'JURISTE', 0, NULL, NULL);
INSERT INTO om_droit 
SELECT
    nextval('om_droit_seq'),
    om_droit.libelle,
    (SELECT om_profil FROM om_profil WHERE libelle = 'JURISTE')
FROM om_droit
JOIN om_profil ON om_droit.om_profil = om_profil.om_profil
WHERE om_profil.libelle = 'INSTRUCTEUR SERVICE';

-- Technicien
INSERT INTO om_profil VALUES (nextval('om_profil_seq'), 'TECHNICIEN', 0, NULL, NULL);
INSERT INTO om_droit 
SELECT
    nextval('om_droit_seq'),
    om_droit.libelle,
    (SELECT om_profil FROM om_profil WHERE libelle = 'TECHNICIEN')
FROM om_droit
JOIN om_profil ON om_droit.om_profil = om_profil.om_profil
WHERE om_profil.libelle = 'INSTRUCTEUR SERVICE';

-- Responsable division infraction
INSERT INTO om_profil VALUES (nextval('om_profil_seq'), 'RESPONSABLE DIVISION INFRACTION', 0, NULL, NULL);
INSERT INTO om_droit 
SELECT
    nextval('om_droit_seq'),
    om_droit.libelle,
    (SELECT om_profil FROM om_profil WHERE libelle = 'RESPONSABLE DIVISION INFRACTION')
FROM om_droit
JOIN om_profil ON om_droit.om_profil = om_profil.om_profil
WHERE om_profil.libelle = 'INSTRUCTEUR SERVICE';

-- Direction consultation
INSERT INTO om_profil VALUES (nextval('om_profil_seq'), 'DIRECTION CONSULTATION', 0, NULL, NULL);
INSERT INTO om_droit 
SELECT
    nextval('om_droit_seq'),
    om_droit.libelle,
    (SELECT om_profil FROM om_profil WHERE libelle = 'DIRECTION CONSULTATION')
FROM om_droit
JOIN om_profil ON om_droit.om_profil = om_profil.om_profil
WHERE om_profil.libelle = 'VISUALISATION DA et DI';

-- Direction recours
INSERT INTO om_profil VALUES (nextval('om_profil_seq'), 'DIRECTION RECOURS', 0, NULL, NULL);
INSERT INTO om_droit 
SELECT
    nextval('om_droit_seq'),
    om_droit.libelle,
    (SELECT om_profil FROM om_profil WHERE libelle = 'DIRECTION RECOURS')
FROM om_droit
JOIN om_profil ON om_droit.om_profil = om_profil.om_profil
WHERE om_profil.libelle = 'VISUALISATION DA et DI';

-- Direction infraction
INSERT INTO om_profil VALUES (nextval('om_profil_seq'), 'DIRECTION INFRACTION', 0, NULL, NULL);
INSERT INTO om_droit 
SELECT
    nextval('om_droit_seq'),
    om_droit.libelle,
    (SELECT om_profil FROM om_profil WHERE libelle = 'DIRECTION INFRACTION')
FROM om_droit
JOIN om_profil ON om_droit.om_profil = om_profil.om_profil
WHERE om_profil.libelle = 'VISUALISATION DA et DI';

--
-- END - Ajout des nouveaux profils
--

--
-- START - Ajout des liaisons
--

-- Ajout des groupes ADS et ERP
INSERT INTO lien_om_profil_groupe SELECT nextval('lien_om_profil_groupe_seq'),(SELECT om_profil FROM om_profil WHERE libelle = 'INSTRUCTEUR'), (SELECT groupe FROM groupe WHERE code = 'ADS'), false, true;
INSERT INTO lien_om_profil_groupe SELECT nextval('lien_om_profil_groupe_seq'),(SELECT om_profil FROM om_profil WHERE libelle = 'INSTRUCTEUR'), (SELECT groupe FROM groupe WHERE code = 'CU'), false, true;
INSERT INTO lien_om_profil_groupe SELECT nextval('lien_om_profil_groupe_seq'),(SELECT om_profil FROM om_profil WHERE libelle = 'INSTRUCTEUR'), 4, false, true;
INSERT INTO lien_om_profil_groupe SELECT nextval('lien_om_profil_groupe_seq'),(SELECT om_profil FROM om_profil WHERE libelle = 'INSTRUCTEUR'), 5, false, true;
INSERT INTO lien_om_profil_groupe SELECT nextval('lien_om_profil_groupe_seq'),(SELECT om_profil FROM om_profil WHERE libelle = 'INSTRUCTEUR SERVICE'), (SELECT groupe FROM groupe WHERE code = 'ADS'), false, true;
INSERT INTO lien_om_profil_groupe SELECT nextval('lien_om_profil_groupe_seq'),(SELECT om_profil FROM om_profil WHERE libelle = 'INSTRUCTEUR SERVICE'), (SELECT groupe FROM groupe WHERE code = 'CU'), false, true;
INSERT INTO lien_om_profil_groupe SELECT nextval('lien_om_profil_groupe_seq'),(SELECT om_profil FROM om_profil WHERE libelle = 'INSTRUCTEUR SERVICE'), 4, false, true;
INSERT INTO lien_om_profil_groupe SELECT nextval('lien_om_profil_groupe_seq'),(SELECT om_profil FROM om_profil WHERE libelle = 'INSTRUCTEUR SERVICE'), 5, false, true;
INSERT INTO lien_om_profil_groupe SELECT nextval('lien_om_profil_groupe_seq'),(SELECT om_profil FROM om_profil WHERE libelle = 'INSTRUCTEUR POLYVALENT'), (SELECT groupe FROM groupe WHERE code = 'ADS'), false, true;
INSERT INTO lien_om_profil_groupe SELECT nextval('lien_om_profil_groupe_seq'),(SELECT om_profil FROM om_profil WHERE libelle = 'INSTRUCTEUR POLYVALENT'), (SELECT groupe FROM groupe WHERE code = 'CU'), false, true;
INSERT INTO lien_om_profil_groupe SELECT nextval('lien_om_profil_groupe_seq'),(SELECT om_profil FROM om_profil WHERE libelle = 'INSTRUCTEUR POLYVALENT'), 4, false, true;
INSERT INTO lien_om_profil_groupe SELECT nextval('lien_om_profil_groupe_seq'),(SELECT om_profil FROM om_profil WHERE libelle = 'INSTRUCTEUR POLYVALENT'), 5, false, true;
INSERT INTO lien_om_profil_groupe SELECT nextval('lien_om_profil_groupe_seq'),(SELECT om_profil FROM om_profil WHERE libelle = 'INSTRUCTEUR POLYVALENT COMMUNE'), (SELECT groupe FROM groupe WHERE code = 'ADS'), false, true;
INSERT INTO lien_om_profil_groupe SELECT nextval('lien_om_profil_groupe_seq'),(SELECT om_profil FROM om_profil WHERE libelle = 'INSTRUCTEUR POLYVALENT COMMUNE'), (SELECT groupe FROM groupe WHERE code = 'CU'), false, true;
INSERT INTO lien_om_profil_groupe SELECT nextval('lien_om_profil_groupe_seq'),(SELECT om_profil FROM om_profil WHERE libelle = 'INSTRUCTEUR POLYVALENT COMMUNE'), (SELECT groupe FROM groupe WHERE code = 'RU'), false, true;
INSERT INTO lien_om_profil_groupe SELECT nextval('lien_om_profil_groupe_seq'),(SELECT om_profil FROM om_profil WHERE libelle = 'INSTRUCTEUR POLYVALENT COMMUNE'), (SELECT groupe FROM groupe WHERE code = 'ERP'), false, true;
INSERT INTO lien_om_profil_groupe SELECT nextval('lien_om_profil_groupe_seq'),(SELECT om_profil FROM om_profil WHERE libelle = 'QUALIFICATEUR'), (SELECT groupe FROM groupe WHERE code = 'ADS'), false, true;
INSERT INTO lien_om_profil_groupe SELECT nextval('lien_om_profil_groupe_seq'),(SELECT om_profil FROM om_profil WHERE libelle = 'QUALIFICATEUR'), (SELECT groupe FROM groupe WHERE code = 'CU'), false, true;
INSERT INTO lien_om_profil_groupe SELECT nextval('lien_om_profil_groupe_seq'),(SELECT om_profil FROM om_profil WHERE libelle = 'QUALIFICATEUR'), (SELECT groupe FROM groupe WHERE code = 'RU'), false, true;
INSERT INTO lien_om_profil_groupe SELECT nextval('lien_om_profil_groupe_seq'),(SELECT om_profil FROM om_profil WHERE libelle = 'QUALIFICATEUR'), (SELECT groupe FROM groupe WHERE code = 'ERP'), false, true;
INSERT INTO lien_om_profil_groupe SELECT nextval('lien_om_profil_groupe_seq'),(SELECT om_profil FROM om_profil WHERE libelle = 'DIVISIONNAIRE'), (SELECT groupe FROM groupe WHERE code = 'ADS'), false, true;
INSERT INTO lien_om_profil_groupe SELECT nextval('lien_om_profil_groupe_seq'),(SELECT om_profil FROM om_profil WHERE libelle = 'DIVISIONNAIRE'), (SELECT groupe FROM groupe WHERE code = 'CU'), false, true;
INSERT INTO lien_om_profil_groupe SELECT nextval('lien_om_profil_groupe_seq'),(SELECT om_profil FROM om_profil WHERE libelle = 'DIVISIONNAIRE'), (SELECT groupe FROM groupe WHERE code = 'RU'), false, true;
INSERT INTO lien_om_profil_groupe SELECT nextval('lien_om_profil_groupe_seq'),(SELECT om_profil FROM om_profil WHERE libelle = 'DIVISIONNAIRE'), (SELECT groupe FROM groupe WHERE code = 'ERP'), false, true;
INSERT INTO lien_om_profil_groupe SELECT nextval('lien_om_profil_groupe_seq'),(SELECT om_profil FROM om_profil WHERE libelle = 'CHEF DE SERVICE'), (SELECT groupe FROM groupe WHERE code = 'ADS'), false, true;
INSERT INTO lien_om_profil_groupe SELECT nextval('lien_om_profil_groupe_seq'),(SELECT om_profil FROM om_profil WHERE libelle = 'CHEF DE SERVICE'), (SELECT groupe FROM groupe WHERE code = 'CU'), false, true;
INSERT INTO lien_om_profil_groupe SELECT nextval('lien_om_profil_groupe_seq'),(SELECT om_profil FROM om_profil WHERE libelle = 'CHEF DE SERVICE'), (SELECT groupe FROM groupe WHERE code = 'RU'), false, true;
INSERT INTO lien_om_profil_groupe SELECT nextval('lien_om_profil_groupe_seq'),(SELECT om_profil FROM om_profil WHERE libelle = 'CHEF DE SERVICE'), (SELECT groupe FROM groupe WHERE code = 'ERP'), false, true;
INSERT INTO lien_om_profil_groupe SELECT nextval('lien_om_profil_groupe_seq'),(SELECT om_profil FROM om_profil WHERE libelle = 'GUICHET UNIQUE'), (SELECT groupe FROM groupe WHERE code = 'ADS'), false, true;
INSERT INTO lien_om_profil_groupe SELECT nextval('lien_om_profil_groupe_seq'),(SELECT om_profil FROM om_profil WHERE libelle = 'GUICHET UNIQUE'), (SELECT groupe FROM groupe WHERE code = 'CU'), false, true;
INSERT INTO lien_om_profil_groupe SELECT nextval('lien_om_profil_groupe_seq'),(SELECT om_profil FROM om_profil WHERE libelle = 'GUICHET UNIQUE'), (SELECT groupe FROM groupe WHERE code = 'RU'), false, true;
INSERT INTO lien_om_profil_groupe SELECT nextval('lien_om_profil_groupe_seq'),(SELECT om_profil FROM om_profil WHERE libelle = 'GUICHET UNIQUE'), (SELECT groupe FROM groupe WHERE code = 'ERP'), false, true;
INSERT INTO lien_om_profil_groupe SELECT nextval('lien_om_profil_groupe_seq'),(SELECT om_profil FROM om_profil WHERE libelle = 'CELLULE SUIVI'), (SELECT groupe FROM groupe WHERE code = 'ADS'), false, true;
INSERT INTO lien_om_profil_groupe SELECT nextval('lien_om_profil_groupe_seq'),(SELECT om_profil FROM om_profil WHERE libelle = 'CELLULE SUIVI'), (SELECT groupe FROM groupe WHERE code = 'CU'), false, true;
INSERT INTO lien_om_profil_groupe SELECT nextval('lien_om_profil_groupe_seq'),(SELECT om_profil FROM om_profil WHERE libelle = 'CELLULE SUIVI'), (SELECT groupe FROM groupe WHERE code = 'RU'), false, true;
INSERT INTO lien_om_profil_groupe SELECT nextval('lien_om_profil_groupe_seq'),(SELECT om_profil FROM om_profil WHERE libelle = 'CELLULE SUIVI'), (SELECT groupe FROM groupe WHERE code = 'ERP'), false, true;
INSERT INTO lien_om_profil_groupe SELECT nextval('lien_om_profil_groupe_seq'),(SELECT om_profil FROM om_profil WHERE libelle = 'GUICHET ET SUIVI'), (SELECT groupe FROM groupe WHERE code = 'ADS'), false, true;
INSERT INTO lien_om_profil_groupe SELECT nextval('lien_om_profil_groupe_seq'),(SELECT om_profil FROM om_profil WHERE libelle = 'GUICHET ET SUIVI'), (SELECT groupe FROM groupe WHERE code = 'CU'), false, true;
INSERT INTO lien_om_profil_groupe SELECT nextval('lien_om_profil_groupe_seq'),(SELECT om_profil FROM om_profil WHERE libelle = 'GUICHET ET SUIVI'), (SELECT groupe FROM groupe WHERE code = 'RU'), false, true;
INSERT INTO lien_om_profil_groupe SELECT nextval('lien_om_profil_groupe_seq'),(SELECT om_profil FROM om_profil WHERE libelle = 'GUICHET ET SUIVI'), (SELECT groupe FROM groupe WHERE code = 'ERP'), false, true;
INSERT INTO lien_om_profil_groupe SELECT nextval('lien_om_profil_groupe_seq'),(SELECT om_profil FROM om_profil WHERE libelle = 'SERVICE CONSULTÉ'), (SELECT groupe FROM groupe WHERE code = 'ADS'), false, true;
INSERT INTO lien_om_profil_groupe SELECT nextval('lien_om_profil_groupe_seq'),(SELECT om_profil FROM om_profil WHERE libelle = 'SERVICE CONSULTÉ'), (SELECT groupe FROM groupe WHERE code = 'CU'), false, true;
INSERT INTO lien_om_profil_groupe SELECT nextval('lien_om_profil_groupe_seq'),(SELECT om_profil FROM om_profil WHERE libelle = 'SERVICE CONSULTÉ'), (SELECT groupe FROM groupe WHERE code = 'RU'), false, true;
INSERT INTO lien_om_profil_groupe SELECT nextval('lien_om_profil_groupe_seq'),(SELECT om_profil FROM om_profil WHERE libelle = 'SERVICE CONSULTÉ'), (SELECT groupe FROM groupe WHERE code = 'ERP'), false, true;
INSERT INTO lien_om_profil_groupe SELECT nextval('lien_om_profil_groupe_seq'),(SELECT om_profil FROM om_profil WHERE libelle = 'SERVICE CONSULTÉ INTERNE'), (SELECT groupe FROM groupe WHERE code = 'ADS'), false, true;
INSERT INTO lien_om_profil_groupe SELECT nextval('lien_om_profil_groupe_seq'),(SELECT om_profil FROM om_profil WHERE libelle = 'SERVICE CONSULTÉ INTERNE'), (SELECT groupe FROM groupe WHERE code = 'CU'), false, true;
INSERT INTO lien_om_profil_groupe SELECT nextval('lien_om_profil_groupe_seq'),(SELECT om_profil FROM om_profil WHERE libelle = 'SERVICE CONSULTÉ INTERNE'), (SELECT groupe FROM groupe WHERE code = 'RU'), false, true;
INSERT INTO lien_om_profil_groupe SELECT nextval('lien_om_profil_groupe_seq'),(SELECT om_profil FROM om_profil WHERE libelle = 'SERVICE CONSULTÉ INTERNE'), (SELECT groupe FROM groupe WHERE code = 'ERP'), false, true;
INSERT INTO lien_om_profil_groupe SELECT nextval('lien_om_profil_groupe_seq'),(SELECT om_profil FROM om_profil WHERE libelle = 'VISUALISATION DA'), (SELECT groupe FROM groupe WHERE code = 'ADS'), false, true;
INSERT INTO lien_om_profil_groupe SELECT nextval('lien_om_profil_groupe_seq'),(SELECT om_profil FROM om_profil WHERE libelle = 'VISUALISATION DA'), (SELECT groupe FROM groupe WHERE code = 'CU'), false, true;
INSERT INTO lien_om_profil_groupe SELECT nextval('lien_om_profil_groupe_seq'),(SELECT om_profil FROM om_profil WHERE libelle = 'VISUALISATION DA'), (SELECT groupe FROM groupe WHERE code = 'RU'), false, true;
INSERT INTO lien_om_profil_groupe SELECT nextval('lien_om_profil_groupe_seq'),(SELECT om_profil FROM om_profil WHERE libelle = 'VISUALISATION DA'), (SELECT groupe FROM groupe WHERE code = 'ERP'), false, true;
INSERT INTO lien_om_profil_groupe SELECT nextval('lien_om_profil_groupe_seq'),(SELECT om_profil FROM om_profil WHERE libelle = 'VISUALISATION DA et DI'), (SELECT groupe FROM groupe WHERE code = 'ADS'), false, true;
INSERT INTO lien_om_profil_groupe SELECT nextval('lien_om_profil_groupe_seq'),(SELECT om_profil FROM om_profil WHERE libelle = 'VISUALISATION DA et DI'), (SELECT groupe FROM groupe WHERE code = 'CU'), false, true;
INSERT INTO lien_om_profil_groupe SELECT nextval('lien_om_profil_groupe_seq'),(SELECT om_profil FROM om_profil WHERE libelle = 'VISUALISATION DA et DI'), (SELECT groupe FROM groupe WHERE code = 'RU'), false, true;
INSERT INTO lien_om_profil_groupe SELECT nextval('lien_om_profil_groupe_seq'),(SELECT om_profil FROM om_profil WHERE libelle = 'VISUALISATION DA et DI'), (SELECT groupe FROM groupe WHERE code = 'ERP'), false, true;

-- Ajout de tous les groupes au profils contentieux
INSERT INTO lien_om_profil_groupe SELECT nextval('lien_om_profil_groupe_seq'),(SELECT om_profil FROM om_profil WHERE libelle = 'ASSISTANTE'), (SELECT groupe FROM groupe WHERE code = 'ADS'), false, false;
INSERT INTO lien_om_profil_groupe SELECT nextval('lien_om_profil_groupe_seq'),(SELECT om_profil FROM om_profil WHERE libelle = 'ASSISTANTE'), (SELECT groupe FROM groupe WHERE code = 'CTX'), true, true;
INSERT INTO lien_om_profil_groupe SELECT nextval('lien_om_profil_groupe_seq'),(SELECT om_profil FROM om_profil WHERE libelle = 'ASSISTANTE'), (SELECT groupe FROM groupe WHERE code = 'CU'), false, false;
INSERT INTO lien_om_profil_groupe SELECT nextval('lien_om_profil_groupe_seq'),(SELECT om_profil FROM om_profil WHERE libelle = 'ASSISTANTE'), (SELECT groupe FROM groupe WHERE code = 'RU'), false, false;
INSERT INTO lien_om_profil_groupe SELECT nextval('lien_om_profil_groupe_seq'),(SELECT om_profil FROM om_profil WHERE libelle = 'ASSISTANTE'), (SELECT groupe FROM groupe WHERE code = 'ERP'), false, false;
INSERT INTO lien_om_profil_groupe SELECT nextval('lien_om_profil_groupe_seq'),(SELECT om_profil FROM om_profil WHERE libelle = 'CHEF DE SERVICE CONTENTIEUX'), (SELECT groupe FROM groupe WHERE code = 'ADS'), false, false;
INSERT INTO lien_om_profil_groupe SELECT nextval('lien_om_profil_groupe_seq'),(SELECT om_profil FROM om_profil WHERE libelle = 'CHEF DE SERVICE CONTENTIEUX'), (SELECT groupe FROM groupe WHERE code = 'CTX'), true, true;
INSERT INTO lien_om_profil_groupe SELECT nextval('lien_om_profil_groupe_seq'),(SELECT om_profil FROM om_profil WHERE libelle = 'CHEF DE SERVICE CONTENTIEUX'), (SELECT groupe FROM groupe WHERE code = 'CU'), false, false;
INSERT INTO lien_om_profil_groupe SELECT nextval('lien_om_profil_groupe_seq'),(SELECT om_profil FROM om_profil WHERE libelle = 'CHEF DE SERVICE CONTENTIEUX'), (SELECT groupe FROM groupe WHERE code = 'RU'), false, false;
INSERT INTO lien_om_profil_groupe SELECT nextval('lien_om_profil_groupe_seq'),(SELECT om_profil FROM om_profil WHERE libelle = 'CHEF DE SERVICE CONTENTIEUX'), (SELECT groupe FROM groupe WHERE code = 'ERP'), false, false;
INSERT INTO lien_om_profil_groupe SELECT nextval('lien_om_profil_groupe_seq'),(SELECT om_profil FROM om_profil WHERE libelle = 'JURISTE'), (SELECT groupe FROM groupe WHERE code = 'ADS'), false, false;
INSERT INTO lien_om_profil_groupe SELECT nextval('lien_om_profil_groupe_seq'),(SELECT om_profil FROM om_profil WHERE libelle = 'JURISTE'), (SELECT groupe FROM groupe WHERE code = 'CTX'), true, true;
INSERT INTO lien_om_profil_groupe SELECT nextval('lien_om_profil_groupe_seq'),(SELECT om_profil FROM om_profil WHERE libelle = 'JURISTE'), (SELECT groupe FROM groupe WHERE code = 'CU'), false, false;
INSERT INTO lien_om_profil_groupe SELECT nextval('lien_om_profil_groupe_seq'),(SELECT om_profil FROM om_profil WHERE libelle = 'JURISTE'), (SELECT groupe FROM groupe WHERE code = 'RU'), false, false;
INSERT INTO lien_om_profil_groupe SELECT nextval('lien_om_profil_groupe_seq'),(SELECT om_profil FROM om_profil WHERE libelle = 'JURISTE'), (SELECT groupe FROM groupe WHERE code = 'ERP'), false, false;
INSERT INTO lien_om_profil_groupe SELECT nextval('lien_om_profil_groupe_seq'),(SELECT om_profil FROM om_profil WHERE libelle = 'TECHNICIEN'), (SELECT groupe FROM groupe WHERE code = 'ADS'), false, false;
INSERT INTO lien_om_profil_groupe SELECT nextval('lien_om_profil_groupe_seq'),(SELECT om_profil FROM om_profil WHERE libelle = 'TECHNICIEN'), (SELECT groupe FROM groupe WHERE code = 'CTX'), true, true;
INSERT INTO lien_om_profil_groupe SELECT nextval('lien_om_profil_groupe_seq'),(SELECT om_profil FROM om_profil WHERE libelle = 'TECHNICIEN'), (SELECT groupe FROM groupe WHERE code = 'CU'), false, false;
INSERT INTO lien_om_profil_groupe SELECT nextval('lien_om_profil_groupe_seq'),(SELECT om_profil FROM om_profil WHERE libelle = 'TECHNICIEN'), (SELECT groupe FROM groupe WHERE code = 'RU'), false, false;
INSERT INTO lien_om_profil_groupe SELECT nextval('lien_om_profil_groupe_seq'),(SELECT om_profil FROM om_profil WHERE libelle = 'TECHNICIEN'), (SELECT groupe FROM groupe WHERE code = 'ERP'), false, false;
INSERT INTO lien_om_profil_groupe SELECT nextval('lien_om_profil_groupe_seq'),(SELECT om_profil FROM om_profil WHERE libelle = 'RESPONSABLE DIVISION INFRACTION'), (SELECT groupe FROM groupe WHERE code = 'ADS'), false, false;
INSERT INTO lien_om_profil_groupe SELECT nextval('lien_om_profil_groupe_seq'),(SELECT om_profil FROM om_profil WHERE libelle = 'RESPONSABLE DIVISION INFRACTION'), (SELECT groupe FROM groupe WHERE code = 'CTX'), true, true;
INSERT INTO lien_om_profil_groupe SELECT nextval('lien_om_profil_groupe_seq'),(SELECT om_profil FROM om_profil WHERE libelle = 'RESPONSABLE DIVISION INFRACTION'), (SELECT groupe FROM groupe WHERE code = 'CU'), false, false;
INSERT INTO lien_om_profil_groupe SELECT nextval('lien_om_profil_groupe_seq'),(SELECT om_profil FROM om_profil WHERE libelle = 'RESPONSABLE DIVISION INFRACTION'), (SELECT groupe FROM groupe WHERE code = 'RU'), false, false;
INSERT INTO lien_om_profil_groupe SELECT nextval('lien_om_profil_groupe_seq'),(SELECT om_profil FROM om_profil WHERE libelle = 'RESPONSABLE DIVISION INFRACTION'), (SELECT groupe FROM groupe WHERE code = 'ERP'), false, false;
INSERT INTO lien_om_profil_groupe SELECT nextval('lien_om_profil_groupe_seq'),(SELECT om_profil FROM om_profil WHERE libelle = 'DIRECTION CONSULTATION'), (SELECT groupe FROM groupe WHERE code = 'ADS'), false, false;
INSERT INTO lien_om_profil_groupe SELECT nextval('lien_om_profil_groupe_seq'),(SELECT om_profil FROM om_profil WHERE libelle = 'DIRECTION CONSULTATION'), (SELECT groupe FROM groupe WHERE code = 'CTX'), true, true;
INSERT INTO lien_om_profil_groupe SELECT nextval('lien_om_profil_groupe_seq'),(SELECT om_profil FROM om_profil WHERE libelle = 'DIRECTION CONSULTATION'), (SELECT groupe FROM groupe WHERE code = 'CU'), false, false;
INSERT INTO lien_om_profil_groupe SELECT nextval('lien_om_profil_groupe_seq'),(SELECT om_profil FROM om_profil WHERE libelle = 'DIRECTION CONSULTATION'), (SELECT groupe FROM groupe WHERE code = 'RU'), false, false;
INSERT INTO lien_om_profil_groupe SELECT nextval('lien_om_profil_groupe_seq'),(SELECT om_profil FROM om_profil WHERE libelle = 'DIRECTION CONSULTATION'), (SELECT groupe FROM groupe WHERE code = 'ERP'), false, false;
INSERT INTO lien_om_profil_groupe SELECT nextval('lien_om_profil_groupe_seq'),(SELECT om_profil FROM om_profil WHERE libelle = 'DIRECTION RECOURS'), (SELECT groupe FROM groupe WHERE code = 'ADS'), false, false;
INSERT INTO lien_om_profil_groupe SELECT nextval('lien_om_profil_groupe_seq'),(SELECT om_profil FROM om_profil WHERE libelle = 'DIRECTION RECOURS'), (SELECT groupe FROM groupe WHERE code = 'CTX'), true, true;
INSERT INTO lien_om_profil_groupe SELECT nextval('lien_om_profil_groupe_seq'),(SELECT om_profil FROM om_profil WHERE libelle = 'DIRECTION RECOURS'), (SELECT groupe FROM groupe WHERE code = 'CU'), false, false;
INSERT INTO lien_om_profil_groupe SELECT nextval('lien_om_profil_groupe_seq'),(SELECT om_profil FROM om_profil WHERE libelle = 'DIRECTION RECOURS'), (SELECT groupe FROM groupe WHERE code = 'RU'), false, false;
INSERT INTO lien_om_profil_groupe SELECT nextval('lien_om_profil_groupe_seq'),(SELECT om_profil FROM om_profil WHERE libelle = 'DIRECTION RECOURS'), (SELECT groupe FROM groupe WHERE code = 'ERP'), false, false;
INSERT INTO lien_om_profil_groupe SELECT nextval('lien_om_profil_groupe_seq'),(SELECT om_profil FROM om_profil WHERE libelle = 'DIRECTION INFRACTION'), (SELECT groupe FROM groupe WHERE code = 'ADS'), false, false;
INSERT INTO lien_om_profil_groupe SELECT nextval('lien_om_profil_groupe_seq'),(SELECT om_profil FROM om_profil WHERE libelle = 'DIRECTION INFRACTION'), (SELECT groupe FROM groupe WHERE code = 'CTX'), true, true;
INSERT INTO lien_om_profil_groupe SELECT nextval('lien_om_profil_groupe_seq'),(SELECT om_profil FROM om_profil WHERE libelle = 'DIRECTION INFRACTION'), (SELECT groupe FROM groupe WHERE code = 'CU'), false, false;
INSERT INTO lien_om_profil_groupe SELECT nextval('lien_om_profil_groupe_seq'),(SELECT om_profil FROM om_profil WHERE libelle = 'DIRECTION INFRACTION'), (SELECT groupe FROM groupe WHERE code = 'RU'), false, false;
INSERT INTO lien_om_profil_groupe SELECT nextval('lien_om_profil_groupe_seq'),(SELECT om_profil FROM om_profil WHERE libelle = 'DIRECTION INFRACTION'), (SELECT groupe FROM groupe WHERE code = 'ERP'), false, false;

-- Ajout des groupes aux profils administrateur
INSERT INTO lien_om_profil_groupe SELECT nextval('lien_om_profil_groupe_seq'),(SELECT om_profil FROM om_profil WHERE libelle = 'ADMINISTRATEUR TECHNIQUE ET FONCTIONNEL'), (SELECT groupe FROM groupe WHERE code = 'ADS'), true, true;
INSERT INTO lien_om_profil_groupe SELECT nextval('lien_om_profil_groupe_seq'),(SELECT om_profil FROM om_profil WHERE libelle = 'ADMINISTRATEUR TECHNIQUE ET FONCTIONNEL'), (SELECT groupe FROM groupe WHERE code = 'CTX'), true, true;
INSERT INTO lien_om_profil_groupe SELECT nextval('lien_om_profil_groupe_seq'),(SELECT om_profil FROM om_profil WHERE libelle = 'ADMINISTRATEUR TECHNIQUE ET FONCTIONNEL'), (SELECT groupe FROM groupe WHERE code = 'CU'), true, true;
INSERT INTO lien_om_profil_groupe SELECT nextval('lien_om_profil_groupe_seq'),(SELECT om_profil FROM om_profil WHERE libelle = 'ADMINISTRATEUR TECHNIQUE ET FONCTIONNEL'), (SELECT groupe FROM groupe WHERE code = 'RU'), true, true;
INSERT INTO lien_om_profil_groupe SELECT nextval('lien_om_profil_groupe_seq'),(SELECT om_profil FROM om_profil WHERE libelle = 'ADMINISTRATEUR TECHNIQUE ET FONCTIONNEL'), (SELECT groupe FROM groupe WHERE code = 'ERP'), true, true;
INSERT INTO lien_om_profil_groupe SELECT nextval('lien_om_profil_groupe_seq'),(SELECT om_profil FROM om_profil WHERE libelle = 'ADMINISTRATEUR FONCTIONNEL'), (SELECT groupe FROM groupe WHERE code = 'ADS'), true, true;
INSERT INTO lien_om_profil_groupe SELECT nextval('lien_om_profil_groupe_seq'),(SELECT om_profil FROM om_profil WHERE libelle = 'ADMINISTRATEUR FONCTIONNEL'), (SELECT groupe FROM groupe WHERE code = 'CU'), true, true;
INSERT INTO lien_om_profil_groupe SELECT nextval('lien_om_profil_groupe_seq'),(SELECT om_profil FROM om_profil WHERE libelle = 'ADMINISTRATEUR FONCTIONNEL'), (SELECT groupe FROM groupe WHERE code = 'RU'), true, true;
INSERT INTO lien_om_profil_groupe SELECT nextval('lien_om_profil_groupe_seq'),(SELECT om_profil FROM om_profil WHERE libelle = 'ADMINISTRATEUR FONCTIONNEL'), (SELECT groupe FROM groupe WHERE code = 'ERP'), true, true;
INSERT INTO lien_om_profil_groupe SELECT nextval('lien_om_profil_groupe_seq'),(SELECT om_profil FROM om_profil WHERE libelle = 'ADMINISTRATEUR GENERAL'), (SELECT groupe FROM groupe WHERE code = 'ADS'), true, true;
INSERT INTO lien_om_profil_groupe SELECT nextval('lien_om_profil_groupe_seq'),(SELECT om_profil FROM om_profil WHERE libelle = 'ADMINISTRATEUR GENERAL'), (SELECT groupe FROM groupe WHERE code = 'CU'), true, true;
INSERT INTO lien_om_profil_groupe SELECT nextval('lien_om_profil_groupe_seq'),(SELECT om_profil FROM om_profil WHERE libelle = 'ADMINISTRATEUR GENERAL'), (SELECT groupe FROM groupe WHERE code = 'RU'), true, true;
INSERT INTO lien_om_profil_groupe SELECT nextval('lien_om_profil_groupe_seq'),(SELECT om_profil FROM om_profil WHERE libelle = 'ADMINISTRATEUR GENERAL'), (SELECT groupe FROM groupe WHERE code = 'ERP'), true, true;

--
-- END - Ajout des liaisons
--

-- Population de la table
INSERT INTO lien_document_numerise_type_instructeur_qualite
SELECT 
    nextval('lien_document_numerise_type_instructeur_qualite_seq'),
    document_numerise_type,
    (SELECT instructeur_qualite FROM instructeur_qualite WHERE code = 'instr')
FROM document_numerise_type
WHERE ajout_instructeur = true;

-- Suppression du champ ajout_instructeur de la table document_numerise_type
ALTER TABLE document_numerise_type DROP COLUMN ajout_instructeur;

--
-- START - Ajout des droits
--

-- Ajout des droits sur la catégorie Contentieux
INSERT INTO om_droit SELECT nextval('om_droit_seq'), 'menu_contentieux',(SELECT om_profil FROM om_profil WHERE libelle = 'ADMINISTRATEUR TECHNIQUE ET FONCTIONNEL');
INSERT INTO om_droit SELECT nextval('om_droit_seq'), 'menu_contentieux_dashboard',(SELECT om_profil FROM om_profil WHERE libelle = 'ADMINISTRATEUR TECHNIQUE ET FONCTIONNEL');
INSERT INTO om_droit SELECT nextval('om_droit_seq'), 'dossier_contentieux_mes_infractions',(SELECT om_profil FROM om_profil WHERE libelle = 'ADMINISTRATEUR TECHNIQUE ET FONCTIONNEL');
INSERT INTO om_droit SELECT nextval('om_droit_seq'), 'dossier_contentieux_toutes_infractions',(SELECT om_profil FROM om_profil WHERE libelle = 'ADMINISTRATEUR TECHNIQUE ET FONCTIONNEL');
INSERT INTO om_droit SELECT nextval('om_droit_seq'), 'dossier_contentieux_mes_recours',(SELECT om_profil FROM om_profil WHERE libelle = 'ADMINISTRATEUR TECHNIQUE ET FONCTIONNEL');
INSERT INTO om_droit SELECT nextval('om_droit_seq'), 'dossier_contentieux_tous_recours',(SELECT om_profil FROM om_profil WHERE libelle = 'ADMINISTRATEUR TECHNIQUE ET FONCTIONNEL');

-- Ajout des droits sur les tables de référence Contentieux
INSERT INTO om_droit SELECT nextval('om_droit_seq'), 'objet_recours',(SELECT om_profil FROM om_profil WHERE libelle = 'ADMINISTRATEUR TECHNIQUE ET FONCTIONNEL');
INSERT INTO om_droit SELECT nextval('om_droit_seq'), 'moyen_souleve',(SELECT om_profil FROM om_profil WHERE libelle = 'ADMINISTRATEUR TECHNIQUE ET FONCTIONNEL');
INSERT INTO om_droit SELECT nextval('om_droit_seq'), 'moyen_retenu_juge',(SELECT om_profil FROM om_profil WHERE libelle = 'ADMINISTRATEUR TECHNIQUE ET FONCTIONNEL');

-- Ajout du droit sur la table de qualité des instructeurs
INSERT INTO om_droit SELECT nextval('om_droit_seq'), 'instructeur_qualite',(SELECT om_profil FROM om_profil WHERE libelle = 'ADMINISTRATEUR TECHNIQUE ET FONCTIONNEL');

-- Ajout des droits pour les demandeurs
INSERT INTO om_droit SELECT nextval('om_droit_seq'), 'plaignant',(SELECT om_profil FROM om_profil WHERE libelle = 'ADMINISTRATEUR TECHNIQUE ET FONCTIONNEL');
INSERT INTO om_droit SELECT nextval('om_droit_seq'), 'contrevenant',(SELECT om_profil FROM om_profil WHERE libelle = 'ADMINISTRATEUR TECHNIQUE ET FONCTIONNEL');
INSERT INTO om_droit SELECT nextval('om_droit_seq'), 'requerant',(SELECT om_profil FROM om_profil WHERE libelle = 'ADMINISTRATEUR TECHNIQUE ET FONCTIONNEL');
INSERT INTO om_droit SELECT nextval('om_droit_seq'), 'avocat',(SELECT om_profil FROM om_profil WHERE libelle = 'ADMINISTRATEUR TECHNIQUE ET FONCTIONNEL');
INSERT INTO om_droit SELECT nextval('om_droit_seq'), 'lien_om_profil_groupe',(SELECT om_profil FROM om_profil WHERE libelle = 'ADMINISTRATEUR TECHNIQUE ET FONCTIONNEL');
INSERT INTO om_droit SELECT nextval('om_droit_seq'), 'lien_om_utilisateur_groupe',(SELECT om_profil FROM om_profil WHERE libelle = 'ADMINISTRATEUR TECHNIQUE ET FONCTIONNEL');

-- Modification des données techniques des lots
INSERT INTO om_droit (om_droit, libelle, om_profil)
SELECT nextval('om_droit_seq'),'lot_donnees_techniques_modifier',(SELECT om_profil FROM om_profil WHERE libelle = 'QUALIFICATEUR')
WHERE
    NOT EXISTS (
        SELECT om_droit FROM om_droit WHERE libelle = 'lot_donnees_techniques_modifier' AND om_profil = (SELECT om_profil FROM om_profil WHERE libelle = 'QUALIFICATEUR')
    );
INSERT INTO om_droit (om_droit, libelle, om_profil)
SELECT nextval('om_droit_seq'),'lot_donnees_techniques_modifier',(SELECT om_profil FROM om_profil WHERE libelle = 'INSTRUCTEUR SERVICE')
WHERE
NOT EXISTS (
    SELECT om_droit FROM om_droit WHERE libelle = 'lot_donnees_techniques_modifier' AND om_profil = (SELECT om_profil FROM om_profil WHERE libelle = 'INSTRUCTEUR SERVICE')
);
INSERT INTO om_droit (om_droit, libelle, om_profil)
SELECT nextval('om_droit_seq'),'lot_donnees_techniques_modifier',(SELECT om_profil FROM om_profil WHERE libelle = 'DIVISIONNAIRE')
WHERE
    NOT EXISTS (
        SELECT om_droit FROM om_droit WHERE libelle = 'lot_donnees_techniques_modifier' AND om_profil = (SELECT om_profil FROM om_profil WHERE libelle = 'DIVISIONNAIRE')
    );
INSERT INTO om_droit (om_droit, libelle, om_profil)
SELECT nextval('om_droit_seq'),'lot_donnees_techniques_modifier',(SELECT om_profil FROM om_profil WHERE libelle = 'INSTRUCTEUR')
WHERE
NOT EXISTS (
    SELECT om_droit FROM om_droit WHERE libelle = 'lot_donnees_techniques_modifier' AND om_profil = (SELECT om_profil FROM om_profil WHERE libelle = 'INSTRUCTEUR')
);

-- Retour d'avis de commission
INSERT INTO om_droit (om_droit, libelle, om_profil)
SELECT nextval('om_droit_seq'),'dossier_commission_modifier_bypass',(SELECT om_profil FROM om_profil WHERE libelle = 'CELLULE SUIVI')
WHERE
NOT EXISTS (
    SELECT om_droit FROM om_droit WHERE libelle = 'dossier_commission_modifier_bypass' AND om_profil = (SELECT om_profil FROM om_profil WHERE libelle = 'CELLULE SUIVI')
);
INSERT INTO om_droit (om_droit, libelle, om_profil)
SELECT nextval('om_droit_seq'),'dossier_commission_modifier_bypass',(SELECT om_profil FROM om_profil WHERE libelle = 'GUICHET ET SUIVI')
WHERE
NOT EXISTS (
    SELECT om_droit FROM om_droit WHERE libelle = 'dossier_commission_modifier_bypass' AND om_profil = (SELECT om_profil FROM om_profil WHERE libelle = 'GUICHET ET SUIVI')
);
-- Ajout de contrainte qualificateur
INSERT INTO om_droit (om_droit, libelle, om_profil)
SELECT nextval('om_droit_seq'),'dossier_contrainte_ajouter_bypass',(SELECT om_profil FROM om_profil WHERE libelle = 'QUALIFICATEUR')
WHERE
NOT EXISTS (
    SELECT om_droit FROM om_droit WHERE libelle = 'dossier_contrainte_ajouter_bypass' AND om_profil = (SELECT om_profil FROM om_profil WHERE libelle = 'QUALIFICATEUR')
);

-- Récupération de l'affichage formulaire depuis la demande
INSERT INTO om_droit (om_droit, libelle, om_profil)
SELECT nextval('om_droit_seq'),'dossier_autorisation_type_detaille_aff_form',(SELECT om_profil FROM om_profil WHERE libelle = 'GUICHET UNIQUE')
WHERE
NOT EXISTS (
    SELECT om_droit FROM om_droit WHERE libelle = 'dossier_autorisation_type_detaille_aff_form' AND om_profil = (SELECT om_profil FROM om_profil WHERE libelle = 'GUICHET UNIQUE')
);
INSERT INTO om_droit (om_droit, libelle, om_profil)
SELECT nextval('om_droit_seq'),'dossier_autorisation_type_detaille_aff_form',(SELECT om_profil FROM om_profil WHERE libelle = 'GUICHET ET SUIVI')
WHERE
NOT EXISTS (
    SELECT om_droit FROM om_droit WHERE libelle = 'dossier_autorisation_type_detaille_aff_form' AND om_profil = (SELECT om_profil FROM om_profil WHERE libelle = 'GUICHET ET SUIVI')
);
INSERT INTO om_droit (om_droit, libelle, om_profil)
SELECT nextval('om_droit_seq'),'dossier_autorisation_type_detaille_aff_form',(SELECT om_profil FROM om_profil WHERE libelle = 'QUALIFICATEUR')
WHERE
NOT EXISTS (
    SELECT om_droit FROM om_droit WHERE libelle = 'dossier_autorisation_type_detaille_aff_form' AND om_profil = (SELECT om_profil FROM om_profil WHERE libelle = 'QUALIFICATEUR')
);
INSERT INTO om_droit (om_droit, libelle, om_profil)
SELECT nextval('om_droit_seq'),'dossier_autorisation_type_detaille_aff_form',(SELECT om_profil FROM om_profil WHERE libelle = 'DIVISIONNAIRE')
WHERE
NOT EXISTS (
    SELECT om_droit FROM om_droit WHERE libelle = 'dossier_autorisation_type_detaille_aff_form' AND om_profil = (SELECT om_profil FROM om_profil WHERE libelle = 'DIVISIONNAIRE')
);
INSERT INTO om_droit (om_droit, libelle, om_profil)
SELECT nextval('om_droit_seq'),'dossier_autorisation_type_detaille_aff_form',(SELECT om_profil FROM om_profil WHERE libelle = 'ADMINISTRATEUR FONCTIONNEL')
WHERE
NOT EXISTS (
    SELECT om_droit FROM om_droit WHERE libelle = 'dossier_autorisation_type_detaille_aff_form' AND om_profil = (SELECT om_profil FROM om_profil WHERE libelle = 'ADMINISTRATEUR FONCTIONNEL')
);
INSERT INTO om_droit (om_droit, libelle, om_profil)
SELECT nextval('om_droit_seq'),'dossier_autorisation_type_detaille_aff_form',(SELECT om_profil FROM om_profil WHERE libelle = 'ADMINISTRATEUR GENERAL')
WHERE
NOT EXISTS (
    SELECT om_droit FROM om_droit WHERE libelle = 'dossier_autorisation_type_detaille_aff_form' AND om_profil = (SELECT om_profil FROM om_profil WHERE libelle = 'ADMINISTRATEUR GENERAL')
);
INSERT INTO om_droit (om_droit, libelle, om_profil)
SELECT nextval('om_droit_seq'),'dossier_autorisation_type_detaille_aff_form',(SELECT om_profil FROM om_profil WHERE libelle = 'INSTRUCTEUR POLYVALENT COMMUNE')
WHERE
NOT EXISTS (
    SELECT om_droit FROM om_droit WHERE libelle = 'dossier_autorisation_type_detaille_aff_form' AND om_profil = (SELECT om_profil FROM om_profil WHERE libelle = 'INSTRUCTEUR POLYVALENT COMMUNE')
);
INSERT INTO om_droit (om_droit, libelle, om_profil)
SELECT nextval('om_droit_seq'),'dossier_autorisation_type_detaille_aff_form',(SELECT om_profil FROM om_profil WHERE libelle = 'INSTRUCTEUR POLYVALENT')
WHERE
NOT EXISTS (
    SELECT om_droit FROM om_droit WHERE libelle = 'dossier_autorisation_type_detaille_aff_form' AND om_profil = (SELECT om_profil FROM om_profil WHERE libelle = 'INSTRUCTEUR POLYVALENT')
);
INSERT INTO om_droit (om_droit, libelle, om_profil)
SELECT nextval('om_droit_seq'),'dossier_autorisation_type_detaille_aff_form',(SELECT om_profil FROM om_profil WHERE libelle = 'ASSISTANTE')
WHERE
NOT EXISTS (
    SELECT om_droit FROM om_droit WHERE libelle = 'dossier_autorisation_type_detaille_aff_form' AND om_profil = (SELECT om_profil FROM om_profil WHERE libelle = 'ASSISTANTE')
);
INSERT INTO om_droit (om_droit, libelle, om_profil)
SELECT nextval('om_droit_seq'),'dossier_autorisation_type_detaille_aff_form',(SELECT om_profil FROM om_profil WHERE libelle = 'TECHNICIEN')
WHERE
NOT EXISTS (
    SELECT om_droit FROM om_droit WHERE libelle = 'dossier_autorisation_type_detaille_aff_form' AND om_profil = (SELECT om_profil FROM om_profil WHERE libelle = 'TECHNICIEN')
);
-- Ajout des droits de création de dossiers contentieux
INSERT INTO om_droit (om_droit, libelle, om_profil)
SELECT nextval('om_droit_seq'),'demande_nouveau_dossier_contentieux_ajouter',(SELECT om_profil FROM om_profil WHERE libelle = 'ASSISTANTE')
WHERE
NOT EXISTS (
    SELECT om_droit FROM om_droit WHERE libelle = 'demande_nouveau_dossier_contentieux_ajouter' AND om_profil = (SELECT om_profil FROM om_profil WHERE libelle = 'ASSISTANTE')
);

INSERT INTO om_droit (om_droit, libelle, om_profil)
SELECT nextval('om_droit_seq'),'demande_nouveau_dossier_contentieux_ajouter',(SELECT om_profil FROM om_profil WHERE libelle = 'TECHNICIEN')
WHERE
NOT EXISTS (
    SELECT om_droit FROM om_droit WHERE libelle = 'demande_nouveau_dossier_contentieux_ajouter' AND om_profil = (SELECT om_profil FROM om_profil WHERE libelle = 'TECHNICIEN')
);

INSERT INTO om_droit (om_droit, libelle, om_profil)
SELECT nextval('om_droit_seq'),'avocat_ajouter',(SELECT om_profil FROM om_profil WHERE libelle = 'ASSISTANTE')
WHERE
NOT EXISTS (
    SELECT om_droit FROM om_droit WHERE libelle = 'avocat_ajouter' AND om_profil = (SELECT om_profil FROM om_profil WHERE libelle = 'ASSISTANTE')
);

INSERT INTO om_droit (om_droit, libelle, om_profil)
SELECT nextval('om_droit_seq'),'avocat_ajouter',(SELECT om_profil FROM om_profil WHERE libelle = 'TECHNICIEN')
WHERE
NOT EXISTS (
    SELECT om_droit FROM om_droit WHERE libelle = 'avocat_ajouter' AND om_profil = (SELECT om_profil FROM om_profil WHERE libelle = 'TECHNICIEN')
);

INSERT INTO om_droit (om_droit, libelle, om_profil)
SELECT nextval('om_droit_seq'),'contrevenant_ajouter',(SELECT om_profil FROM om_profil WHERE libelle = 'ASSISTANTE')
WHERE
NOT EXISTS (
    SELECT om_droit FROM om_droit WHERE libelle = 'contrevenant_ajouter' AND om_profil = (SELECT om_profil FROM om_profil WHERE libelle = 'ASSISTANTE')
);

INSERT INTO om_droit (om_droit, libelle, om_profil)
SELECT nextval('om_droit_seq'),'contrevenant_ajouter',(SELECT om_profil FROM om_profil WHERE libelle = 'TECHNICIEN')
WHERE
NOT EXISTS (
    SELECT om_droit FROM om_droit WHERE libelle = 'contrevenant_ajouter' AND om_profil = (SELECT om_profil FROM om_profil WHERE libelle = 'TECHNICIEN')
);

INSERT INTO om_droit (om_droit, libelle, om_profil)
SELECT nextval('om_droit_seq'),'requerant_ajouter',(SELECT om_profil FROM om_profil WHERE libelle = 'ASSISTANTE')
WHERE
NOT EXISTS (
    SELECT om_droit FROM om_droit WHERE libelle = 'requerant_ajouter' AND om_profil = (SELECT om_profil FROM om_profil WHERE libelle = 'ASSISTANTE')
);

INSERT INTO om_droit (om_droit, libelle, om_profil)
SELECT nextval('om_droit_seq'),'requerant_ajouter',(SELECT om_profil FROM om_profil WHERE libelle = 'TECHNICIEN')
WHERE
NOT EXISTS (
    SELECT om_droit FROM om_droit WHERE libelle = 'requerant_ajouter' AND om_profil = (SELECT om_profil FROM om_profil WHERE libelle = 'TECHNICIEN')
);

INSERT INTO om_droit (om_droit, libelle, om_profil)
SELECT nextval('om_droit_seq'),'plaignant_ajouter',(SELECT om_profil FROM om_profil WHERE libelle = 'ASSISTANTE')
WHERE
NOT EXISTS (
    SELECT om_droit FROM om_droit WHERE libelle = 'plaignant_ajouter' AND om_profil = (SELECT om_profil FROM om_profil WHERE libelle = 'ASSISTANTE')
);

INSERT INTO om_droit (om_droit, libelle, om_profil)
SELECT nextval('om_droit_seq'),'plaignant_ajouter',(SELECT om_profil FROM om_profil WHERE libelle = 'TECHNICIEN')
WHERE
NOT EXISTS (
    SELECT om_droit FROM om_droit WHERE libelle = 'plaignant_ajouter' AND om_profil = (SELECT om_profil FROM om_profil WHERE libelle = 'TECHNICIEN')
);

-- Ajout des droits d'accès au menu Contentieux
INSERT INTO om_droit (om_droit, libelle, om_profil)
SELECT nextval('om_droit_seq'),'menu_contentieux',(SELECT om_profil FROM om_profil WHERE libelle = 'ASSISTANTE')
WHERE
NOT EXISTS (
    SELECT om_droit FROM om_droit WHERE libelle = 'menu_contentieux' AND om_profil = (SELECT om_profil FROM om_profil WHERE libelle = 'ASSISTANTE')
);

INSERT INTO om_droit (om_droit, libelle, om_profil)
SELECT nextval('om_droit_seq'),'menu_contentieux',(SELECT om_profil FROM om_profil WHERE libelle = 'TECHNICIEN')
WHERE
NOT EXISTS (
    SELECT om_droit FROM om_droit WHERE libelle = 'menu_contentieux' AND om_profil = (SELECT om_profil FROM om_profil WHERE libelle = 'TECHNICIEN')
);

INSERT INTO om_droit (om_droit, libelle, om_profil)
SELECT nextval('om_droit_seq'),'menu_contentieux',(SELECT om_profil FROM om_profil WHERE libelle = 'JURISTE')
WHERE
NOT EXISTS (
    SELECT om_droit FROM om_droit WHERE libelle = 'menu_contentieux' AND om_profil = (SELECT om_profil FROM om_profil WHERE libelle = 'JURISTE')
);

INSERT INTO om_droit (om_droit, libelle, om_profil)
SELECT nextval('om_droit_seq'),'menu_contentieux',(SELECT om_profil FROM om_profil WHERE libelle = 'CHEF DE SERVICE CONTENTIEUX')
WHERE
NOT EXISTS (
    SELECT om_droit FROM om_droit WHERE libelle = 'menu_contentieux' AND om_profil = (SELECT om_profil FROM om_profil WHERE libelle = 'CHEF DE SERVICE CONTENTIEUX')
);

INSERT INTO om_droit (om_droit, libelle, om_profil)
SELECT nextval('om_droit_seq'),'menu_contentieux',(SELECT om_profil FROM om_profil WHERE libelle = 'RESPONSABLE DIVISION INFRACTION')
WHERE
NOT EXISTS (
    SELECT om_droit FROM om_droit WHERE libelle = 'menu_contentieux' AND om_profil = (SELECT om_profil FROM om_profil WHERE libelle = 'RESPONSABLE DIVISION INFRACTION')
);

INSERT INTO om_droit (om_droit, libelle, om_profil)
SELECT nextval('om_droit_seq'),'menu_contentieux',(SELECT om_profil FROM om_profil WHERE libelle = 'DIRECTION CONSULTATION')
WHERE
NOT EXISTS (
    SELECT om_droit FROM om_droit WHERE libelle = 'menu_contentieux' AND om_profil = (SELECT om_profil FROM om_profil WHERE libelle = 'DIRECTION CONSULTATION')
);

INSERT INTO om_droit (om_droit, libelle, om_profil)
SELECT nextval('om_droit_seq'),'menu_contentieux',(SELECT om_profil FROM om_profil WHERE libelle = 'DIRECTION RECOURS')
WHERE
NOT EXISTS (
    SELECT om_droit FROM om_droit WHERE libelle = 'menu_contentieux' AND om_profil = (SELECT om_profil FROM om_profil WHERE libelle = 'DIRECTION RECOURS')
);

INSERT INTO om_droit (om_droit, libelle, om_profil)
SELECT nextval('om_droit_seq'),'menu_contentieux',(SELECT om_profil FROM om_profil WHERE libelle = 'DIRECTION INFRACTION')
WHERE
NOT EXISTS (
    SELECT om_droit FROM om_droit WHERE libelle = 'menu_contentieux' AND om_profil = (SELECT om_profil FROM om_profil WHERE libelle = 'DIRECTION INFRACTION')
);

-- Ajout des droits d'accès au dashboard Contentieux
INSERT INTO om_droit (om_droit, libelle, om_profil)
SELECT nextval('om_droit_seq'),'menu_contentieux_dashboard',(SELECT om_profil FROM om_profil WHERE libelle = 'ASSISTANTE')
WHERE
NOT EXISTS (
    SELECT om_droit FROM om_droit WHERE libelle = 'menu_contentieux_dashboard' AND om_profil = (SELECT om_profil FROM om_profil WHERE libelle = 'ASSISTANTE')
);

INSERT INTO om_droit (om_droit, libelle, om_profil)
SELECT nextval('om_droit_seq'),'menu_contentieux_dashboard',(SELECT om_profil FROM om_profil WHERE libelle = 'TECHNICIEN')
WHERE
NOT EXISTS (
    SELECT om_droit FROM om_droit WHERE libelle = 'menu_contentieux_dashboard' AND om_profil = (SELECT om_profil FROM om_profil WHERE libelle = 'TECHNICIEN')
);

INSERT INTO om_droit (om_droit, libelle, om_profil)
SELECT nextval('om_droit_seq'),'menu_contentieux_dashboard',(SELECT om_profil FROM om_profil WHERE libelle = 'JURISTE')
WHERE
NOT EXISTS (
    SELECT om_droit FROM om_droit WHERE libelle = 'menu_contentieux_dashboard' AND om_profil = (SELECT om_profil FROM om_profil WHERE libelle = 'JURISTE')
);

INSERT INTO om_droit (om_droit, libelle, om_profil)
SELECT nextval('om_droit_seq'),'menu_contentieux_dashboard',(SELECT om_profil FROM om_profil WHERE libelle = 'CHEF DE SERVICE CONTENTIEUX')
WHERE
NOT EXISTS (
    SELECT om_droit FROM om_droit WHERE libelle = 'menu_contentieux_dashboard' AND om_profil = (SELECT om_profil FROM om_profil WHERE libelle = 'CHEF DE SERVICE CONTENTIEUX')
);

INSERT INTO om_droit (om_droit, libelle, om_profil)
SELECT nextval('om_droit_seq'),'menu_contentieux_dashboard',(SELECT om_profil FROM om_profil WHERE libelle = 'RESPONSABLE DIVISION INFRACTION')
WHERE
NOT EXISTS (
    SELECT om_droit FROM om_droit WHERE libelle = 'menu_contentieux_dashboard' AND om_profil = (SELECT om_profil FROM om_profil WHERE libelle = 'RESPONSABLE DIVISION INFRACTION')
);

-- Droits d'accès au listing "Mes recours"
INSERT INTO om_droit (om_droit, libelle, om_profil)
SELECT nextval('om_droit_seq'),'dossier_contentieux_tous_recours',(SELECT om_profil FROM om_profil WHERE libelle = 'CHEF DE SERVICE CONTENTIEUX')
WHERE
NOT EXISTS (
    SELECT om_droit FROM om_droit WHERE libelle = 'dossier_contentieux_tous_recours' AND om_profil = (SELECT om_profil FROM om_profil WHERE libelle = 'CHEF DE SERVICE CONTENTIEUX')
);

INSERT INTO om_droit (om_droit, libelle, om_profil)
SELECT nextval('om_droit_seq'),'dossier_contentieux_tous_recours',(SELECT om_profil FROM om_profil WHERE libelle = 'JURISTE')
WHERE
NOT EXISTS (
    SELECT om_droit FROM om_droit WHERE libelle = 'dossier_contentieux_tous_recours' AND om_profil = (SELECT om_profil FROM om_profil WHERE libelle = 'JURISTE')
);

-- Droits d'accès au listing "Tous les recours"
INSERT INTO om_droit (om_droit, libelle, om_profil)
SELECT nextval('om_droit_seq'),'dossier_contentieux_tous_recours',(SELECT om_profil FROM om_profil WHERE libelle = 'ASSISTANTE')
WHERE
NOT EXISTS (
    SELECT om_droit FROM om_droit WHERE libelle = 'dossier_contentieux_tous_recours' AND om_profil = (SELECT om_profil FROM om_profil WHERE libelle = 'ASSISTANTE')
);

INSERT INTO om_droit (om_droit, libelle, om_profil)
SELECT nextval('om_droit_seq'),'dossier_contentieux_tous_recours',(SELECT om_profil FROM om_profil WHERE libelle = 'TECHNICIEN')
WHERE
NOT EXISTS (
    SELECT om_droit FROM om_droit WHERE libelle = 'dossier_contentieux_tous_recours' AND om_profil = (SELECT om_profil FROM om_profil WHERE libelle = 'TECHNICIEN')
);

INSERT INTO om_droit (om_droit, libelle, om_profil)
SELECT nextval('om_droit_seq'),'dossier_contentieux_tous_recours',(SELECT om_profil FROM om_profil WHERE libelle = 'CHEF DE SERVICE CONTENTIEUX')
WHERE
NOT EXISTS (
    SELECT om_droit FROM om_droit WHERE libelle = 'dossier_contentieux_tous_recours' AND om_profil = (SELECT om_profil FROM om_profil WHERE libelle = 'CHEF DE SERVICE CONTENTIEUX')
);

INSERT INTO om_droit (om_droit, libelle, om_profil)
SELECT nextval('om_droit_seq'),'dossier_contentieux_tous_recours',(SELECT om_profil FROM om_profil WHERE libelle = 'JURISTE')
WHERE
NOT EXISTS (
    SELECT om_droit FROM om_droit WHERE libelle = 'dossier_contentieux_tous_recours' AND om_profil = (SELECT om_profil FROM om_profil WHERE libelle = 'JURISTE')
);

INSERT INTO om_droit (om_droit, libelle, om_profil)
SELECT nextval('om_droit_seq'),'dossier_contentieux_tous_recours',(SELECT om_profil FROM om_profil WHERE libelle = 'RESPONSABLE DIVISION INFRACTION')
WHERE
NOT EXISTS (
    SELECT om_droit FROM om_droit WHERE libelle = 'dossier_contentieux_tous_recours' AND om_profil = (SELECT om_profil FROM om_profil WHERE libelle = 'RESPONSABLE DIVISION INFRACTION')
);

INSERT INTO om_droit (om_droit, libelle, om_profil)
SELECT nextval('om_droit_seq'),'dossier_contentieux_tous_recours',(SELECT om_profil FROM om_profil WHERE libelle = 'DIRECTION CONSULTATION')
WHERE
NOT EXISTS (
    SELECT om_droit FROM om_droit WHERE libelle = 'dossier_contentieux_tous_recours' AND om_profil = (SELECT om_profil FROM om_profil WHERE libelle = 'DIRECTION CONSULTATION')
);

INSERT INTO om_droit (om_droit, libelle, om_profil)
SELECT nextval('om_droit_seq'),'dossier_contentieux_tous_recours',(SELECT om_profil FROM om_profil WHERE libelle = 'DIRECTION RECOURS')
WHERE
NOT EXISTS (
    SELECT om_droit FROM om_droit WHERE libelle = 'dossier_contentieux_tous_recours' AND om_profil = (SELECT om_profil FROM om_profil WHERE libelle = 'DIRECTION RECOURS')
);

INSERT INTO om_droit (om_droit, libelle, om_profil)
SELECT nextval('om_droit_seq'),'dossier_contentieux_tous_recours',(SELECT om_profil FROM om_profil WHERE libelle = 'DIRECTION INFRACTION')
WHERE
NOT EXISTS (
    SELECT om_droit FROM om_droit WHERE libelle = 'dossier_contentieux_tous_recours' AND om_profil = (SELECT om_profil FROM om_profil WHERE libelle = 'DIRECTION INFRACTION')
);

-- Droit d'accès au listing "Mes infractions"
INSERT INTO om_droit (om_droit, libelle, om_profil)
SELECT nextval('om_droit_seq'),'dossier_contentieux_mes_infractions',(SELECT om_profil FROM om_profil WHERE libelle = 'JURISTE')
WHERE
NOT EXISTS (
    SELECT om_droit FROM om_droit WHERE libelle = 'dossier_contentieux_mes_infractions' AND om_profil = (SELECT om_profil FROM om_profil WHERE libelle = 'JURISTE')
);

INSERT INTO om_droit (om_droit, libelle, om_profil)
SELECT nextval('om_droit_seq'),'dossier_contentieux_mes_infractions',(SELECT om_profil FROM om_profil WHERE libelle = 'TECHNICIEN')
WHERE
NOT EXISTS (
    SELECT om_droit FROM om_droit WHERE libelle = 'dossier_contentieux_mes_infractions' AND om_profil = (SELECT om_profil FROM om_profil WHERE libelle = 'TECHNICIEN')
);

-- Droit d'accès au listing "Toutes les infractions"
INSERT INTO om_droit (om_droit, libelle, om_profil)
SELECT nextval('om_droit_seq'),'dossier_contentieux_toutes_infractions',(SELECT om_profil FROM om_profil WHERE libelle = 'ASSISTANTE')
WHERE
NOT EXISTS (
    SELECT om_droit FROM om_droit WHERE libelle = 'dossier_contentieux_toutes_infractions' AND om_profil = (SELECT om_profil FROM om_profil WHERE libelle = 'ASSISTANTE')
);

INSERT INTO om_droit (om_droit, libelle, om_profil)
SELECT nextval('om_droit_seq'),'dossier_contentieux_toutes_infractions',(SELECT om_profil FROM om_profil WHERE libelle = 'TECHNICIEN')
WHERE
NOT EXISTS (
    SELECT om_droit FROM om_droit WHERE libelle = 'dossier_contentieux_toutes_infractions' AND om_profil = (SELECT om_profil FROM om_profil WHERE libelle = 'TECHNICIEN')
);

INSERT INTO om_droit (om_droit, libelle, om_profil)
SELECT nextval('om_droit_seq'),'dossier_contentieux_toutes_infractions',(SELECT om_profil FROM om_profil WHERE libelle = 'CHEF DE SERVICE CONTENTIEUX')
WHERE
NOT EXISTS (
    SELECT om_droit FROM om_droit WHERE libelle = 'dossier_contentieux_toutes_infractions' AND om_profil = (SELECT om_profil FROM om_profil WHERE libelle = 'CHEF DE SERVICE CONTENTIEUX')
);

INSERT INTO om_droit (om_droit, libelle, om_profil)
SELECT nextval('om_droit_seq'),'dossier_contentieux_toutes_infractions',(SELECT om_profil FROM om_profil WHERE libelle = 'JURISTE')
WHERE
NOT EXISTS (
    SELECT om_droit FROM om_droit WHERE libelle = 'dossier_contentieux_toutes_infractions' AND om_profil = (SELECT om_profil FROM om_profil WHERE libelle = 'JURISTE')
);

INSERT INTO om_droit (om_droit, libelle, om_profil)
SELECT nextval('om_droit_seq'),'dossier_contentieux_toutes_infractions',(SELECT om_profil FROM om_profil WHERE libelle = 'RESPONSABLE DIVISION INFRACTION')
WHERE
NOT EXISTS (
    SELECT om_droit FROM om_droit WHERE libelle = 'dossier_contentieux_toutes_infractions' AND om_profil = (SELECT om_profil FROM om_profil WHERE libelle = 'RESPONSABLE DIVISION INFRACTION')
);

INSERT INTO om_droit (om_droit, libelle, om_profil)
SELECT nextval('om_droit_seq'),'dossier_contentieux_toutes_infractions',(SELECT om_profil FROM om_profil WHERE libelle = 'DIRECTION CONSULTATION')
WHERE
NOT EXISTS (
    SELECT om_droit FROM om_droit WHERE libelle = 'dossier_contentieux_toutes_infractions' AND om_profil = (SELECT om_profil FROM om_profil WHERE libelle = 'DIRECTION CONSULTATION')
);

INSERT INTO om_droit (om_droit, libelle, om_profil)
SELECT nextval('om_droit_seq'),'dossier_contentieux_toutes_infractions',(SELECT om_profil FROM om_profil WHERE libelle = 'DIRECTION RECOURS')
WHERE
NOT EXISTS (
    SELECT om_droit FROM om_droit WHERE libelle = 'dossier_contentieux_toutes_infractions' AND om_profil = (SELECT om_profil FROM om_profil WHERE libelle = 'DIRECTION RECOURS')
);

INSERT INTO om_droit (om_droit, libelle, om_profil)
SELECT nextval('om_droit_seq'),'dossier_contentieux_toutes_infractions',(SELECT om_profil FROM om_profil WHERE libelle = 'DIRECTION INFRACTION')
WHERE
NOT EXISTS (
    SELECT om_droit FROM om_droit WHERE libelle = 'dossier_contentieux_toutes_infractions' AND om_profil = (SELECT om_profil FROM om_profil WHERE libelle = 'DIRECTION INFRACTION')
);

-- Ajout du droit de récupération de l'adresse à partir des références cadastrales
INSERT INTO om_droit (om_droit, libelle, om_profil)
SELECT nextval('om_droit_seq'),'demande_recuperer_adresse',(SELECT om_profil FROM om_profil WHERE libelle = 'ASSISTANTE')
WHERE
NOT EXISTS (
    SELECT om_droit FROM om_droit WHERE libelle = 'demande_recuperer_adresse' AND om_profil = (SELECT om_profil FROM om_profil WHERE libelle = 'ASSISTANTE')
);

INSERT INTO om_droit (om_droit, libelle, om_profil)
SELECT nextval('om_droit_seq'),'demande_recuperer_adresse',(SELECT om_profil FROM om_profil WHERE libelle = 'TECHNICIEN')
WHERE
NOT EXISTS (
    SELECT om_droit FROM om_droit WHERE libelle = 'demande_recuperer_adresse' AND om_profil = (SELECT om_profil FROM om_profil WHERE libelle = 'TECHNICIEN')
);

--
-- BEGIN — Widget Recherche par type
--

INSERT INTO om_widget (om_widget, libelle, lien, texte, type)
SELECT nextval('om_widget_seq'), 'Recherche accès direct par type','recherche_dossier_par_type','','file'
WHERE
    NOT EXISTS (
        SELECT libelle FROM om_widget WHERE libelle = 'Recherche accès direct par type'
    );
INSERT INTO om_dashboard (om_dashboard, om_profil, bloc, position, om_widget)
SELECT nextval('om_dashboard_seq'),(SELECT om_profil FROM om_profil WHERE libelle = 'ASSISTANTE'), 'C1',   3,  (SELECT om_widget FROM om_widget WHERE libelle = 'Recherche accès direct par type')
WHERE
    NOT EXISTS (
        SELECT om_dashboard FROM om_dashboard WHERE om_widget = (SELECT om_widget FROM om_widget WHERE libelle = 'Recherche accès direct par type') AND om_profil = (SELECT om_profil FROM om_profil WHERE libelle = 'INSTRUCTEUR')
    );
INSERT INTO om_dashboard (om_dashboard, om_profil, bloc, position, om_widget)
SELECT nextval('om_dashboard_seq'),(SELECT om_profil FROM om_profil WHERE libelle = 'CHEF DE SERVICE CONTENTIEUX'), 'C1',   3,  (SELECT om_widget FROM om_widget WHERE libelle = 'Recherche accès direct par type')
WHERE
    NOT EXISTS (
        SELECT om_dashboard FROM om_dashboard WHERE om_widget = (SELECT om_widget FROM om_widget WHERE libelle = 'Recherche accès direct par type') AND om_profil = (SELECT om_profil FROM om_profil WHERE libelle = 'CHEF DE SERVICE CONTENTIEUX')
    );
INSERT INTO om_dashboard (om_dashboard, om_profil, bloc, position, om_widget)
SELECT nextval('om_dashboard_seq'),(SELECT om_profil FROM om_profil WHERE libelle = 'JURISTE'), 'C1',   3,  (SELECT om_widget FROM om_widget WHERE libelle = 'Recherche accès direct par type')
WHERE
    NOT EXISTS (
        SELECT om_dashboard FROM om_dashboard WHERE om_widget = (SELECT om_widget FROM om_widget WHERE libelle = 'Recherche accès direct par type') AND om_profil = (SELECT om_profil FROM om_profil WHERE libelle = 'JURISTE')
    );
INSERT INTO om_dashboard (om_dashboard, om_profil, bloc, position, om_widget)
SELECT nextval('om_dashboard_seq'),(SELECT om_profil FROM om_profil WHERE libelle = 'TECHNICIEN'), 'C1',   3,  (SELECT om_widget FROM om_widget WHERE libelle = 'Recherche accès direct par type')
WHERE
    NOT EXISTS (
        SELECT om_dashboard FROM om_dashboard WHERE om_widget = (SELECT om_widget FROM om_widget WHERE libelle = 'Recherche accès direct par type') AND om_profil = (SELECT om_profil FROM om_profil WHERE libelle = 'TECHNICIEN')
    );
INSERT INTO om_dashboard (om_dashboard, om_profil, bloc, position, om_widget)
SELECT nextval('om_dashboard_seq'),(SELECT om_profil FROM om_profil WHERE libelle = 'RESPONSABLE DIVISION INFRACTION'), 'C1',   3,  (SELECT om_widget FROM om_widget WHERE libelle = 'Recherche accès direct par type')
WHERE
    NOT EXISTS (
        SELECT om_dashboard FROM om_dashboard WHERE om_widget = (SELECT om_widget FROM om_widget WHERE libelle = 'Recherche accès direct par type') AND om_profil = (SELECT om_profil FROM om_profil WHERE libelle = 'RESPONSABLE DIVISION INFRACTION')
    );
INSERT INTO om_dashboard (om_dashboard, om_profil, bloc, position, om_widget)
SELECT nextval('om_dashboard_seq'),(SELECT om_profil FROM om_profil WHERE libelle = 'DIRECTION CONSULTATION'), 'C1',   3,  (SELECT om_widget FROM om_widget WHERE libelle = 'Recherche accès direct par type')
WHERE
    NOT EXISTS (
        SELECT om_dashboard FROM om_dashboard WHERE om_widget = (SELECT om_widget FROM om_widget WHERE libelle = 'Recherche accès direct par type') AND om_profil = (SELECT om_profil FROM om_profil WHERE libelle = 'DIRECTION CONSULTATION')
    );
INSERT INTO om_dashboard (om_dashboard, om_profil, bloc, position, om_widget)
SELECT nextval('om_dashboard_seq'),(SELECT om_profil FROM om_profil WHERE libelle = 'DIRECTION RECOURS'), 'C1',   3,  (SELECT om_widget FROM om_widget WHERE libelle = 'Recherche accès direct par type')
WHERE
    NOT EXISTS (
        SELECT om_dashboard FROM om_dashboard WHERE om_widget = (SELECT om_widget FROM om_widget WHERE libelle = 'Recherche accès direct par type') AND om_profil = (SELECT om_profil FROM om_profil WHERE libelle = 'DIRECTION RECOURS')
    );
INSERT INTO om_dashboard (om_dashboard, om_profil, bloc, position, om_widget)
SELECT nextval('om_dashboard_seq'),(SELECT om_profil FROM om_profil WHERE libelle = 'DIRECTION INFRACTION'), 'C1',   3,  (SELECT om_widget FROM om_widget WHERE libelle = 'Recherche accès direct par type')
WHERE
    NOT EXISTS (
        SELECT om_dashboard FROM om_dashboard WHERE om_widget = (SELECT om_widget FROM om_widget WHERE libelle = 'Recherche accès direct par type') AND om_profil = (SELECT om_profil FROM om_profil WHERE libelle = 'DIRECTION INFRACTION')
    );

--
-- END / #654 — Widget Recherche par type
--

--
-- END - Ajout des droits
--

