-- MàJ de la version en BDD
UPDATE om_version SET om_version = '6.16.0' WHERE exists(SELECT 1 FROM om_version) = true;
INSERT INTO om_version
SELECT ('6.16.0') WHERE exists(SELECT 1 FROM om_version) = false;

-- ============================================================================
-- Partie 1 : Droits pour le profil JURISTE
-- ============================================================================

-- Création du profil JURISTE s'il n'existe pas
INSERT INTO om_profil (om_profil, libelle)
SELECT nextval('om_profil_seq'), 'JURISTE'
WHERE NOT EXISTS (SELECT 1 FROM om_profil WHERE libelle = 'JURISTE');

-- Ajout des droits de document signé au profil JURISTE
INSERT INTO om_droit (om_droit, libelle, om_profil)
SELECT nextval('om_droit_seq'), 'instruction_selection_document_signe', (SELECT om_profil FROM om_profil WHERE libelle = 'JURISTE')
WHERE NOT EXISTS (
    SELECT om_droit FROM om_droit WHERE libelle = 'instruction_selection_document_signe' 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'), 'instruction_modale_selection_document_signe', (SELECT om_profil FROM om_profil WHERE libelle = 'JURISTE')
WHERE NOT EXISTS (
    SELECT om_droit FROM om_droit WHERE libelle = 'instruction_modale_selection_document_signe' AND om_profil = (SELECT om_profil FROM om_profil WHERE libelle = 'JURISTE')
);

-- ============================================================================
-- Partie 2 : Droits pour le profil CHEF DE SERVICE CONTENTIEUX
-- ============================================================================

-- Création du profil CHEF DE SERVICE CONTENTIEUX s'il n'existe pas
INSERT INTO om_profil (om_profil, libelle)
SELECT nextval('om_profil_seq'), 'CHEF DE SERVICE CONTENTIEUX'
WHERE NOT EXISTS (SELECT 1 FROM om_profil WHERE libelle = 'CHEF DE SERVICE CONTENTIEUX');

-- Ajout des droits de document signé au profil CHEF DE SERVICE CONTENTIEUX
INSERT INTO om_droit (om_droit, libelle, om_profil)
SELECT nextval('om_droit_seq'), 'instruction_selection_document_signe', (SELECT om_profil FROM om_profil WHERE libelle = 'CHEF DE SERVICE CONTENTIEUX')
WHERE NOT EXISTS (
    SELECT om_droit FROM om_droit WHERE libelle = 'instruction_selection_document_signe' 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'), 'instruction_modale_selection_document_signe', (SELECT om_profil FROM om_profil WHERE libelle = 'CHEF DE SERVICE CONTENTIEUX')
WHERE NOT EXISTS (
    SELECT om_droit FROM om_droit WHERE libelle = 'instruction_modale_selection_document_signe' AND om_profil = (SELECT om_profil FROM om_profil WHERE libelle = 'CHEF DE SERVICE CONTENTIEUX')
);

--
-- BEGIN / [#10703] Augmenter la taille du champ contenant le pétitionnaire dans le suivi de numérisation des dossiers
--  
ALTER TABLE num_dossier ALTER COLUMN petition TYPE VARCHAR(1000);
-- Mettre à jour le commentaire pour documenter le changement
COMMENT ON COLUMN num_dossier.petition IS 'Nom du pétitionnaire (étendu à 1000 caractères pour supporter les informations complètes : qualité, nom, prénom, dénomination, raison sociale, adresse)';
--
-- END / [#10703] Augmenter la taille du champ contenant le pétitionnaire dans le suivi de numérisation des dossiers
-- 

--
-- BEGIN / [#10713][MC0050353] Ajout de la permission task_ds permettant d'afficher le moniteur DS
--

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

--
-- END / [#10713][MC0050353] Ajout de la permission task_ds permettant d'afficher le moniteur DS
--

--
-- BEGIN / [#10724] Réception des prescriptions
--

--
-- Name: prescription_consultation; Type: TABLE; Schema: openads; Owner: -
--
CREATE TABLE IF NOT EXISTS prescription_consultation (
    prescription_consultation integer NOT NULL,
    libelle character varying(255) NOT NULL,
    abrege character varying(10),
    om_validite_debut date,
    om_validite_fin date,
    code character varying(10),
    CONSTRAINT prescription_consultation_pkey PRIMARY KEY (prescription_consultation),
    CONSTRAINT prescription_consultation_code_unique UNIQUE (code)
);

--
-- Name: TABLE prescription_consultation; Type: COMMENT; Schema: openads; Owner: -
--
COMMENT ON TABLE prescription_consultation IS 'Prescription décidé après une consultation';
COMMENT ON COLUMN prescription_consultation.prescription_consultation IS 'Identifiant unique';
COMMENT ON COLUMN prescription_consultation.libelle IS 'Libellé de la prescription';
COMMENT ON COLUMN prescription_consultation.abrege IS 'Abréviation de la prescription';
COMMENT ON COLUMN prescription_consultation.om_validite_debut IS 'Date de début de validité de la prescription';
COMMENT ON COLUMN prescription_consultation.om_validite_fin IS 'Date de fin de validité de la prescription';
COMMENT ON COLUMN prescription_consultation.code IS 'Code unique de la prescription de consultation';

--
-- Name: prescription_consultation_seq; Type: SEQUENCE; Schema: openads; Owner: -
--
CREATE SEQUENCE IF NOT EXISTS prescription_consultation_seq
    START WITH 1
    INCREMENT BY 1
    NO MINVALUE
    NO MAXVALUE
    CACHE 1;
--
-- Name: prescription_consultation_seq; Type: SEQUENCE OWNED BY; Schema: openads; Owner: -
--
ALTER SEQUENCE prescription_consultation_seq OWNED BY prescription_consultation.prescription_consultation;

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

ALTER TABLE ONLY consultation
    ADD COLUMN IF NOT EXISTS prescription_consultation integer;

ALTER TABLE ONLY consultation
    DROP CONSTRAINT IF EXISTS consultation_prescription_consultation_fkey;
ALTER TABLE ONLY consultation
    ADD CONSTRAINT consultation_prescription_consultation_fkey FOREIGN KEY (prescription_consultation) REFERENCES prescription_consultation(prescription_consultation);

--
-- END / [#10724] Réception des prescriptions
--
