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" } } ],