CREATE TABLE VROEGSIGNAAL (
    VROEGSIGNAAL_ID INTEGER PRIMARY KEY,
    BEDRAG DECIMAL(10,2),
    BETREFT_CLIENT_ID INTEGER,
    CRISISSIGNAAL BOOLEAN,
    ONTSTAANSDATUM DATE,
    OPGEPAKTIN_VROEGSIGNAALZAAK_ID INTEGER,
    SIGNAALDATUM DATE,
    STATUS_ENUM_ID INTEGER,
    VERZONDENDOOR_SIGNAALPARTNER_ID INTEGER,
    WARMEOVERDRACHT BOOLEAN
);

CREATE TABLE ENUMSIGNAALSTATUS_ENUM (
    ENUMSIGNAALSTATUS_ENUM_ID INTEGER PRIMARY KEY,
    VALUE VARCHAR(255)
);

INSERT INTO ENUMSIGNAALSTATUS_ENUM (ENUMSIGNAALSTATUS_ENUM_ID, VALUE) VALUES
    (1, 'INWONER_IS_OVERLEDEN'),
    (2, 'NIET_OPGEPAKT_ANDERE_REDEN'),
    (3, 'NIET_OPGEPAKT_HERHAALDE_MELDING'),
    (4, 'NIET_OPGEPAKT_ONTERECHT_SIGNAAL'),
    (5, 'NOG_NIET_OPGEPAKT'),
    (6, 'PERSOON_IS_GEEN_INWONER_MEER_IN_DE_GEMEENTE');

CREATE TABLE ENUMDAGDEEL_ENUM (
    ENUMDAGDEEL_ENUM_ID INTEGER PRIMARY KEY,
    VALUE VARCHAR(255)
);

INSERT INTO ENUMDAGDEEL_ENUM (ENUMDAGDEEL_ENUM_ID, VALUE) VALUES
    (1, 'AVOND'),
    (2, 'MIDDAG'),
    (3, 'OCHTEND');

CREATE TABLE ENUMSIGNAALPARTNER_ENUM (
    ENUMSIGNAALPARTNER_ENUM_ID INTEGER PRIMARY KEY,
    VALUE VARCHAR(255)
);

INSERT INTO ENUMSIGNAALPARTNER_ENUM (ENUMSIGNAALPARTNER_ENUM_ID, VALUE) VALUES
    (1, 'BELASTINGDIENST'),
    (2, 'CAK_EIGEN_BIJDRAGE'),
    (3, 'CAK_ZORGVERZEKERINGEN'),
    (4, 'DIENST_TOESLAGEN'),
    (5, 'DUO'),
    (6, 'ENERGIE'),
    (7, 'HUUR'),
    (8, 'HYPOTHEEK'),
    (9, 'OVERIGE'),
    (10, 'WATER'),
    (11, 'ZORG');

CREATE TABLE CONTACTPOGING (
    CONTACTPOGING_ID INTEGER PRIMARY KEY,
    BEREIKT BOOLEAN,
    DAGDEEL_ENUM_ID INTEGER,
    DATUM DATE,
    HEEFT_VROEGSIGNAALZAAK_ID INTEGER,
    SOORT_ENUM_ID INTEGER
);

CREATE TABLE NIETNATUURLIJKPERSOON (
    NIETNATUURLIJKPERSOON_ID INTEGER PRIMARY KEY,
    DATUMAANVANG DATE,
    DATUMEINDE DATE,
    DATUMUITSCHRIJVING DATE,
    DATUMVOORTZETTING DATE,
    FAXNUMMER VARCHAR(20),
    INGESCHREVEN BOOLEAN,
    INOPRICHTING BOOLEAN,
    KVKNUMMER VARCHAR(255),
    NNPID VARCHAR(255),
    RECHTSVORM VARCHAR(255),
    RSINNUMMER VARCHAR(255),
    STATUTAIRENAAM VARCHAR(255),
    STATUTAIREZETEL VARCHAR(255),
    WEBSITEURL VARCHAR(200)
);

CREATE TABLE ENUMEINDRESULTAAT_ENUM (
    ENUMEINDRESULTAAT_ENUM_ID INTEGER PRIMARY KEY,
    VALUE VARCHAR(255)
);

