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

--
-- BEGIN / [#10383] Corriger la taille du champ `consultation.dossier` pour que ça corresponde à la taille du champ `dossier.dossier`
--
ALTER TABLE ONLY consultation 
    ALTER COLUMN dossier TYPE character varying(255);
--
-- END / [#10383] Corriger la taille du champ `consultation.dossier` pour que ça corresponde à la taille du champ `dossier.dossier`
--

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

-- DIA

-- Ajout données techniques et cerfa
-- Désignation du bien
ALTER TABLE donnees_techniques ADD COLUMN IF NOT EXISTS ci4na1 boolean DEFAULT false;
COMMENT ON COLUMN donnees_techniques.ci4na1 IS 'Nombre de Niveaux - Coche';
ALTER TABLE donnees_techniques ADD COLUMN IF NOT EXISTS ci4aa1 boolean DEFAULT false;
COMMENT ON COLUMN donnees_techniques.ci4aa1 IS 'Nombre d''Appartements - Coche';
ALTER TABLE donnees_techniques ADD COLUMN IF NOT EXISTS ci4la1 boolean DEFAULT false;
COMMENT ON COLUMN donnees_techniques.ci4la1 IS 'Nombre d''Autres locaux - Coche';
-- Modalité de la cession ou de la donation
ALTER TABLE donnees_techniques ADD COLUMN IF NOT EXISTS fi1t numeric;
COMMENT ON COLUMN donnees_techniques.fi1t IS 'Si TVA en sus du prix, préciser le montant (en chiffres)';
ALTER TABLE donnees_techniques ADD COLUMN IF NOT EXISTS fi1d numeric;
COMMENT ON COLUMN donnees_techniques.fi1d IS 'Évaluation hors commission (en chiffres)';
ALTER TABLE donnees_techniques ADD COLUMN IF NOT EXISTS fi1e character varying(100);
COMMENT ON COLUMN donnees_techniques.fi1e IS 'Évaluation hors commission (en lettres)';
--
-- Désignation du bien
ALTER TABLE cerfa ADD COLUMN IF NOT EXISTS ci4na1 boolean DEFAULT false;
COMMENT ON COLUMN cerfa.ci4na1 IS 'Nombre de Niveaux - Coche';
ALTER TABLE cerfa ADD COLUMN IF NOT EXISTS ci4aa1 boolean DEFAULT false;
COMMENT ON COLUMN cerfa.ci4aa1 IS 'Nombre d''Appartements - Coche';
ALTER TABLE cerfa ADD COLUMN IF NOT EXISTS ci4la1 boolean DEFAULT false;
COMMENT ON COLUMN cerfa.ci4la1 IS 'Nombre d''Autres locaux - Coche';
-- Modalité de la cession ou de la donation
ALTER TABLE cerfa ADD COLUMN IF NOT EXISTS fi1t boolean DEFAULT false;
COMMENT ON COLUMN cerfa.fi1t IS 'Si TVA en sus du prix, préciser le montant (en chiffres)';
ALTER TABLE cerfa ADD COLUMN IF NOT EXISTS fi1d boolean DEFAULT false;
COMMENT ON COLUMN cerfa.fi1d IS 'Évaluation hors commission (en chiffres)';
ALTER TABLE cerfa ADD COLUMN IF NOT EXISTS fi1e boolean DEFAULT false;
COMMENT ON COLUMN cerfa.fi1e IS 'Évaluation hors commission (en lettres)';

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

--
-- BEGIN / [#10390] Implémentation des nomenclatures Plat'AU - [#10389] [MC0044635][MC0045937] Modules Flux Platau
--

-- Création de la table document_type
CREATE TABLE IF NOT EXISTS document_type (
    document_type integer NOT NULL,
    libelle character varying(255) NOT NULL,
    code character varying(50) NOT NULL,
    document_type_categorie integer NOT NULL,
    om_validite_debut date,
    om_validite_fin date,
    CONSTRAINT document_type_pkey PRIMARY KEY (document_type)
);

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

COMMENT ON COLUMN document_type.document_type IS 'Identifiant unique du type de document';
COMMENT ON COLUMN document_type.libelle IS 'Libellé du type de document';
COMMENT ON COLUMN document_type.code IS 'Code du type de document';
COMMENT ON COLUMN document_type.document_type_categorie IS 'Catégorie du type de document';
COMMENT ON COLUMN document_type.om_validite_debut IS 'Date de début de validité du type de document';
COMMENT ON COLUMN document_type.om_validite_fin IS 'Date de fin de validité du type de document';

-- Création de la table document_type_categorie
CREATE TABLE IF NOT EXISTS document_type_categorie (
    document_type_categorie integer NOT NULL,
    libelle character varying(255) NOT NULL,
    code character varying(50) DEFAULT NULL,
    CONSTRAINT document_type_categorie_pkey PRIMARY KEY (document_type_categorie)
);

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

COMMENT ON COLUMN document_type_categorie.document_type_categorie IS 'Identifiant unique de la catégorie du type de document';
COMMENT ON COLUMN document_type_categorie.libelle IS 'Libellé de la catégorie du type de document';
COMMENT ON COLUMN document_type_categorie.code IS 'Code de la catégorie du type de document';

ALTER TABLE ONLY document_type
    ADD CONSTRAINT document_type_document_type_categorie_fkey FOREIGN KEY (document_type_categorie) REFERENCES document_type_categorie(document_type_categorie);

-- Création de la table type_acteur_platau
CREATE TABLE IF NOT EXISTS type_acteur_platau (
    type_acteur_platau integer NOT NULL,
    libelle character varying(255) NOT NULL,
    code character varying(50) DEFAULT NULL,
    om_validite_debut date,
    om_validite_fin date,
    CONSTRAINT type_acteur_platau_pkey PRIMARY KEY (type_acteur_platau)
);

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

COMMENT ON COLUMN type_acteur_platau.type_acteur_platau IS 'Identifiant unique du type acteur platau';
COMMENT ON COLUMN type_acteur_platau.libelle IS 'Libellé du type acteur platau';
COMMENT ON COLUMN type_acteur_platau.code IS 'Code du type acteur platau';
COMMENT ON COLUMN type_acteur_platau.om_validite_debut IS 'Date de début du type acteur platau';
COMMENT ON COLUMN type_acteur_platau.om_validite_fin IS 'Date de fin du type acteur platau';

--
-- END / [#10390] Implémentation des nomenclatures Plat'AU - [#10389] [MC0044635][MC0045937] Modules Flux Platau
--

--
-- BEGIN / [#10396] Intégration des type_documents dans OpenADS - [#10389] [MC0044635][MC0045937] Modules Flux Platau
--

ALTER TABLE ONLY evenement ADD COLUMN document_type integer DEFAULT NULL;

ALTER TABLE ONLY evenement
    ADD CONSTRAINT evenement_document_type_fkey FOREIGN KEY (document_type) REFERENCES document_type(document_type);

COMMENT ON COLUMN evenement.document_type IS 'Type de document de l''évènement';


ALTER TABLE ONLY instruction ADD COLUMN document_type_instruction integer DEFAULT NULL;

ALTER TABLE ONLY instruction
    ADD CONSTRAINT instruction_document_type_instruction_fkey FOREIGN KEY (document_type_instruction) REFERENCES document_type(document_type);

COMMENT ON COLUMN instruction.document_type_instruction IS 'Type de document de l''instruction';

--
-- END / [#10396] Intégration des type_documents dans OpenADS - [#10389] [MC0044635][MC0045937] Modules Flux Platau
--

--
-- BEGIN / [#10398] Nommage des document généré par les instructions avec le type document - [#10389] [MC0044635][MC0045937] Modules Flux Platau
--

ALTER TABLE instruction ADD COLUMN IF NOT EXISTS fichier_instruction_name character varying(255) DEFAULT NULL;

COMMENT ON COLUMN instruction.fichier_instruction_name IS 'Nom du fichier d''instruction';

UPDATE instruction SET fichier_instruction_name = CONCAT('instruction_', instruction,'.pdf')
    WHERE om_final_instruction IS TRUE AND om_fichier_instruction IS NOT NULL;

--
-- END / [#10398] Nommage des document généré par les instructions avec le type document - [#10389] [MC0044635][MC0045937] Modules Flux Platau
--

--
-- BEGIN / Ajout de permission
--

-- Pour permettre l'ajout de document de travail en annexe
INSERT INTO om_droit (om_droit, libelle, om_profil)
SELECT nextval('om_droit_seq'), 'document_travail_notifier', (SELECT om_profil FROM om_profil WHERE libelle = 'ADMINISTRATEUR GENERAL')
WHERE NOT EXISTS (
    SELECT om_droit FROM om_droit WHERE libelle = 'document_travail_notifier' 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'), 'document_travail_notifier', (SELECT om_profil FROM om_profil WHERE libelle = 'INSTRUCTEUR POLYVALENT')
WHERE NOT EXISTS (
    SELECT om_droit FROM om_droit WHERE libelle = 'document_travail_notifier' 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'), 'document_travail_notifier', (SELECT om_profil FROM om_profil WHERE libelle = 'INSTRUCTEUR POLYVALENT COMMUNE')
WHERE NOT EXISTS (
    SELECT om_droit FROM om_droit WHERE libelle = 'document_travail_notifier' AND om_profil = (SELECT om_profil FROM om_profil WHERE libelle = 'INSTRUCTEUR POLYVALENT COMMUNE')
);

-- Pour permettre de gérer les utilisateurs liés
INSERT INTO om_droit (om_droit, libelle, om_profil)
SELECT nextval('om_droit_seq'), 'lien_om_utilisateur_om_utilisateur', (SELECT om_profil FROM om_profil WHERE libelle = 'ADMINISTRATEUR GENERAL')
WHERE NOT EXISTS (
    SELECT om_droit FROM om_droit WHERE libelle = 'lien_om_utilisateur_om_utilisateur' AND om_profil = (SELECT om_profil FROM om_profil WHERE libelle = 'ADMINISTRATEUR GENERAL')
);

-- Pour permettre de gérer les enjeux
INSERT INTO om_droit (om_droit, libelle, om_profil)
SELECT nextval('om_droit_seq'), 'enjeux', (SELECT om_profil FROM om_profil WHERE libelle = 'ADMINISTRATEUR GENERAL')
WHERE NOT EXISTS (
    SELECT om_droit FROM om_droit WHERE libelle = 'enjeux' AND om_profil = (SELECT om_profil FROM om_profil WHERE libelle = 'ADMINISTRATEUR GENERAL')
);

--
-- END / Ajout de permission
--
