/* * Copyright (C) 2018 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 {SCThingInPlace} from '../base/ThingInPlace'; import { SCAcademicPriceGroup, SCThingThatCanBeOffered, SCThingThatCanBeOfferedTranslatableProperties, } from '../base/ThingThatCanBeOffered'; import { SCThingWithCategoriesSpecificValues, SCThingWithCategoriesTranslatableProperties, SCThingWithCategoriesWithoutReferences, } from '../base/ThingWithCategories'; import {SCThingMeta, SCThingType} from '../Thing'; import {SCTranslations} from '../types/i18n'; /** * A dish without references */ export interface SCDishWithoutReferences extends SCThingWithCategoriesWithoutReferences, SCThingThatCanBeOffered { /** * Additives of the dish */ additives?: string[]; /** * Category of the dish */ categories: SCDishCategories[]; /** * Characteristics of the dish */ characteristics?: string[]; /** * Nutrition information (calories and nutrients with amounts) */ nutrition?: SCNutritionInformation; /** * Translated fields of a dish */ translations?: SCTranslations; /** * Type of a dish */ type: SCThingType.Dish; } /** * A dish * * @validatable */ export interface SCDish extends SCDishWithoutReferences, SCThingInPlace { /** * Dishes ("Beilagen") that are served with the dish (if only certain supplement dishes can be taken with a dish) */ dishAddOns?: SCDishWithoutReferences[]; /** * Translated fields of a dish */ translations?: SCTranslations; /** * Type of a dish */ type: SCThingType.Dish; } export interface SCDishTranslatableProperties extends SCThingWithCategoriesTranslatableProperties, SCThingThatCanBeOfferedTranslatableProperties { } /** * Dish meta data */ export class SCDishMeta extends SCThingMeta { static fieldTranslations = { ...SCThingMeta.fieldTranslations, de: { categories: 'Kategorien', }, }; } /** * A list of categories for dishes */ export type SCDishCategories = 'appetizer' | 'salad' | 'main dish' | 'dessert' | 'soup' | 'side dish'; /** * Type definition for SCNutritionInformation * * @see https://schema.org/NutritionInformation */ export interface SCNutritionInformation { /** * Number of calories contained (in kcal) */ calories?: number; /** * Content of carbohydrates (in grams) */ carbohydrateContent?: number; /** * Content of fat (in grams) */ fatContent?: number; /** * Content of proteins (in grams) */ proteinContent?: number; /** * Content of salt (in grams) */ saltContent?: number; /** * Content of saturated fat (in grams) */ saturatedFatContent?: number; /** * Content of sugar (in grams) */ sugarContent?: number; }