INSERT INTO ENUMEINDRESULTAAT_ENUM (ENUMEINDRESULTAAT_ENUM_ID, VALUE) VALUES
    (1, 'DEFINITIEF_GEEN_CONTACT_KUNNEN_KRIJGEN'),
    (2, 'GEEN_REACTIE_NA_EERDER_CONTACT'),
    (3, 'INWONER_AL_BEKEND_BIJ_SCHULDHULPVERLENING'),
    (4, 'INWONER_HEEFT_AL_EEN_ANDER_LOPEND_TRAJECT'),
    (5, 'INWONER_HEEFT_ZELF_AL_BETAALD_BETALINGSREGELING_GETROFFEN'),
    (6, 'INWONER_HOEFT_GEEN_HULP_VANUIT_VROEGSIGNALERING'),
    (7, 'INWONER_IS_OVERLEDEN'),
    (8, 'NIET_OPGEPAKT_ANDERE_REDEN'),
    (9, 'NIET_OPGEPAKT_HERHAALDE_MELDING'),
    (10, 'NIET_OPGEPAKT_ONTERECHT_SIGNAAL'),
    (11, 'PERSOON_IS_GEEN_INWONER_MEER_IN_DE_GEMEENTE'),
    (12, 'VERVOLGHULP_EN_OF_VERWIJZING_FINANCIEEL'),
    (13, 'VERVOLGHULP_EN_OF_VERWIJZING_NIET_FINANCIEEL'),
    (14, 'VERWIJZING_ZONDER_CONTACT'),
    (15, '_BUDGET_ADVIES_EN_OF_QUICK_FIX');

CREATE TABLE ENUMCONTACTSOORT_ENUM (
    ENUMCONTACTSOORT_ENUM_ID INTEGER PRIMARY KEY,
    VALUE VARCHAR(255)
);

INSERT INTO ENUMCONTACTSOORT_ENUM (ENUMCONTACTSOORT_ENUM_ID, VALUE) VALUES
    (1, 'ADMINISTRATIEF'),
    (2, 'AFSPRAAK_OP_LOCATIE'),
    (3, 'BRIEF'),
    (4, 'HUISBEZOEK'),
    (5, 'KAARTJE'),
    (6, 'MAIL'),
    (7, 'SMS_WHATSAPP'),
    (8, 'TELEFOON');

CREATE TABLE CLIENT (
    CLIENT_ID INTEGER PRIMARY KEY,
    CODE VARCHAR(80),
    GEZAGSDRAGERGEKEND BOOLEAN,
    JURIDISCHESTATUS VARCHAR(80),
    WETTELIJKEVERTEGENWOORDIGING VARCHAR(80)
);

CREATE TABLE VROEGSIGNAALZAAK (
    VROEGSIGNAALZAAK_ID INTEGER PRIMARY KEY,
    DATUM_OPGEPAKT DATE,
    EINDDATUM_MATCHINGPERIODE DATE,
    MATCHINGSDATUM DATE,
    OPGEPAKTDOOR_NIETNATUURLIJKPERSOON_ID INTEGER,
    OPGEPAKTNAMENS_GEMEENTE_ID INTEGER,
    RESULTAAT_ENUM_ID INTEGER,
    STARTDATUM_MATCHTINGPERIODE DATE
);

CREATE TABLE GEMEENTE (
    GEMEENTE_ID INTEGER PRIMARY KEY,
    BEGINGELDIGHEID DATE,
    DATUMEINDE DATE,
    DATUMINGANG DATE,
    EINDGELDIGHEID DATE,
    GECONSTATEERD BOOLEAN,
    GEMEENTECODE VARCHAR(255),
    GEMEENTENAAM VARCHAR(80),
    GEMEENTENAAM_NEN VARCHAR(255),
    GEOMETRIE GEOMETRY,
    IDENTIFICATIE VARCHAR(255),
    VERSIE INTEGER
);

CREATE TABLE KP_GMNT_IS_OVRGGN_IN (
    KP_GMNT_IS_OVRGGN_IN_ID INTEGER PRIMARY KEY,
    IS_OVERGEGAAN_IN_1_ID INTEGER,
    IS_OVERGEGAAN_IN_2_ID INTEGER
);

CREATE TABLE SIGNAALPARTNER (
    SIGNAALPARTNER_ID INTEGER PRIMARY KEY,
    TYPE_ENUM_ID INTEGER
);

ALTER TABLE KP_GMNT_IS_OVRGGN_IN ADD CONSTRAINT FK_KP_GMNT_IS_OVRGGN_IN_1 FOREIGN KEY (IS_OVERGEGAAN_IN_1_ID) REFERENCES GEMEENTE (GEMEENTE_ID);
-- GEMEENTE (many-to-many junction, Connector_ID: 2233)

ALTER TABLE KP_GMNT_IS_OVRGGN_IN ADD CONSTRAINT FK_KP_GMNT_IS_OVRGGN_IN_2 FOREIGN KEY (IS_OVERGEGAAN_IN_2_ID) REFERENCES GEMEENTE (GEMEENTE_ID);
-- GEMEENTE (many-to-many junction, Connector_ID: 2233)

