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

--
-- BEGIN / [#10864] Permettre la recherche de taches en fonction d'une liste d'external_uids 
--

-- Suppression des séquences d'échappement Unicode nulles (\u0000) dans json_payload
-- qui empêchent le parsing JSON par PostgreSQL lors de la création des index
UPDATE task SET json_payload = replace(json_payload, E'\\u0000', '') WHERE position(E'\\u0000' in json_payload) > 0;

-- Création d'un index pour la recherche d'external_uids de type dossier
CREATE INDEX IF NOT EXISTS task_external_uids_dossier ON task USING btree (( json_payload::json->'external_uids'->>'dossier'));

-- Création d'un index pour la recherche d'external_uids de type piece
CREATE INDEX IF NOT EXISTS task_external_uids_piece ON task USING btree (( json_payload::json->'external_uids'->>'piece'));

-- Création d'un index pour la recherche d'external_uids de type instruction
CREATE INDEX IF NOT EXISTS task_external_uids_instruction ON task USING btree (( json_payload::json->'external_uids'->>'instruction'));

-- Création d'un index pour la recherche d'external_uids de type avis_dossier_consultation
CREATE INDEX IF NOT EXISTS task_external_uids_avis_dossier_consultation ON task USING btree (( json_payload::json->'external_uids'->>'avis_dossier_consultation'));

-- Création d'un index pour la recherche d'external_uids de type prescription
CREATE INDEX IF NOT EXISTS task_external_uids_prescription ON task USING btree (( json_payload::json->'external_uids'->>'prescription'));

-- Création d'un index pour la recherche d'external_uids de type consultation
CREATE INDEX IF NOT EXISTS task_external_uids_consultation ON task USING btree (( json_payload::json->'external_uids'->>'consultation'));

-- Création d'un index pour la recherche d'external_uids de type pec_dossier_consultation
CREATE INDEX IF NOT EXISTS task_external_uids_pec_dossier_consultation ON task USING btree (( json_payload::json->'external_uids'->>'pec_dossier_consultation'));

-- Création d'un index pour la recherche d'external_uids de type demande
CREATE INDEX IF NOT EXISTS task_external_uids_demande ON task USING btree (( json_payload::json->'external_uids'->>'demande'));

-- Création d'un index pour la recherche d'external_uids de type code-suivi
CREATE INDEX IF NOT EXISTS task_external_uids_code_suivi ON task USING btree (( json_payload::json->'external_uids'->>'code-suivi'));

-- Création d'un index pour la recherche d'external_uids de type message
CREATE INDEX IF NOT EXISTS task_external_uids_message ON task USING btree (( json_payload::json->'external_uids'->>'message'));

--
-- END / [#10864] Permettre la recherche de taches en fonction d'une liste d'external_uids 
--

--
-- BEGIN / [#10851] Support des DIA depuis Plat'AU : Phase 5b - Mise à jour de la dtLimiteInstruction 
--

-- Changer la longueur de la colonne type de la table task de 30 a 255 charactères
ALTER TABLE task ALTER COLUMN type TYPE character varying(255);

--
-- END / [#10851] Support des DIA depuis Plat'AU : Phase 5b - Mise à jour de la dtLimiteInstruction 
--

--
-- BEGIN / [#10882] Mise à jour des données techniques et CERFA
--

-- Modification de la longueur des colonnes de la table donnees_techniques
ALTER TABLE donnees_techniques ALTER COLUMN gi2pa1 TYPE character varying(100);
ALTER TABLE donnees_techniques ALTER COLUMN gi2pa2 TYPE character varying(100);
ALTER TABLE donnees_techniques ALTER COLUMN gi3ma1 TYPE character varying(100);
ALTER TABLE donnees_techniques ALTER COLUMN gi3ma3 TYPE character varying(100);
ALTER TABLE donnees_techniques ALTER COLUMN gi3ma4 TYPE character varying(100);
ALTER TABLE donnees_techniques ALTER COLUMN gi3ma5 TYPE character varying(100);

--
-- END / [#10882] Mise à jour des données techniques et CERFA
--

--
-- BEGIN / [#10888] Ajout d'une permission pour l'instructeur polyvalent commun sur les boutons de sélection des validateurs
--

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

--
-- END / [#10888] Ajout d'une permission pour l'instructeur polyvalent commun sur les boutons de sélection des validateurs
--


--
-- BEGIN / [#10881] Ajout d'une donnée de dossier pour identifier le statut de l'archivage
--
ALTER TABLE dossier
ADD IF NOT EXISTS statut_archivage character varying(11) NULL;
COMMENT ON COLUMN dossier.statut_archivage IS 'Statut de l''archivage du dossier';
--
-- END / [#10881] Ajout d'une donnée de dossier pour identifier le statut de l'archivage
--
