CREATE TABLE RECHTSPERSOON (
    RECHTSPERSOON_ID NUMBER PRIMARY KEY,
    ADRESBINNENLAND VARCHAR2(255),
    ADRESBUITENLAND VARCHAR2(255),
    ADRESCORRESPONDENTIE VARCHAR2(100),
    EMAILADRES VARCHAR2(80),
    FAXNUMMER VARCHAR2(20),
    IDENTIFICATIE VARCHAR2(255),
    KVKNUMMER VARCHAR2(20),
    NAAM VARCHAR2(200),
    RECHTSVORM VARCHAR2(100),
    REKENINGNUMMER VARCHAR2(255),
    TELEFOONNUMMER VARCHAR2(20)
);

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

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

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 NIETNATUURLIJKPERSOON (
    RECHTSPERSOON_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 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 ZAAK (
    ZAAK_ID NUMBER PRIMARY KEY,
    ARCHIEFNOMINATIE VARCHAR2(255),
    DATUMEINDE DATE,
    DATUMEINDEGEPLAND DATE,
    DATUMEINDEUITERLIJKEAFDOENING DATE,
    DATUMLAATSTEBETALING DATE,
    DATUMPUBLICATIE DATE,
    DATUMREGISTRATIE DATE,
    DATUMSTART DATE,
    DATUMVERNIETIGINGDOSSIER DATE,
    DUURVERLENGING VARCHAR2(255),
    HEEFT_BETREKKING_OP_ANDERE_ZAAK_ID NUMBER,
    INDICATIEBETALING VARCHAR2(255),
    INDICATIEDEELZAKEN NUMBER(1),
    INDICATIEOPSCHORTING VARCHAR2(255),
    IS_DEELZAAK_VAN_ZAAK_ID NUMBER,
    LEGES VARCHAR2(100),
    OMSCHRIJVING VARCHAR2(80),
    OMSCHRIJVINGRESULTAAT VARCHAR2(80),
    REDENOPSCHORTING VARCHAR2(200),
    REDENVERLENGING VARCHAR2(200),
    TOELICHTING VARCHAR2(255),
    TOELICHTINGRESULTAAT VARCHAR2(255),
    VERTROUWELIJKHEID VARCHAR2(255),
    ZAAKIDENTIFICATIE VARCHAR2(255),
    ZAAKNIVEAU VARCHAR2(255)
);

CREATE TABLE KP_NTNTRLJKPRSN_RCHTSPRSN (
    KP_NTNTRLJKPRSN_RCHTSPRSN_ID NUMBER PRIMARY KEY,
    NIETNATUURLIJKPERSOON_ID NUMBER,
    RECHTSPERSOON_ID NUMBER
);

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

CREATE TABLE CONTACTPERSOON (
    CONTACTPERSOON_ID NUMBER PRIMARY KEY,
    CONTACTPERSONEN_AANLEVERENDEORGANISATIE_ID NUMBER,
    EMAIL VARCHAR2(255),
    FUNCTIETITEL VARCHAR2(200),
    NAAM VARCHAR2(200),
    TELEFOONNUMMER VARCHAR2(200)
);

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 KP_VRGSGNLZK_ZK (
    KP_VRGSGNLZK_ZK_ID NUMBER PRIMARY KEY,
    VROEGSIGNAALZAAK_ID NUMBER,
    ZAAK_ID NUMBER
);

CREATE TABLE VROEGSIGNAAL (
    VROEGSIGNAAL_ID NUMBER PRIMARY KEY,
    BEDRAG NUMBER(10,2),
    BETREFT_CLIENT_ID NUMBER,
    CRISISSIGNAAL NUMBER(1),
    ONTSTAANSDATUM DATE,
    OPGEPAKTIN_ZAAK_ID NUMBER,
    SIGNAALDATUM DATE,
    STATUS VARCHAR2(255),
    VERZONDENDOOR_RECHTSPERSOON_ID NUMBER,
    WARMEOVERDRACHT NUMBER(1)
);

CREATE TABLE KP_SGNLPRTNR_RCHTSPRSN (
    KP_SGNLPRTNR_RCHTSPRSN_ID NUMBER PRIMARY KEY,
    SIGNAALPARTNER_ID NUMBER,
    RECHTSPERSOON_ID NUMBER
);

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 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 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 AANLEVERENDEORGANISATIE (
    AANLEVERENDEORGANISATIE_ID NUMBER PRIMARY KEY,
    KVK_NUMMER VARCHAR2(80),
    NAAM VARCHAR2(200)
);

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

ALTER TABLE VROEGSIGNAALZAAK ADD CONSTRAINT FK_VROEGSIGNAALZAAK_GEN_ZAAK FOREIGN KEY (ZAAK_ID) REFERENCES ZAAK (ZAAK_ID);
-- Generalization to ZAAK

ALTER TABLE SIGNAALPARTNER ADD CONSTRAINT FK_SIGNAALPARTNER_GEN_RECHTSPERSOON FOREIGN KEY (RECHTSPERSOON_ID) REFERENCES RECHTSPERSOON (RECHTSPERSOON_ID);
-- Generalization to RECHTSPERSOON

ALTER TABLE NIETNATUURLIJKPERSOON ADD CONSTRAINT FK_NIETNATUURLIJKPERSOON_GEN_RECHTSPERSOON FOREIGN KEY (RECHTSPERSOON_ID) REFERENCES RECHTSPERSOON (RECHTSPERSOON_ID);
-- Generalization to RECHTSPERSOON

ALTER TABLE KP_VRGSGNLZK_ZK ADD CONSTRAINT FK_KP_VRGSGNLZK_ZK_1 FOREIGN KEY (VROEGSIGNAALZAAK_ID) REFERENCES VROEGSIGNAALZAAK (ZAAK_ID);
-- VROEGSIGNAALZAAK (many-to-many junction, Connector_ID: 1510)

ALTER TABLE KP_VRGSGNLZK_ZK ADD CONSTRAINT FK_KP_VRGSGNLZK_ZK_2 FOREIGN KEY (ZAAK_ID) REFERENCES ZAAK (ZAAK_ID);
-- ZAAK (many-to-many junction, Connector_ID: 1510)

ALTER TABLE KP_SGNLPRTNR_RCHTSPRSN ADD CONSTRAINT FK_KP_SGNLPRTNR_RCHTSPRSN_1 FOREIGN KEY (SIGNAALPARTNER_ID) REFERENCES SIGNAALPARTNER (RECHTSPERSOON_ID);
-- SIGNAALPARTNER (many-to-many junction, Connector_ID: 1531)

ALTER TABLE KP_SGNLPRTNR_RCHTSPRSN ADD CONSTRAINT FK_KP_SGNLPRTNR_RCHTSPRSN_2 FOREIGN KEY (RECHTSPERSOON_ID) REFERENCES RECHTSPERSOON (RECHTSPERSOON_ID);
-- RECHTSPERSOON (many-to-many junction, Connector_ID: 1531)

ALTER TABLE KP_NTNTRLJKPRSN_RCHTSPRSN ADD CONSTRAINT FK_KP_NTNTRLJKPRSN_RCHTSPRSN_1 FOREIGN KEY (NIETNATUURLIJKPERSOON_ID) REFERENCES NIETNATUURLIJKPERSOON (RECHTSPERSOON_ID);
-- NIETNATUURLIJKPERSOON (many-to-many junction, Connector_ID: 1971)

ALTER TABLE KP_NTNTRLJKPRSN_RCHTSPRSN ADD CONSTRAINT FK_KP_NTNTRLJKPRSN_RCHTSPRSN_2 FOREIGN KEY (RECHTSPERSOON_ID) REFERENCES RECHTSPERSOON (RECHTSPERSOON_ID);
-- RECHTSPERSOON (many-to-many junction, Connector_ID: 1971)

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_ZAAK_ID) REFERENCES ZAAK (ZAAK_ID);
-- OPGEPAKTIN (1..* to 0..1, Connector_ID: 1505)

