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

CREATE TABLE ENUMSIGNAALSTATUS_ENUM (
    ENUMSIGNAALSTATUS_ENUM_ID NUMBER PRIMARY KEY,
    VALUE VARCHAR2(255)
);

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

CREATE TABLE ENUMDAGDEEL_ENUM (
    ENUMDAGDEEL_ENUM_ID NUMBER PRIMARY KEY,
    VALUE VARCHAR2(255)
);

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

CREATE TABLE ENUMSIGNAALPARTNER_ENUM (
    ENUMSIGNAALPARTNER_ENUM_ID NUMBER PRIMARY KEY,
    VALUE VARCHAR2(255)
);

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

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

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

CREATE TABLE ENUMEINDRESULTAAT_ENUM (
    ENUMEINDRESULTAAT_ENUM_ID NUMBER PRIMARY KEY,
    VALUE VARCHAR2(255)
);

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

CREATE TABLE ENUMCONTACTSOORT_ENUM (
    ENUMCONTACTSOORT_ENUM_ID NUMBER PRIMARY KEY,
    VALUE VARCHAR2(255)
);

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

CREATE TABLE CLIENT (
    CLIENT_ID NUMBER PRIMARY KEY,
    CODE VARCHAR2(80),
    GEZAGSDRAGERGEKEND NUMBER(1),
    JURIDISCHESTATUS VARCHAR2(80),
    WETTELIJKEVERTEGENWOORDIGING VARCHAR2(80)
);

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

CREATE TABLE GEMEENTE (
    GEMEENTE_ID NUMBER PRIMARY KEY,
    BEGINGELDIGHEID DATE,
    DATUMEINDE DATE,
    DATUMINGANG DATE,
    EINDGELDIGHEID DATE,
    GECONSTATEERD NUMBER(1),
    GEMEENTECODE VARCHAR2(255),
    GEMEENTENAAM VARCHAR2(80),
    GEMEENTENAAM_NEN VARCHAR2(255),
    GEOMETRIE SDO_GEOMETRY,
    IDENTIFICATIE VARCHAR2(255),
    VERSIE NUMBER
);

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

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

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_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 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 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)