ALTER TABLE VROEGSIGNAAL ADD CONSTRAINT FK_VROEGSIGNAAL_BETREFT FOREIGN KEY (BETREFT_CLIENT_ID) REFERENCES CLIENT (CLIENT_ID);
-- BETREFT (0..* to 1, Connector_ID: 1504)

ALTER TABLE VROEGSIGNAAL ADD CONSTRAINT FK_VROEGSIGNAAL_OPGEPAKTIN FOREIGN KEY (OPGEPAKTIN_VROEGSIGNAALZAAK_ID) REFERENCES VROEGSIGNAALZAAK (VROEGSIGNAALZAAK_ID);
-- OPGEPAKTIN (1..* to 0..1, Connector_ID: 1505)

ALTER TABLE CONTACTPOGING ADD CONSTRAINT FK_CONTACTPOGING_HEEFT FOREIGN KEY (HEEFT_VROEGSIGNAALZAAK_ID) REFERENCES VROEGSIGNAALZAAK (VROEGSIGNAALZAAK_ID);
-- HEEFT (1 to 0..*, Connector_ID: 1506)

ALTER TABLE VROEGSIGNAAL ADD CONSTRAINT FK_VROEGSIGNAAL_VERZONDENDOOR FOREIGN KEY (VERZONDENDOOR_SIGNAALPARTNER_ID) REFERENCES SIGNAALPARTNER (SIGNAALPARTNER_ID);
-- VERZONDENDOOR (0..* to 1, Connector_ID: 1507)

ALTER TABLE VROEGSIGNAALZAAK ADD CONSTRAINT FK_VROEGSIGNAALZAAK_OPGEPAKTNAMENS FOREIGN KEY (OPGEPAKTNAMENS_GEMEENTE_ID) REFERENCES GEMEENTE (GEMEENTE_ID);
-- OPGEPAKTNAMENS (0..* to 1, Connector_ID: 1509)

ALTER TABLE VROEGSIGNAALZAAK ADD CONSTRAINT FK_VROEGSIGNAALZAAK_OPGEPAKTDOOR FOREIGN KEY (OPGEPAKTDOOR_NIETNATUURLIJKPERSOON_ID) REFERENCES NIETNATUURLIJKPERSOON (NIETNATUURLIJKPERSOON_ID);
-- OPGEPAKTDOOR (0..* to 1, Connector_ID: 1532)

ALTER TABLE VROEGSIGNAALZAAK ADD CONSTRAINT FK_VROEGSIGNAALZAAK_RESULTAAT_ENUM_ID FOREIGN KEY (RESULTAAT_ENUM_ID_ENUMEINDRESULTAAT_ENUM_ID) REFERENCES ENUMEINDRESULTAAT_ENUM (ENUMEINDRESULTAAT_ENUM_ID);
-- RESULTAAT_ENUM_ID (1 to 1, Connector_ID: enum_ref)

ALTER TABLE CONTACTPOGING ADD CONSTRAINT FK_CONTACTPOGING_SOORT_ENUM_ID FOREIGN KEY (SOORT_ENUM_ID_ENUMCONTACTSOORT_ENUM_ID) REFERENCES ENUMCONTACTSOORT_ENUM (ENUMCONTACTSOORT_ENUM_ID);
-- SOORT_ENUM_ID (1 to 1, Connector_ID: enum_ref)

ALTER TABLE CONTACTPOGING ADD CONSTRAINT FK_CONTACTPOGING_DAGDEEL_ENUM_ID FOREIGN KEY (DAGDEEL_ENUM_ID_ENUMDAGDEEL_ENUM_ID) REFERENCES ENUMDAGDEEL_ENUM (ENUMDAGDEEL_ENUM_ID);
-- DAGDEEL_ENUM_ID (1 to 1, Connector_ID: enum_ref)

ALTER TABLE SIGNAALPARTNER ADD CONSTRAINT FK_SIGNAALPARTNER_TYPE_ENUM_ID FOREIGN KEY (TYPE_ENUM_ID_ENUMSIGNAALPARTNER_ENUM_ID) REFERENCES ENUMSIGNAALPARTNER_ENUM (ENUMSIGNAALPARTNER_ENUM_ID);
-- TYPE_ENUM_ID (1 to 1, Connector_ID: enum_ref)

ALTER TABLE VROEGSIGNAAL ADD CONSTRAINT FK_VROEGSIGNAAL_STATUS_ENUM_ID FOREIGN KEY (STATUS_ENUM_ID_ENUMSIGNAALSTATUS_ENUM_ID) REFERENCES ENUMSIGNAALSTATUS_ENUM (ENUMSIGNAALSTATUS_ENUM_ID);
-- STATUS_ENUM_ID (1 to 1, Connector_ID: enum_ref)