ALTER TABLE CONTACTPOGING ADD CONSTRAINT FK_CONTACTPOGING_HEEFT FOREIGN KEY (HEEFT_ZAAK_ID) REFERENCES ZAAK (ZAAK_ID);
-- HEEFT (1 to 0..*, Connector_ID: 1506)

ALTER TABLE VROEGSIGNAAL ADD CONSTRAINT FK_VROEGSIGNAAL_VERZONDENDOOR FOREIGN KEY (VERZONDENDOOR_RECHTSPERSOON_ID) REFERENCES RECHTSPERSOON (RECHTSPERSOON_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_RECHTSPERSOON_ID) REFERENCES RECHTSPERSOON (RECHTSPERSOON_ID);
-- OPGEPAKTDOOR (0..* to 1, Connector_ID: 1532)

ALTER TABLE CONTACTPERSOON ADD CONSTRAINT FK_CONTACTPERSOON_CONTACTPERSONEN FOREIGN KEY (CONTACTPERSONEN_AANLEVERENDEORGANISATIE_ID) REFERENCES AANLEVERENDEORGANISATIE (AANLEVERENDEORGANISATIE_ID);
-- CONTACTPERSONEN (1 to 1..*, Connector_ID: 1534)

ALTER TABLE ZAAK ADD CONSTRAINT FK_ZAAK_HEEFT_BETREKKING_OP_ANDERE FOREIGN KEY (HEEFT_BETREKKING_OP_ANDERE_ZAAK_ID) REFERENCES ZAAK (ZAAK_ID);
-- HEEFT_BETREKKING_OP_ANDERE (1 to 0..*, Connector_ID: 2108)

ALTER TABLE ZAAK ADD CONSTRAINT FK_ZAAK_IS_DEELZAAK_VAN FOREIGN KEY (IS_DEELZAAK_VAN_ZAAK_ID) REFERENCES ZAAK (ZAAK_ID);
-- IS_DEELZAAK_VAN (1 to 0..1, Connector_ID: 2121)

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)

