diff --git a/package-lock.json b/package-lock.json
index bca00929..af7d3a50 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -284,9 +284,9 @@
"integrity": "sha512-MhCUjojzDhVLnZnxwPwa+rETFRDQ0ffjxYdrqOP6TBO2O0/Z64PV5tNeYApo4bc4y4frbWOrRwv/eEkXlI13Rw=="
},
"@types/lodash": {
- "version": "4.14.121",
- "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.121.tgz",
- "integrity": "sha512-ORj7IBWj13iYufXt/VXrCNMbUuCTJfhzme5kx9U/UtcIPdJYuvPDUAlHlbNhz/8lKCLy9XGIZnGrqXOtQbPGoQ==",
+ "version": "4.14.120",
+ "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.120.tgz",
+ "integrity": "sha512-jQ21kQ120mo+IrDs1nFNVm/AsdFxIx2+vZ347DbogHJPd/JzKNMOqU6HCYin1W6v8l5R9XSO2/e9cxmn7HAnVw==",
"dev": true
},
"@types/marked": {
@@ -314,9 +314,9 @@
"dev": true
},
"@types/node": {
- "version": "11.9.3",
- "resolved": "https://registry.npmjs.org/@types/node/-/node-11.9.3.tgz",
- "integrity": "sha512-DMiqG51GwES/c4ScBY0u5bDlH44+oY8AeYHjY1SGCWidD7h08o1dfHue/TGK7REmif2KiJzaUskO+Q0eaeZ2fQ==",
+ "version": "11.9.4",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-11.9.4.tgz",
+ "integrity": "sha512-Zl8dGvAcEmadgs1tmSPcvwzO1YRsz38bVJQvH1RvRqSR9/5n61Q1ktcDL0ht3FXWR+ZpVmXVwN1LuH4Ax23NsA==",
"dev": true
},
"@types/nodemailer": {
@@ -340,9 +340,9 @@
}
},
"@types/shelljs": {
- "version": "0.8.3",
- "resolved": "https://registry.npmjs.org/@types/shelljs/-/shelljs-0.8.3.tgz",
- "integrity": "sha512-miY41hqc5SkRlsZDod3heDa4OS9xv8G77EMBQuSpqq86HBn66l7F+f8y9YKm+1PIuwC8QEZVwN8YxOOG7Y67fA==",
+ "version": "0.8.2",
+ "resolved": "https://registry.npmjs.org/@types/shelljs/-/shelljs-0.8.2.tgz",
+ "integrity": "sha512-vVp7BCQn0yUQgpiohrdxAhHdm/bTlXshB4HG3LEBq1PgvjKiyeYHohIPIv0QBt/jipb140iMS5Xy1iR6qKovKw==",
"dev": true,
"requires": {
"@types/glob": "*",
diff --git a/package.json b/package.json
index 3fa9e2b0..097cc9d2 100644
--- a/package.json
+++ b/package.json
@@ -46,7 +46,7 @@
"@openstapps/logger": "0.0.5",
"@types/chai": "4.1.7",
"@types/humanize-string": "1.0.0",
- "@types/node": "11.9.3",
+ "@types/node": "11.9.4",
"@types/rimraf": "2.0.2",
"async-pool-native": "0.1.0",
"chai": "4.2.0",
diff --git a/src/core/base/ThingInPlace.ts b/src/core/base/ThingInPlace.ts
index 32888544..024359ad 100644
--- a/src/core/base/ThingInPlace.ts
+++ b/src/core/base/ThingInPlace.ts
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2018 StApps
+ * Copyright (C) 2018-2019 StApps
* This program is free software: you can redistribute it and/or modify it
* under the terms of the GNU General Public License as published by the Free
* Software Foundation, version 3.
@@ -13,19 +13,9 @@
* this program. If not, see .
*/
import {SCThing} from '../Thing';
-import {SCBuildingWithoutReferences} from '../things/Building';
-import {SCPointOfInterestWithoutReferences} from '../things/PointOfInterest';
-import {SCRoomWithoutReferences} from '../things/Room';
+import {SCInPlace} from '../types/Places';
/**
* A thing that is or happens in a place
*/
-export interface SCThingInPlace extends SCThing {
- /**
- * Place the thing is or happens in
- */
- inPlace?:
- SCBuildingWithoutReferences
- | SCPointOfInterestWithoutReferences
- | SCRoomWithoutReferences;
-}
+export interface SCThingInPlace extends SCThing, SCInPlace {}
diff --git a/src/core/base/ThingThatCanBeOffered.ts b/src/core/base/ThingThatCanBeOffered.ts
index 4893b381..21c2332c 100644
--- a/src/core/base/ThingThatCanBeOffered.ts
+++ b/src/core/base/ThingThatCanBeOffered.ts
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2018 StApps
+ * Copyright (C) 2018-2019 StApps
* This program is free software: you can redistribute it and/or modify it
* under the terms of the GNU General Public License as published by the Free
* Software Foundation, version 3.
@@ -13,13 +13,11 @@
* this program. If not, see .
*/
import {SCThing, SCThingTranslatableProperties} from '../Thing';
-import {SCBuildingWithoutReferences} from '../things/Building';
import {SCOrganizationWithoutReferences} from '../things/Organization';
import {SCPersonWithoutReferences} from '../things/Person';
-import {SCPointOfInterestWithoutReferences} from '../things/PointOfInterest';
-import {SCRoomWithoutReferences} from '../things/Room';
import {SCTranslations} from '../types/i18n';
import {SCISO8601Date} from '../types/Time';
+import {SCInPlace} from './../types/Places';
/**
* A map from group name to price
@@ -51,7 +49,8 @@ export interface SCAcademicPriceGroup extends SCPriceGroup {
/**
* A thing without references that has a price tag
*/
-export interface SCThingThatCanBeOffered extends SCThing {
+export interface SCThingThatCanBeOffered
+ extends SCThing {
/**
* List of offers for that thing
*/
@@ -66,7 +65,8 @@ export interface SCThingThatCanBeOffered extends SCThing
/**
* Offer of a thing
*/
-export interface SCThingThatCanBeOfferedOffer {
+export interface SCThingThatCanBeOfferedOffer
+ extends SCInPlace {
/**
* Availability of an offer
*/
@@ -101,7 +101,8 @@ export interface SCThingThatCanBeOfferedOffer {
/**
* Translatable properties of a thing that can be offered
*/
-export interface SCThingThatCanBeOfferedTranslatableProperties extends SCThingTranslatableProperties {
+export interface SCThingThatCanBeOfferedTranslatableProperties
+ extends SCThingTranslatableProperties {
/**
* Availability of an offer
*/
@@ -109,20 +110,17 @@ export interface SCThingThatCanBeOfferedTranslatableProperties extends SCThingTr
}
/**
- * Possible things a provider can be
+ * Entity responsible for the offer
*/
export type SCThingThatCanBeOfferedProvider =
- SCBuildingWithoutReferences
| SCOrganizationWithoutReferences
- | SCPersonWithoutReferences
- | SCPointOfInterestWithoutReferences
- | SCRoomWithoutReferences;
+ | SCPersonWithoutReferences;
/**
* Availability of an Offer
*/
export type SCThingThatCanBeOfferedAvailability =
- 'in stock'
+ | 'in stock'
| 'out of stock'
| 'online only'
| 'limited availability';
diff --git a/src/core/things/Dish.ts b/src/core/things/Dish.ts
index fa5ecb4a..6b47fd46 100644
--- a/src/core/things/Dish.ts
+++ b/src/core/things/Dish.ts
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2018 StApps
+ * Copyright (C) 2018-2019 StApps
* This program is free software: you can redistribute it and/or modify it
* under the terms of the GNU General Public License as published by the Free
* Software Foundation, version 3.
@@ -12,7 +12,6 @@
* You should have received a copy of the GNU General Public License along with
* this program. If not, see .
*/
-import {SCThingInPlace} from '../base/ThingInPlace';
import {
SCAcademicPriceGroup,
SCThingThatCanBeOffered,
@@ -30,8 +29,10 @@ import {SCTranslations} from '../types/i18n';
* A dish without references
*/
export interface SCDishWithoutReferences
- extends SCThingWithCategoriesWithoutReferences,
+ extends SCThingWithCategoriesWithoutReferences<
+ SCDishCategories,
+ SCThingWithCategoriesSpecificValues
+ >,
SCThingThatCanBeOffered {
/**
* Additives of the dish
@@ -69,7 +70,7 @@ export interface SCDishWithoutReferences
*
* @validatable
*/
-export interface SCDish extends SCDishWithoutReferences, SCThingInPlace {
+export interface SCDish extends SCDishWithoutReferences {
/**
* Dishes ("Beilagen") that are served with the dish (if only certain supplement dishes can be taken with a dish)
*/
@@ -87,8 +88,8 @@ export interface SCDish extends SCDishWithoutReferences, SCThingInPlace {
}
export interface SCDishTranslatableProperties
- extends SCThingWithCategoriesTranslatableProperties, SCThingThatCanBeOfferedTranslatableProperties {
-}
+ extends SCThingWithCategoriesTranslatableProperties,
+ SCThingThatCanBeOfferedTranslatableProperties {}
/**
* Dish meta data
@@ -121,7 +122,7 @@ export interface SCDishCharacteristic {
* A list of categories for dishes
*/
export type SCDishCategories =
- 'appetizer'
+ | 'appetizer'
| 'salad'
| 'main dish'
| 'dessert'
diff --git a/src/core/types/Places.ts b/src/core/types/Places.ts
new file mode 100644
index 00000000..67066c41
--- /dev/null
+++ b/src/core/types/Places.ts
@@ -0,0 +1,32 @@
+/*
+ * Copyright (C) 2019 StApps
+ * This program is free software: you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the Free
+ * Software Foundation, version 3.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * this program. If not, see .
+ */
+import {SCBuildingWithoutReferences} from '../things/Building';
+import {SCPointOfInterestWithoutReferences} from '../things/PointOfInterest';
+import {SCRoomWithoutReferences} from '../things/Room';
+/**
+ * Something that is or happens in a place
+ *
+ * !Important!
+ * This is not a SCThing.
+ */
+export interface SCInPlace {
+ /**
+ * Place the thing is or happens in
+ */
+ inPlace?:
+ SCBuildingWithoutReferences
+ | SCPointOfInterestWithoutReferences
+ | SCRoomWithoutReferences;
+}
diff --git a/test/resources/Dish.1.json b/test/resources/Dish.1.json
index e30ccd4c..9b1e4709 100644
--- a/test/resources/Dish.1.json
+++ b/test/resources/Dish.1.json
@@ -27,6 +27,16 @@
"employee": 2.85
},
"provider": {
+ "name": "Studentenwerk",
+ "origin": {
+ "indexed": "2018-09-11T12:30:00Z",
+ "name": "Dummy",
+ "type": "remote"
+ },
+ "type": "organization",
+ "uid": "3b9b3df6-3a7a-58cc-922f-c7335c002634"
+ },
+ "inPlace": {
"geo": {
"point": {
"type": "Point",
diff --git a/test/resources/Dish.2.json b/test/resources/Dish.2.json
index d74f8359..8d697851 100644
--- a/test/resources/Dish.2.json
+++ b/test/resources/Dish.2.json
@@ -14,10 +14,20 @@
"student": 2.45,
"employee": 2.45
},
+ "provider": {
+ "name": "Studentenwerk",
+ "origin": {
+ "indexed": "2018-09-11T12:30:00Z",
+ "name": "Dummy",
+ "type": "remote"
+ },
+ "type": "organization",
+ "uid": "3b9b3df6-3a7a-58cc-922f-c7335c002634"
+ },
"availability": "in stock",
"availabilityStarts": "2017-01-30T00:00:00.000Z",
"availabilityEnds": "2017-01-30T23:59:59.999Z",
- "provider": {
+ "inPlace": {
"geo": {
"point": {
"type": "Point",
diff --git a/test/resources/Dish.3.json b/test/resources/Dish.3.json
index 714f40ee..992e570b 100644
--- a/test/resources/Dish.3.json
+++ b/test/resources/Dish.3.json
@@ -14,12 +14,7 @@
"availabilityEnds": "2017-03-27T23:59:59.000Z",
"availabilityStarts": "2017-03-27T00:00:00.000Z",
"availability": "in stock",
- "prices": {
- "student": 4.9,
- "employee": 6.5
- },
- "price": 6.5,
- "provider": {
+ "inPlace": {
"type": "room",
"name": "Cafeteria LEVEL",
"categories": [
@@ -44,6 +39,21 @@
"name": "Dummy",
"type": "remote"
}
+ },
+ "prices": {
+ "student": 4.9,
+ "employee": 6.5
+ },
+ "price": 6.5,
+ "provider": {
+ "name": "Studentenwerk",
+ "origin": {
+ "indexed": "2018-09-11T12:30:00Z",
+ "name": "Dummy",
+ "type": "remote"
+ },
+ "type": "organization",
+ "uid": "3b9b3df6-3a7a-58cc-922f-c7335c002634"
}
}
],