/** * Hilfsklasse für die Erstellung eines Guid */ export class Guid { /** * Erstellt einen Guid (siehe: http://stackoverflow.com/questions/26501688/a-typescript-guid-class) */ public static newGuid(): string { return "xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g, function (c) { var r = Math.random() * 16 | 0, v = c === "x" ? r : (r & 0x3 | 0x8); return v.toString(16); }); } /** * Empty Guid */ public static empty(): string { return "00000000-0000-0000-0000-000000000000"; } } /** * Hilfsklasse für den Sprachwechsel */ export class ChangeLanguage { culture: string; returnUrl: string; } /** * Hilfsklasse für die Anzeige von Audit-Infos */ export class AuditInfoParams { key: string; table: string; constructor(key: string, table: string) { this.key = key; this.table = table; } } /**Hilfsklasse Dictionary als Counter */ export class CounterDictionary { key: string; count: number; constructor(key: string, count: number) { this.key = key; this.count = count; } } /**Sex-Enum */ export enum Sex { undefined, male, female, diverse, inter, open } /**Typ eines Abos */ export enum SignalrMessageType { /* Erfolg - GRÜN */ success = 10, /* Warnung - ORANGE */ warning = 20, /* Fehler - ROT */ alert = 30 } /**Sex-Enum */ export enum OnlineStatus { offline, online } export enum FaqType { dogOwner = 10, dogWalker = 20, both = 30 } /**Definiert die Sichtbarkeit von Shop-Items (Kategorien & Artikel) je nach Benutzergruppe */ export enum ShopVisibility { /**Nicht sichtbar */ None = 0, /**Sichtbar für Kunden */ Customers = 1, /**Sichtbar für Hundebesitzer */ AppUserDogOwner = 10, /**Sichtbar für Hundeausführer */ AppUserDogWalker = 20, /**Sichtbar für Hundebesitzer und Hundeausführer */ AppUserBoth = 30, /**Sichtbar für alle, also Kunden Hundebesitzer und Hundeausführer */ All = 100 } /**Produkttypen für die Unterscheidung für gehGassi */ export enum ProductType { /**Physisches Produkt */ Physical = 1, /**Digitales Produkt / Download (z.B.: ein PDF) */ Download = 2, /**Eine Listung auf gehGassi */ Listing = 10, /**Eine Werbung auf gehGassi */ Advertisement = 20, /**Ein Pin auf gehGassi */ Pin = 30, /**Banner auf gehGassi */ Banner = 40 } /**Typ der Listung */ export enum ListingType { /**Basis-Listung */ Base = 0, /**Silber-Listung */ Silver = 10, /**Gold-Listung */ Gold = 20, /**Platin-Listung */ Platin = 30 } /**Art eines Preises für die Kalkulation */ export enum PriceType { /**Je Stück */ Piece = 1, /**Je Tag */ Day = 10, /**Je Monat */ Month = 20, /**Je Jahr */ Year = 30, /**Je View */ View = 40 } /** * Wie sollen Preise berechnet werden, wenn ein Zeitraum unter dem Jahr gewählt wird * Es geht um mögliche Berechnungen eines aliquoten Anteils. * Z.B. Ein Jahr, wenn zum 1.1. aber erst später gebucht wird, dann nur Restmonate berechnen */ export enum PriceAliquotType { /**Keine aliquote Berechnung möglich */ None = 1, /**Basierend auf Tagen */ Day = 10, /**Basierend auf Monaten */ Month = 20 } /**Wenn es sich um ein Produkt mit dem PreisTyp auf Zeitbasis handelt */ export enum ProductStartType { /**Beliebiger Startzeitpunkt */ Any = 1, /**Der erste eines Monats */ FirstOfMonth, /**Der erste eines Jahres */ FirstOfYear } /**Status der Listung */ export enum ListingStatus { /**Entwurf */ Draft = 0, /**Reserviert */ Reserverd = 10, /**Zu bezahlen */ ToPay = 20, /**Gebucht */ Booked = 30, /**Laufend */ Running = 40, /**Beendet */ Ended = 50, /**Storniert */ Canceled = 60 } /**Status der Werbung */ export enum AdvertisementStatus { /**Entwurf */ Draft = 0, /**Zu bezahlen */ ToPay = 10, /**Gebucht */ Booked = 20, /**Laufend */ Running = 30, /**Beendet */ Ended = 40, /**Storniert */ Cancelled = 50 } /**Zahlungsarten */ export enum PaymentType { /**Keine */ None = 0, /**Rechnung */ Invoice = 10, /**Klarna */ Klarna = 20, /**PayPal */ PayPal = 30 } /**Zahlungsstatus */ export enum PaymentStatus { /**Kein Status */ None = 0, /**Anstehend */ Pending = 10, /**Authorisiert */ Authorized = 20, /**Bezahlt */ Paid = 30, /**Teilweise Rückerstattung PartiallyRefunded = 35,*/ /**Rückerstattet */ Refunded = 40, /**Entwertet */ Voided = 50, /**Rückerstattet gehgassi */ RefundendAndPayed = 60 } /**Zahlungsarten Walk */ export enum WalkPaymentType { /**MangoPay */ MangoPay = 1, /**Cash */ Cash = 10 } /**Geoeinschränkungen für Listungen und Werbungen */ export enum GeoMode { /**Keine einschränkunge */ None = 0, /**Auf ein Land eingeschränkt */ Country = 10, /**Auf ein Land und Bundesland eingeschränkt */ CountryAndState = 20, /**Auf eine Geo-Location mit Radius eingeschränkt */ Location = 30 } /**Wo kann ein Banner plaziert werden */ export enum BannerLocation { /**Keine */ None = 0, /**Homescreen */ Home = 1, /**Nachrichten */ Messages = 10, /**Termin anlegen */ Appointment = 20, /**Hundeprofil */ DogProfile = 30, /**Ende eines Walks */ WalkEnd = 40, /**Erstregistrierung */ Registration = 50, /**Favoriten */ Favorites = 60 } /**Banner-Größen */ export enum BannerSize { /**Standard: 320 x 50 */ Standard = 1, /**Groß: 320 x 90 */ Large = 10, /**Medium rechteckig: 300 x 250 */ MediumRectangular = 20 } /**Status eines Banners */ export enum BannerStatus { /**Entwurf */ Draft = 0, /**Zu bezahlen */ ToPay = 10, /**Gebucht */ Booked = 20, /**Laufend */ Running = 30, /**Beendet */ Ended = 40, /**Storniert */ Cancelled = 50 } /**Status eines Pins */ export enum PinStatus { /**Entwurf */ Draft = 0, /**Zu bezahlen */ ToPay = 10, /**Gebucht */ Booked = 20, /**Laufend */ Running = 30, /**Beendet */ Ended = 40, /**Storniert */ Cancelled = 50 } /**Gibt an wer eine Bestellung durchgeführt hat */ export enum OrderSource { /**Kunde - Werbepartner */ Customer = 1, /**Hundebesitzer */ DogOwner = 10, /**Hundeausführer */ DogWalker = 20 } /**Status einer Bestellung */ export enum OrderStatus { /**Anstehend */ Pending = 10, /**In Bearbeitung */ Processing = 20, /**Abgeschlossen */ Complete = 30, /**Storniert */ Cancelled = 40 } /**Lieferart */ export enum ShipmentType { /**Kein Versand */ None = 1, /**Post */ Postal = 10 } /**Lieferstatus */ export enum ShipmentStatus { /**Kein Versand */ ShippingNotRequired = 10, /**Noch nicht versendet */ NotYetShipped = 20, /**Teilweise versendet */ PartiallyShipped = 25, /**Versendet */ Shipped = 30, /**Zugestellt */ Delivered = 40 } /**Geschlecht eines Hunde */ export enum DogSex { /**Rüde */ MaleDog = 1, /**Hündin */ FemaleDog = 2 } /**Größe eines Hundes */ export enum DogSize { /**Kleiner Hund */ Small = 1, /**Mittelgroßer Hund */ Middle = 2, /**Großer Hund */ Big = 3, /**Riesenrasse */ Giant = 4 } /**Aggressionsgrad des Hundes */ export enum DogAggressionLevel { /**Nieder */ Low = 1, /**Mittel */ Medium = 2, /**Hoch */ High = 3 } /**Status einer News */ export enum NewsStatus { /**Entwurf */ Draft = 0, /**Freizugeben */ ToApprove = 10, /**Abgelehnt */ Declined = 20, /**Genehmigt */ Approved = 30, /**Laufend */ Running = 40, /**Beendet */ Ended = 50, /**Manuell gestoppt */ Stopped = 100 } /**Definiert die Sichtbarkeit von News */ export enum NewsVisibility { /**Nicht sichtbar */ None = 1, /**Sichtbar für Hundebesitzer */ DogOwners = 10, /**Sichtbar für Hundeausführer */ DogWalkers = 20, /**Sichtbar für Hundebesitzer und Hundeausführer */ DogWalkerAndOwners = 30 } /**Definiert den Typen von App-Usern */ export enum AppUserType { /**Hundebesitzer */ DogOwner = 10, /**Hundeausführer */ DogWalker = 20, /**Beides */ Both = 30 } /**Typ des Feedbacks */ export enum AppFeedbackType { /**Problem */ Problem = 1, /**Idee */ Idea = 20, /**Ich mag */ Like = 33, /**Ich mag nicht */ DontLike = 40, /**Allgemein */ General = 100 } /**Status des Feedbacks */ export enum AppFeedbackStatus { /**Offen */ Open = 1, /**Geschlossen */ Closed = 10, /**Ignorieren */ Ignore = 20 } /** * Modus in welchem sich die App befindet. * Ist wichtig für die Abfrage von Daten wenn der Benutzer beides ist */ export enum AppMode { /**Hundebesitzer */ DogOwner = 10, /**Hundeausführer */ DogWalker = 20 } /**Auf welche Art und Weise eine Zahlung erfolgt ist */ export enum PayInType { /**Kreditkarte CB, Visa, Mastercard */ CB_VISA_MASTERCARD = 1, /**American Express */ AMEX = 20, /**Diners */ DINERS = 30, /**Maestro Karte */ MAESTRO = 40, /**Klarna - Sofort */ KLARNA = 50, /**Giropay */ GIRO = 60, /**PayPal */ PAYPAL = 70 } /**Status einer Reklamation */ export enum WalkComplaintStatus { /**Offen */ Open = 1, /**In Bearbeitung */ InProgress = 10, /**Gelöst, Walker normal bezahlen */ Resolved_Pay = 20, /**Gelöst, Hundebesitzer bekommt Geld zurück */ Resolved_Refund = 30, /**Gelöst, Hundebesitzer bekommt Geld zurück, Walker bekommt Geld von gehgassi */ Resolved_Gehgassi = 40 } /**Art der Beschwerde */ export enum WalkComplaintType { /**Walk hat nicht stattgefunden */ NoWalk = 10, /**Hundebesitzer ist unzufrieden */ Unsatisfied = 20 } /**Wer hat die Beschwerde eingereicht? */ export enum WalkComplaintSource { /**Hundebesitzer */ DogOwner = 10, /**Hundeausführer */ DogWalker = 20, } export enum WalkType { /**Anfrage basierend auf dem Schedule eine Walkers */ Scheduled = 1, /**Direkte Anfrage an einen Walker */ Direct = 2, /**Offene Anfrage an die Community */ OpenRequest = 3 } /**Welche Art von Service soll durchgeführt werden */ export enum WalkServiceType { /**Walk */ Walking = 1, /**Sitting */ Sitting = 2, /**Daycare */ DayCare = 3 } /**Status einer Meldung */ export enum AppUserReportStatus { /**Offfen */ Open = 10, /**In Bearbeitung */ Processing = 20, /**Abgelehnt */ Rejected = 30, /**Geschlossen ohne Aktion */ ClosedNoAction = 40, /**Geschlossen und für eine bestimmte Zeit gesperrt */ ClosedLockedForTime = 50, /**Geschlossen und für immer gesperrt */ ClosedLockedForever = 60, /**Geschlossen und Inhalt bearbeitet */ ClosedContentEdited = 100, /**Geschlossen und Inhalt gelöscht */ ClosedContentDeleted = 110, /**Wiedereröffnet */ Reopened = 200 } /** * Bereich der von der Meldung betroffen ist * Ist abhängig davon wo in der App die Meldung erstellt wurde. * Beeinflusst auch, welche Felder/Infos gemeldet werden können. */ export enum AppUserReportSection { /**Hundeprofil */ ProfileDog = 10, /**Konversationen */ Conversations = 20, /**Nachrichten */ Messages = 30, /**Konversation anlegen */ ConversationCreate = 40, /**Profil Hundebesitzer */ ProfileDogOwner = 50, /**Ratings Hund */ RatingsDog = 60, /**Ratings Hundebesitzer */ RatingsDogOwner = 70, /**Meine Ratings */ RatingsMy = 80, /**Ratings Walker */ RatingsWalker = 90, /**Walker Suche */ WalkersSearch = 100, /**Walker Profil */ ProfileWalker = 110, /**Offene Anfrage Hundebesitzer */ OpenRequestDogOwner = 120, /**Offene Anfrage Walker */ OpenRequestWalker = 130, /**Antwort auf offene Anfrage */ OpenRequestResponse = 140, /**Walks Hundebesitzer */ WalksDogOwner = 150, /**Offene Anfrage Hundebesitzer Details */ OpenRequestDogOwnerDetails = 160, /**Offene Anfrage Walker Details */ OpenRequestWalkerDetails = 170, /**Offene Anfrage Antworten */ OpenRequestResponses = 180, /**Walks Walker */ WalksWalker = 190, /**Walk Details Hundebesitzer */ WalkDetailDogOwner = 200, /**Walk Details Walker */ WalkDetailsWalker = 210, /**Favoriten Hundebesitzer */ FavouritesDogOwner = 220, /**Favoriten Walker */ FavouritesWalker = 230, /**Home Hundebesitzer */ HomeDogOwner = 240, /**Home Walker */ HomeWalker = 250 } /**Typ der Meldung */ export enum AppUserReportType { /**Anstößiger Inhalt */ Objectionable = 10, /**Politisch inkorrekt */ PoliticallyIncorrect = 20, /**Obszön */ Obscene = 30, /**Unkorrekte Angabe */ IncorrectData = 40, /**Aufdringlich */ Intrusive = 50 } /**Wie soll eine Blockierung bei einer Meldung durchgeführt werden */ export enum AppUserReportBlockType { /**Nicht blockieren */ NoBlock = 1, /**für eine bestimmte Zeit blockieren */ BlockForTime = 2, /**für immer blockieren */ BlockForever = 3 } /**Art der öffentlichen Anfrage */ export enum PublicWalkRequestType { Walking = 1, Sitting = 2 } /**Status der offenen Anfrage */ export enum PublicWalkRequestStatus { /**Offen */ Open = 1, /**vergeben */ Placed = 20, /**Abgelaufen */ TimedOut = 30, /**Storniert */ Cancelled = 40 } /**Status eines Walks */ export enum WalkStatus { /**Angefragt */ Requested = 1, /**Akzeptiert */ Accepted = 10, /**Abgelehnt */ Declined = 20, /**Storniert */ Cancelled = 30, /**Der Walk läuft */ Started = 40, /**Der Walk wurde beendet */ Completed = 50, /**Der Walk wurde vom Hundebesitzer oder dem System betätigt */ Confirmed = 60, /**Der Walk wurde reklamiert und es muss eine Lösung gesucht werden */ Complained = 70, /**Reklamation gelöst */ ComplainResolved = 80 } /**Plattform die verwendet wird */ export enum Platform { /**Windows */ Windows = 1, /**Apple - Mac */ Mac = 2, /**Apple - IOS */ Ios = 3, /**Google - Android */ Android = 4 } /**Status eines Gutschein Kampagne */ export enum VoucherCampaignStatus { /**Entwurf */ Draft = 0, /**Zu bezahlen */ ToPay = 10, /**Gebucht */ Booked = 20, /**Laufend */ Running = 30, /**Beendet */ Ended = 40, /**Storniert */ Cancelled = 50 } export enum VoucherCampaignType { /**Ein Gutschein für alle */ SingleVoucher = 0, /**Mehrere Gutscheine je Nach Anzahl */ MultiVoucher = 10 } export enum SubscriptionLength { /**Eine Woche */ OneWeek = 1, /**Ein Monat */ OneMonth = 2, /**Zwei Monate */ TwoMonths = 3, /**Drei Monate */ ThreeMonths = 4, /**Sechs Monate */ SixMonths = 5, /**Ein Jahr */ OneYear = 6 } /** * Repräsentiert einen Benutzer */ export class ApplicationUser { /** * Id */ id: string; /** * Benutzername */ userName: string; /** * vorname */ firstName: string; /** * Nachname */ lastName: string; /** * Id der Zeitzone */ timeZoneId: string; /** * Bevorzugte Sprache */ preferredLangauge: string; /** * Photo als Base64 encoded string */ photo: string; /** * Datum der Registrierung */ registrationDate: Date; /** * Datum l. Login */ lastLoginDate: Date; /** * Rechte als Packed string */ permissions: string; } /** * Repräsentiert einen Benutzer in der Liste */ export class ApplicationUserListItem { /** * Id */ id: string; /** * Benutzername */ userName: string; /** * vorname */ firstName: string; /** * Nachname */ lastName: string; /** * Gesperrt */ locked: boolean; /** * Rollen */ roles: string; /** * Photo als Base64 encoded string */ photo: string; /** * Datum der Registrierung */ registrationDate: Date; /** * Datum l. Login */ lastLoginDate: Date; /** * Id des Kunden */ customerId: number; /** * Name des Kunden */ customerName: string; /** * Id des App-Users * null, wenn keiner zugeordnet */ appUserId: string; /**Name des App-Users */ appUserName: string; /** 2-Faktor Authentifizierung aktiviert? */ twoFactorEnabled: boolean; /** Email-Adresse bestätigt? */ emailConfirmed: boolean; } /** * Repräsentiert einen Kunden-Typ */ export class CustomerType { /** * ID */ id: number; /** * Spezial-ID */ uniqueId: string; /** * Name */ name: string; /** * Anmerkungen */ comment: string; /** * Erstellungsdatum */ created: Date; } /** * Repräsentiert einen Kunden-Typ in der Liste */ export class CustomerTypeListItem { /** * ID */ id: number; /** * Spezial-ID */ uniqueId: string; /** * Name */ name: string; /** * Anmerkungen */ comment: string; /** * Erstellungsdatum */ created: Date; } /** * Repräsentiert eine Adresse */ export class Address { /**Optionale Adresszeile 1 */ addressLine1: string; /**Optionale Adresszeile 2 */ addressLine2: string; /**Optional: Stadt / Ort */ city: string; /**Optinale PLZ */ zip: string; /**Bundesland / Staat */ state: string; /**ISO2 Ländercode */ countryCode: string; } /** * Repräsentiert einen Kunden in der Liste */ export class CustomerListItem { /**Id des Kunden */ id: number; /** * SpezialID */ uniqueId: string; /**Typ des Kunden */ typeId: number; /**Typ des Kunden als Name */ typeName: string; /**Kundennummer */ number: string; /**Name des Kunden */ name: string; /**UID Nummer */ vat: string; /**Land der Adresse */ countryCode: string; /**Logo */ logo: string; /** * Erstellungsdatum */ created: Date; } /** * Model für eine Platzhalter-Kategorie */ export class PlaceHolderCategory { /** * Eindeutige Id */ public id: number; /** * Name */ public name: string; /** * Prefix der Kategorie für Variable */ public prefix: string; /** * Liste der Platzhalter in der KAtegrorie */ public placeholders: PlaceHolder[]; constructor() { this.id = -1; this.name = ""; this.prefix = ""; this.placeholders = []; } } /** * Model für einen Platzhalter */ export class PlaceHolder { /** * Eindeutige Id */ public id: number; /** * Name */ public name: string; /** * Wert */ public value: string; constructor() { this.id = -1; this.name = ""; this.value = ""; } } /**Basisklasse für eine Entität welche über Synchronisierungs-Eigenschaften verfügt */ export class SyncEntity { /**Guid als String - wird als Key verwendet.*/ id: string; /**Datum und Uhrzeit inkl. Zeitzone wann die letzte Aktualisierung stattgefunden hat. */ updatedAt: Date | string; /**Gibt an ob diese Entität gelöscht wurde */ deleted: boolean; } /**Viewmodel für eine Werbungs-Rubrik Liste */ export class AdvertisementCategoryListItem extends SyncEntity { /**Titel der Rubrik */ title: string; /**Anmerkungen intern */ comment: string; /**Name der Rubrik */ name: string; /**Bild für die Rubrik */ image: string; /**Online-Status */ onlineStatus: OnlineStatus; /**Datum der Erstellung */ created: Date | string; /**Hilfsvariable für Abfragen. Wird in der View aus JSON generiert */ language: string; } /**Viewmodel für einen App-User Listen */ export class AppUserListItem extends SyncEntity { /**Typ des App-Users */ type: AppUserType; /**Nummer des Hundebesitzers */ number: string; /**Anrede / titel */ title: string; /**Vorname */ firstName: string; /**Nachname */ lastName: string; /**Geschlecht */ sex: Sex; /**Geschlecht als Text */ sexText: string; /**Optional - Geburtstag */ birthDate: Date | string | null; /**Optional - Foto des Benutzers */ photo: string; /**E-Mail Adresse */ email: string; /**Optional: Stadt / Ort */ city: string; /**Optinale PLZ */ zip: string; /**ISO2 Ländercode */ countryCode: string; /**ISO2 Bundesland */ state: string; /**Gesperrt */ locked: boolean; /**Sperrgrund */ lockedReason: string; /**Gesperrt bis */ lockedUntil: Date | string | null; /**Wurden die AGB akzeptiert */ termsAccepted: boolean; /**Wann wurden die AGB akzeptiert? */ termsAcceptedDate: Date | string | null; /**Nationalität ISO-2 */ nationalityCode: string; /**Land Hauptwohnsitz ISO-2 */ mainResidenceCode: string; /**Gibt an ob der Benutzer den KYC-Prozess durchlaufen hat */ kycPassed: boolean; /**Gibt an ob es sich um einen verifizierten Benutzer handelt */ verified: boolean; /**Gibt an ob für den Benutzer eine automatische Auszahlung erfolgen soll */ autoPayout: boolean; /**Datum der Erstellung */ created: Date | string; } /**Viewmodel für einen Hundeausführer Listen */ export class DogWalkerListItem extends SyncEntity { /**Nummer des Hundeausführers */ number: string; /**Anrede / titel */ title: string; /**Vorname */ firstName: string; /**Nachname */ lastName: string; /**Geschlecht */ sex: Sex; /**Geschlecht als Text */ sexText: string; /**Optional - Geburtstag */ birthDate: Date | string | null; /**Optional - Foto des Benutzers */ photo: string; /**E-Mail Adresse */ email: string; /**Optional: Stadt / Ort */ city: string; /**Optinale PLZ */ zip: string; /**ISO2 Ländercode */ countryCode: string; /**Gesperrt */ locked: boolean; /**Datum der Erstellung */ created: Date | string; } /**Viewmodel für Steuern in Listendarstellung */ export class TaxRateListItem { /**Id des Steuereintrags */ id: number; /**Land für die Steuer */ countryIso: string; /**Steuer in Prozent */ value: number; /**Für Versandkosten verwenden */ useForShipment: boolean; /**Titel des Steuersatzes */ title: string; /**Name des Steuersatzed */ name: string; /**Hilfsvariable für Abfragen. Wird in der View aus JSON generiert */ language: string; } /**Viewmodel für die Listendarstellung von Produkategorien */ export class ProductCategoryListItem { /**Eindeutige Id */ id: number; /**Id der Übergeordneten Kategorie */ parentId: number | null; /**Für wen sichtbar? */ visibility: ShopVisibility; /**Übersetzung der Shop-Visibility */ shopVisibilityText: string; /**Titel der Kategorie */ title: string; /**Reihenfolge der Darstellung, danach nach Name */ displayOrder: number; /**Bild für die Produktkategorie - Allgemein */ image: string; /**Name der Rubrik */ name: string; /**Gelöscht */ deleted: boolean; /**Datum der Erstellung */ created: Date | string; /**Hilfsvariable für Abfragen. Wird in der View aus JSON generiert */ language: string; } /**Viewmodel für ein Produkt Listendarstellung */ export class ProductListItem { /**Eindeutige Id */ id: number; /**Produkttyp */ productType: ProductType; /**Um welche Art von Listung handelt es sich, wenn das Produkt für Listungen ist */ listingType: ListingType; /**Id der Produktkategorie */ productCategoryId: number | null; /**Name der Produktkategorie */ productCategoryName: string; /**Einstellung wer das Produkt sehen darf */ visibility: ShopVisibility; /**Name des Produktes */ name: string; /**Bild für das Produkt - Allgemein */ image: string; /**Artikelnummer */ sku: string; /**Gibt an ob das Produkt versendet werden kann */ isShipEnabled: boolean; /**Gibt an ob das Produkt Versandkostenbefreit ist */ isFreeShipping: boolean; /**Zusatzversandkosten netto */ additionalShippingCharge: number; /**Gibt an ob das Produkt von der Steuer ausgenommen ist */ isTaxExempt: boolean; /**Id der Zugeordneten Steuer */ taxRateId: number; /**Name der Steuerstufe */ taxRateName: string; /**Anzahl der Produkte auf Lager */ stockQuantity: number; /**Wie viele Produkte müssen mindestens bestellt werden? */ orderMinimumQuantity: number; /**Wie viele Produkte dürfen maximal bestellt werden? */ orderMaximumQuantity: number; /**Preis des Produktes netto */ price: number; /**Alter Preis wenn man eine Aktion setzen möchte */ oldPrice: number; /**Reihenfolge der Darstellung, danach nach Name */ displayOrder: number; /**Wurde das Produkt gelöscht */ deleted: boolean; /**Datum der Erstellung */ created: Date | string; /**Anzahl der Ländereinstellungen für dieses Produkt */ countrySettingsCount: number; /**Sprache */ language: string; } /**Einstellungen eines Produktes in Bezug auf ein Land */ export class ProductCountryItem { /**Eindeutige Id */ id: number; /**Id des Produktes */ productId: number; /**ISO2 Land für die Einstellungen */ countryIso: string; /**Preis des Produktes netto */ price: number; /**Alter Preis wenn man eine Aktion setzen möchte */ oldPrice: number; /**Einstellung ob das Produkt in einem Land nicht verfügbar ist */ notAvailable: boolean; } /**Viewmodel für Versandkosten */ export class ShipmentCostItem { /**Eindeutige Id */ id: number; /**Startgewicht */ weightFrom: number; /**Endgewicht */ weightTo: number; /**Start Zwischensumme */ subtotalFrom: number; /**End-Zwischensumme */ subtotalTo: number; /**Fixer Aufschlag */ fixedPrice: number; /**Prozent-Wert der Zwischensumme */ subtotalPercent: number; /**Zielland - oder leer für ALLE */ targetCountryIso: string; } /**Viewmodel für eine Branche Liste */ export class BranchListItem extends SyncEntity { /**Titel der Branche */ title: string; /**Anmerkungen intern */ comment: string; /**Name der Rubrik */ name: string; /**Bild für die Rubrik */ image: string; /**Online-Status */ onlineStatus: OnlineStatus; /**Für Listungen verfügbar */ listingAllowed: boolean; /**Sortierung */ order: number; /**Datum der Erstellung */ created: Date | string; } /**Viewmodel für die Listendarstellung von Listungen */ export class ListingListItem extends SyncEntity { /**Id des Kunden */ customerId: number; /**Name des Kunden */ customerName: string; /**Id der Branche */ branchId: string; /**Name der Branche */ branchName: string; /**Name der Listung */ name: string; /**Bild für die Listiung */ image: string; /**Typ der Listung - Basis, Silber, Gold, Plating */ listingType: ListingType; /**Startdatum der Listung */ startDate: Date | string | null; /**Enddatum der Listung */ endDate: Date | string | null; /**Wie lange kann man diese Buchung reservieren bis sie bezahlt wird */ reservedUntil: Date | string | null; /**Status der Listung */ status: ListingStatus; /**Id der Bestellung */ orderId: number | null; /**Id des Artikels in der Bestellung */ orderItemId: number | null; /**Zahlungsart der Bestellung */ paymentType: PaymentType; /**Zahlungsstatus der Bestellung */ paymentStatus: PaymentStatus; /**Zahlungsdatum */ payedDate: Date | string | null; /**Art der Geo-Einschränkung */ geoMode: GeoMode; /**Datum der Erstellung */ created: Date | string; } /**Viewmodel für die Listendarstellung von Werbungen */ export class AdvertisementListItem extends SyncEntity { /**Id des Kunden */ customerId: number; /**Name des Kunden */ customerName: string; /**Id der Rubrik */ advertisementCategoryId: string; /**Name der Rubrik */ advertisementCategoryName: string; /**Name der Werbung */ name: string; /**Rabatt in Prozent */ discount: number; /**Übersetzungen Name */ nameLocalized: string; /**Bild für die Werbung */ image: string; /**Url für die Werbung */ url: string; /**Startdatum der Werbung */ startDate: Date | string | null; /**Enddatum der Werbung */ endDate: Date | string | null; /**Status der Werbung */ status: AdvertisementStatus; /**Status der Listung - Text */ statusText: string; /**Id der Bestellung */ orderId: number | null; /**Id des Artikels in der Bestellung */ orderItemId: number | null; /**Zahlungsart der Bestellung */ paymentType: PaymentType; /**Zahlungsart der Bestellung - Text */ paymentTypeText: string; /**Zahlungsstatus der Bestellung */ paymentStatus: PaymentStatus; /**Zahlungsstatus der Bestellung - Text */ paymentStatusText: string; /**Zahlungsdatum */ payedDate: Date | string | null; /**Art der Geo-Einschränkung */ geoMode: GeoMode; /**Art der Geo-Einschränkung - Text */ geoModeText: string; /**Datum der Erstellung */ created: Date | string; } /**Viewmodel für die Listendarstellung von Bannern */ export class BannerListItem extends SyncEntity { /**Id des Kunden */ customerId: number; /**Name des Kunden */ customerName: string; /**Bannerplatzierung */ bannerLocation: BannerLocation; /**Text der Banner-Platzierung */ bannerLocationText: string; /**Banner Größe */ bannerSize: BannerSize; /**Text der Banner Größe */ bannerSizeText: string; /**Aktuelle Anzahl der Views */ currentViews: number; /**Maximale Anzahl der Views */ maxViews: number; /**Name des Banners */ name: string; /**Übersetzungen Name */ nameLocalized: string; /**Bild für den Banner */ image: string; /**Url des Banners */ url: string; /**Startdatum des Banners */ startDate: Date | string | null; /**Enddatum des Banners */ endDate: Date | string | null; /**Status des Banners */ status: BannerStatus; /**Status des Banners - Text */ statusText: string; /**Id der Bestellung */ orderId: number | null; /**Id des Artikels in der Bestellung */ orderItemId: number | null; /**Zahlungsart der Bestellung */ paymentType: PaymentType; /**Zahlungsart der Bestellung - Text */ paymentTypeText: string; /**Zahlungsstatus der Bestellung */ paymentStatus: PaymentStatus; /**Zahlungsstatus der Bestellung - Text */ paymentStatusText: string; /**Zahlungsdatum */ payedDate: Date | string | null; /**Art der Geo-Einschränkung */ geoMode: GeoMode; /**Art der Geo-Einschränkung - Text */ geoModeText: string; /**Datum der Erstellung */ created: Date | string; } /**Viewmodel für die Listendarstellung von Pins */ export class PinListItem extends SyncEntity { /**Id des Kunden */ customerId: number; /**Name des Kunden */ customerName: string; /**Id der Listung - optional */ listingId: string; /**Name des Pins */ name: string; /**Übersetzungen Name */ nameLocalized: string; /**Bild für den Pin */ image: string; /**Url für den Pin */ url: string; /**Breitengrad */ lat: number; /**Längengrad */ lng: number; /**Effektiver Radius des Pins */ radius: number; /**Startdatum des Pins */ startDate: Date | string | null; /**Enddatum des Pins */ endDate: Date | string | null; /**Status des Pins */ status: PinStatus; /**Status der Listung - Text */ statusText: string; /**Id der Bestellung */ orderId: number | null; /**Id des Artikels in der Bestellung */ orderItemId: number | null; /**Zahlungsart der Bestellung */ paymentType: PaymentType; /**Zahlungsart der Bestellung - Text */ paymentTypeText: string; /**Zahlungsstatus der Bestellung */ paymentStatus: PaymentStatus; /**Zahlungsstatus der Bestellung - Text */ paymentStatusText: string; /**Zahlungsdatum */ payedDate: Date | string | null; /**Datum der Erstellung */ created: Date | string; } /**Ergebnis einer Preis-Kalkulation */ export class PriceCalculation { /**Preis netto */ price: number; /**Preis brutto */ priceGross: number; /**Vorheriger Preis netto */ oldPrice: number; /**Vorheriger Preis brutto */ oldPriceGross: number; /**Preis2 netto */ price2: number; /**Preis2 brutto */ price2Gross: number; /**Vorheriger Preis2 netto */ oldPrice2: number; /**Vorheriger Preis2 brutto */ oldPrice2Gross: number; /**Angewandte Steuer - z.B. 10%, 20% */ taxRate: number; /**Kalkulierte Steuer */ taxValue: number; /**Gesamtwert Netto (Preis + Preis2) */ total: number; /**Gesamtwert Brutto (Preis + Preis2) */ totalGross: number; /**Gesamtwert Vorherig Netto (Preis + Preis2) */ totalOld: number; /**Gesamtwert vorherig Brutto (Preis + Preis2) */ totalOldGross: number; /**Stückzahl */ quantity: number; } /**Ergebis der Neuberechnung des Carts */ export class RecalculationResult { /**Hat sich die Summe in Warenkorb geändert? */ totalChanged: boolean; /**Gesamt-Preis Brutto */ totalGross: number; /**Haben sich die Versandkosten geändert? */ shipmentChanged: boolean; /**Versandkosten Brutto */ shipmentGross: number; } /**Ergebnis das nach der Änderung des Carts gesendet wird */ export class CartChangedResult { /**Anzahl der verbliebenen Artikel im Warenkorb */ itemCount: number; /**Liste der entfernten Produkte */ validationList: string[]; /**Ergebnis der neuberechnung des Cart */ recalculationResult: RecalculationResult; } export class OrderListItem { /**Id der Bestellung */ id: number; /**Spezial-ID */ uniqueId: string; /**Welcher "Kunden-Typ" hat die Bestellung erstellt? */ orderSource: OrderSource; /**Welcher "Kunden-Typ" hat die Bestellung erstellt? */ orderSourceText: string; /**Name des Bestellers in Abhängigkeit der Bestellquelle */ orderSourceName: string; /**Id des Hundebesitzers */ dogOwnerId: string; /**Name des Hundebesitzers (Vor- und Nachname) */ dogOwnerName: string; /**Hundebesitzer - Firma */ dogOwnerCompany: string; /**Id des Hundeausführers */ dogWalkerId: string; /**Name des Hundeausführers (Vor- und Nachname) */ dogWalkerName: string; /**Hundeausführer - Firma */ dogWalkerCompany: string; /**Kunde */ customerId: number | null; /**Name des Kunden / Vertriebspartners */ customerName: string; /**Bestellnummer */ number: string; /**Zwischensumme Netto */ subtotal: number; /**Zwischensumme Brutto */ subtotalGross: number; /**Gesamt-Preis Netto */ total: number; /**Gesamt-Preis Brutto */ totalGross: number; /**Versandkosten Netto */ shipment: number; /**Versandkosten Brutto */ shipmentGross: number; /**Status der Bestellung */ orderStatus: OrderStatus; /**Status der Bestellung */ orderStatusText: string; /**Zahlungsart */ paymentType: PaymentType; /**Zahlungsart */ paymentTypeText: string; /**Zahlungsstatus */ paymentStatus: PaymentStatus; /**Zahlungsstatus */ paymentStatusText: string; /**Versandart */ shipmentType: ShipmentType; /**Versandart */ shipmentTypeText: string; /**Versandstatus */ shipmentStatus: ShipmentStatus; /**Versandstatus */ shipmentStatusText: string; /**Versanddatum */ shipmentDate: Date | string | null; /**Datum der Erstellung */ created: Date | string; /**Datum der letzten Änderung */ lastUpdate: Date | string | null; /**Wurde die Bestellung gelöscht? */ deleted: boolean; } /**Filter für den Shop */ export class ShopFilter { /**Gewählte Kategorien, wenn welche */ categories: number[]; /**Filter für Namen */ filter: string; } /**Viewmodel für die Liste der Hunderassen */ export class DogRaceListItem extends SyncEntity { /**Name der Rasse */ name: string; /**Optional - Foto der Hunderasse */ photo: string; /**Datum der Erstellung */ created: Date | string; } /**Viewmodel für einen Hund - Listendarstellung */ export class DogListItem extends SyncEntity { /**Id der Hunderasse */ dogRaceId: string; /**Name der Hunderasse */ dogRaceName: string; /**Id des Hundebesitzers */ dogOwnerId: string; /**Name des Hundebesitzers */ dogOwnerName: string; /**Nummer des Hundes */ number: string; /**Name des Hundes */ name: string; /**Optional - Foto des Hundes */ photo: string; /**Geburtstag des Hundes */ birthDate: Date | string | null; /**Geschlecht des Hundes */ sex: DogSex; /**Geschlecht des Hundes */ sexText: string; /**Größe des Hundes */ size: DogSize; /**Größe des Hundes */ sizeText: string; /**Datum der Erstellung */ created: Date | string; } /**Viewmodel für eine News Kategorien Liste */ export class NewsCategoryListItem extends SyncEntity { /**Titel der Kategorie */ title: string; /**Anmerkungen intern */ comment: string; /**Name der Kategorie */ name: string; /**Übersetzungen Name */ nameLocalized: string; /**Bild für die Kategorie */ image: string; /**Online-Status */ onlineStatus: OnlineStatus; /**Textdarstellung des Online-Status */ onlineStatusText: string; /**Datum der Erstellung */ created: Date | string; } /**Viewmodel für eine News-Meldung Listendarstellung */ export class NewsListItem { /**Eindeutige Id */ id: number; /**Id der News-Kategorie */ categoryId: string; /**Name der Kategorie */ categoryName: string; /**Status der News */ status: NewsStatus; /**Status der News */ statusText: string; /**Sichtbarkeit der News */ visibility: NewsVisibility; /**Sichtbarkeit der News */ visibilityText: string; /**Startdatum */ start: Date | string; /**Enddatum */ end: Date | string | null; /**Erstellt von */ creator: string; /**Stammt von einer externen Quelle */ isExternal: boolean; /**Quelle der News wenn extern */ source: string; /**Sprache für welche die News zur Verfüggung steht */ language: string; /**Bild für die Newsmeldung */ image: string; /**Schlagzeile */ headline: string; /**Art der Geo-Einschränkung */ geoMode: GeoMode; /**Art der Geo-Einschränkung */ geoModeText: string; /**Bundesland / Staat */ state: string; /**Bundesland */ stateName: string; /**ISO2 Ländercode */ countryCode: string; /**Land */ countryName: string; /**Gelöscht */ deleted: boolean; /**Datum der Erstellung */ created: Date | string; } /**Viewmodel für ein Text-Seite Listendarstellung */ export class PageListItem { /**Eindeutige Id */ id: number; /**Titel der Seite */ title: string; /** * Eindeutiger Code für die Seite. * Wird für den Aufruf aus der App verwendet */ code: string; } /**Viewmodel für ein App-Feedback */ export class AppFeedbackListItem { /**Eindeutige Id */ id: number; /**Benutzername - Email */ userName: string; /**Name des Users */ name: string; /**Art des Feedbacks */ feedbackType: AppFeedbackType; feedbackTypeText: string; /**Status des Feedbacks */ status: AppFeedbackStatus; statusText: string; /**In welchem Modus war die App beim Senden der Nachricht */ appMode: AppMode; appModeText: string; /**Welche Sprache war gewählt */ language: string; /**Land */ country: string; /**Version der App */ appVersion: string; /**Infos über das Gerät dürfen gesendet werden */ deviceInfoAllowed: boolean; /**Gerät: Version */ deviceVersion: string; /**Gerät: Plattform */ devicePlatform: string; /**Gerät: Typ: Phone oder Tablet usw. */ deviceIdiom: string; /**Wann erstellt */ created: Date | string; } /**Repräsentiert eine Transaktionsgebühr, die vom System berechnet wird und vom Kunden zu tragen ist. */ export class TransactionFeeItem extends SyncEntity { /**Zahlungsmethode */ payInType: PayInType; /**Prozent */ percent: number; /**Fixer Betrag */ fixed: number; } /**Repräsentiert eine Transaktionsgebühr, die vom System berechnet wird und vom Kunden zu tragen ist. */ export class GehGassiFeeItem extends SyncEntity { /**Startbetrag */ startAmmount: number; /**Prozent */ percent: number; /**Fixer Betrag */ fixed: number; } /**Viewmodel für eine Reklamation Listendarstellung */ export class WalkComplaintListItem extends SyncEntity { /**Id des Walks */ walkId: string; /**Art der Walk Anfrage */ walkType: WalkType; walkTypeText: string; /**Welche Art von Service soll durchgeführt werden */ walkServiceType: WalkServiceType; walkServiceTypeText: string; /**Name des DogWalkers */ dogWalkerName: string; /**Foto des Dogwalkers */ dogWalkerPhoto: string; /**Name des Hundebesitzers */ dogOwnerName: string; /**Foto des Hundebesitzers */ dogOwnerPhoto: string; /**Startdatum des Walks mit Urhrzeit */ walkStart: Date | string; /**Enddatum des Walks mit Uhrzeit */ walkEnd: Date | string; /**Abholadresse - ISO2 Ländercode */ pickupAddress_CountryCode: string; /**Preis für den Walk / Das Sitting. Wird gesetzt und kann entweder fix sein (öffentliche Anfrage) oder errechnet */ walkPrice: number; /**Wer hat die Beschwerde erstellt? */ source: WalkComplaintSource; sourceText: string; /**Art der Beschwerde */ type: WalkComplaintType; typeText: string; /**Status der Beschwerde */ status: WalkComplaintStatus; statusText: string; /**Gehgassi Benutzer der die Beschwerde zuletzt bearbeitet hat */ userName: string; /**Datum der Lösung der Beschwerde */ resolved: Date | string | null; /**Datum der Erstellung der Beschwerde */ created: Date | string; } export class SystemMessageToSendListItem { /**Id der Nachricht */ id: number; /**Interner titel */ title: string; /**Nachricht die gesendet werden soll */ message: string; /**Anzahl der App-User die die Nachricht erhalten sollen */ appUserCount: number; /**Anzahl der nachrichten die gesendet wurden */ sentCount: number; /**Datum wann die Nachricht gesendet werden soll */ toSendDate: Date | string | null; /**Wurden die Nachrichten bereits gesendet? */ hasBeenSent: boolean; /**Datum wann die Nachricht gesendet wurden */ sentDate: Date | string | null; /**Von wem gesendet? */ sentBy: string; /**Push-Notification senden?*/ sendPushNotification: boolean; /**Typ des App-Users */ appUserType: AppUserType; /**Land oder leer */ country: string; /**Bundesland oder leer */ state: string; /**Stadt oder leer */ city: string; /**Postleitzahl oder leer */ zip: string; /**Nur verifizierte App-User */ verifiedOnly: boolean; /**Geschlecht oder leer */ sex: Sex | null; /**Geschlecht oder leer als Text */ sexText: string; /**Wann erstellt */ created: Date | string; /**Erstellt von? */ createdBy: string; } /**Viewmodel für eine App-User Meldung Listendarstellung */ export class AppUserReportListItem { /**Id der Meldung */ id: number; /**Id des App-Users der die Meldung erstellt hat */ reportingAppUserId: string | null; /**Name des App-Users der die Meldung erstellt hat */ reportingAppUserName: string; /**Typ des App-Users der die Meldung erstellt hat */ reportingAppUserType: AppUserType; reportingAppUserTypeText: string; /**Email des App-Users der die Meldung erstellt hat */ reportingAppUserEmail: string; /**Id des App-Users der Ziel der Meldung ist */ reportedAppUserId: string | null; /**Name des App-Users der Ziel der Meldung ist */ reportedAppUserName: string; /**Typ des App-Users der Ziel der Meldung ist */ reportedAppUserType: AppUserType; reportedAppUserTypeText: string; /**Email des App-Users der Ziel der Meldung ist */ reportedAppUserEmail: string; /**Status der Meldung */ status: AppUserReportStatus; statusText: string; /**Bereich der von der Meldung betroffen ist */ section: AppUserReportSection; sectionText: string; /** * Id des Inhalts der betroffen ist. * Das ist eine Id z.B. eines Hundes, Walkers usw. */ sectionId: string; /** * Id des Inhalts der betroffen ist. Zweite ID falls notwendig * Das ist eine Id z.B. eines Hundes, Walkers usw. */ sectionId2: string; /**Es gibt ein Problem mit einem Bild */ reportedImage: boolean; /**Es gibt ein Problem mit einem Namen */ reportedName: boolean; /**Es gibt ein Problem mit einem Text */ reportedText: boolean; /**Es gibt ein Problem mit einer Nachricht */ reportedMessage: boolean; /**Es gibt ein Problem mit einer Adresse */ reportedAddress: boolean; /**Typ der Meldung */ type: AppUserReportType; typeText: string; /**Email-Adresse des Benutzers der die Meldung erstellt hat */ email: string; /**Zusätzliche Infos des Benutzers der die Meldung erstellt hat */ comment: string; /** * Gibt an ob der Benutzer der gemeldet wurde für den meldenden Benutzer gesperrt werden soll und wie. * Diese Info kommt vom Benutzer selbst. */ blockType: AppUserReportBlockType; /**Der Benutzer der die Meldung erstellt hat, hat zugestimmt via Email kontaktiert zu werden */ contactAllowed: boolean; /**Interner Kommentar von gehGassi */ internalComment: string; /**Aktualisiert von? */ updatedBy: string; /**Datum letzte Aktualisierung */ updated: Date | string | null; /**Erstellt von? */ createdBy: string; /**Wann wurde die Blockierung erstellt? */ created: Date | string; } /**FAQ mit Namen aufgelöst */ export class FaqListItem extends SyncEntity { /**Titel der FAQ */ title: string; /**Reihung des FAQ-Eintrags */ order: number; /**Frage - Inhalt */ question: string; /**Frage - Inhalt */ questionLocalized: string; /**Antwort - Inhalt */ answer: string; /**Antwort - Inhalt */ answerLocalized: string; /**Online / Offline Status */ onlineStatus: OnlineStatus; /**Textdarstellung des Online-Status */ onlineStatusText: string; /**Datum der Erstellung */ created: Date | string; } /**Viewmodel für eine öffentliche Anfrage mit Namen aufgelöst für Listen */ export class PublicWalkRequestListItem extends SyncEntity { /** * Id des App-Users / Hundebesitzers der die Anfrage erstellt hat * Ist eine AppUserId */ dogOwnerId: string; /**Name des Hundebesitzers */ dogOwnerName: string; /**Foto des Hundebesitzers */ dogOwnerPhoto: string; /**Abholadresse - Stadt / Ort */ pickupAddress_City: string; /**Abholadresse - PLZ */ pickupAddress_Zip: string; /**Abholadresse - ISO2 Ländercode */ pickupAddress_CountryCode: string; /**Welche Art der Anfrage? */ requestType: PublicWalkRequestType; /**Startdatum und Uhrzeit */ startDate: Date | string; /**Enddatum und Urzeit */ endDate: Date | string; /**Anzahl der Hunde */ dogCount: number; /**Preis den der Besitzer bereit ist zu zahlen */ price: number; /**Offen als Ausschreibung bis... Ablaufdatum */ expirationDate: Date | string; /**Anzahl der Antworten */ responseCount: number; /**Aktueller Status der öffentlichern Anfrage */ status: PublicWalkRequestStatus; /**Datum wann ein Angebot angenommen wurde */ placedDate: Date | string | null; /**Wann wurde die Anfrage erstellt? */ created: Date | string; } /**Viewmodel für Walks mit Namen aufgelöst für listen */ export class WalkWithNamesListItem extends SyncEntity { /**Art der Walk Anfrage */ type: WalkType; /**Welche Art von Service soll durchgeführt werden */ serviceType: WalkServiceType; /**Id des Walkers */ dogWalkerId: string; /**Name des DogWalkers */ dogWalkerName: string; /**Foto des Dogwalkers */ dogWalkerPhoto: string; /**Id des Hundebesitzers */ dogOwnerId: string; /**Name des Hundebesitzers */ dogOwnerName: string; /**Foto des Hundebesitzers */ dogOwnerPhoto: string; /**Id der öffentlichen Anfrage, wenn über diese erstellt */ publicWalkRequestId: string; /**Anzahl der Hunde */ dogCount: number; /**Startdatum des Walks mit Urhrzeit */ start: Date | string; /**Enddatum des Walks mit Uhrzeit */ end: Date | string; /**Abholadresse - Stadt / Ort */ pickupAddress_City: string; /**Abholadresse - PLZ */ pickupAddress_Zip: string; /**Abholadresse - ISO2 Ländercode */ pickupAddress_CountryCode: string; /**RückgabeAdresse - Stadt / Ort */ returnAddress_City: string; /**RückgabeAdresse - PLZ */ returnAddress_Zip: string; /**RückgabeAdresse - ISO2 Ländercode */ returnAddress_CountryCode: string; /**Preis für den Walk / Das Sitting. Wird gesetzt und kann entweder fix sein (öffentliche Anfrage) oder errechnet */ price: number; /**Status eines Walks */ status: WalkStatus; /**Wann wurde der Walk / Sitting gestartet? */ started: Date | string | null; /**Wann wurde der Walk / Sitting beendet? */ completed: Date | string | null; /**Wann wurde der Walk / Sitting bestätigt? */ confirmed: Date | string | null; /**Wann wurde der Walk / Sitting reklamiert? */ complained: Date | string | null; /**Zahlungsstatus des Walks */ paymentStatus: PaymentStatus; /**Zahlungsart des Walks */ paymentType: WalkPaymentType; /**Datum der Erstellung des Walks */ created: Date | string; } export class AppVersionListItem { /**Id der Appversion */ id: number; /**Plattform für die die Version gilt */ platform: Platform; /**Plattform für die die Version gilt */ platformText: string; /**Version Major */ major: number; /**Version Minor */ minor: number; /**Version Build */ build: number | null; /**Version Revision */ revision: number | null; /**Version als string */ version: string; /**Ist die aktuell verfügbare Version */ isCurrent: boolean; /** * Ist die Version verpflichtend? * Muss installiert werden wenn die aktuell installierte Version älter ist */ isMandatory: boolean; /**Titel des Releases */ releaseTitle: string; /**Veröffentlichungsdatum */ releaseDate: Date | string; /**Letztes Update */ lastUpdate: Date | string; /**Wann erstellt */ created: Date | string; } /**Viewmodel für die Anzeige der Konversationen als Liste */ export class ConversationListItem extends SyncEntity { /**Ersteller der Konversation (AppUserId) */ senderId: string; /**Name des Senders */ senderName: string; /**Vorname des Senders */ senderFirstName: string; /**Nachname des Senders */ senderLastName: string; /**Sender gesperrt */ senderLocked: boolean; /**Sender blockiert */ senderBlocked: boolean; /**Typ des Senders. DogOwner oder DogWalker oder Beides */ senderType: AppUserType; senderTypeText: string; /**Foto des Senders */ senderPhoto: string; /**Ziel der Konversation (AppUserId) */ receiverId: string; /**Empfänger Name */ receiverName: string; /**Vorname des Empfängers */ receiverFirstName: string; /**Nachname des Empfängers */ receiverLastName: string; /**Empfänger gesperrt */ receiverLocked: boolean; /**Empfänger blockiert */ receiverBlocked: boolean; /**Typ des Empfängers. DogOwner oder DogWalker oder Beides */ receiverType: AppUserType; receiverTypeText: string; /**Foto des Empfängers */ receiverPhoto: string; /**Wann wurde die letzte Nachricht gesendet? */ lastMessage: Date | string | null; /**Anzahl der insgesamt gesendeten Nachrichten */ messageCount: number; /**Wann wurde die Konversation erstellt */ created: Date | string; } /**Viewmodel für die Listenansicht von Gutschein-Kampagnen */ export class VoucherCampaignListItem extends SyncEntity { /**Id des Kunden */ customerId: number; /**Name des Kunden */ customerName: string; /**Titel der Kampagne */ title: string; /**Präfix der Kampagne */ prefix: string; /**Startdatum der Kampagne */ startDate: Date | string | null; /**Enddatum der Kampagne */ endDate: Date | string | null; /**Typ der Kampagne */ campaignType: VoucherCampaignType; campaignTypeText: string; /**Status der Kampagne */ status: VoucherCampaignStatus; statusText: string; /** * Anzahl der Gutscheine die erstellt werden sollen. * 0 Wenn unbegrenzt */ numberOfVouchers: number; /**Wie viele Gutscheine wurden bereits verwendet */ vouchersUsed: number; /**Wie oft darf ein Gutschein pro User verwendet werden */ maxUsagePerUser: number; /**Gesamt verfügbares Budget */ budget: number; /**Aktuell verbrauchtes Budget */ budgetUsed: number; /**Wert für einen Gutschein */ voucherAmmount: number; /**Zahlungsart der Bestellung */ paymentType: PaymentType; /**Zahlungsart der Bestellung - Text */ paymentTypeText: string; /**Zahlungsstatus der Bestellung */ paymentStatus: PaymentStatus; /**Zahlungsstatus der Bestellung - Text */ paymentStatusText: string; /**Zahlungsdatum */ payedDate: Date | string | null; /**Bild für die Kampagne - Allgemein */ image: string; /**Link für die Kampagne - allgemein wenn nicht überschrieben */ url: string; /**Name der Kampagne */ name: string; /**Name - Inhalt */ nameLocalized: string; /**Art der Geo-Einschränkung */ geoMode: GeoMode; /**Art der Geo-Einschränkung - Text */ geoModeText: string; /**Datum der Erstellung */ created: Date | string; } export class SubscriptionListItem extends SyncEntity { /**Subscription Code - Produkt ID für Stores */ code: string; /**Dauer des Abonnements */ length: SubscriptionLength; lengthText: string; /**Preis des Abonnements in Euro */ price: number; /**Art des Abonnements - für welchen Benutzer-Typ? */ appMode: AppMode; appModeText: string; /**Name des Abonnements */ name: string; /**Name - Inhalt */ nameLocalized: string; /**Beschreibung des Abonnements */ description: string; /**Beschreibung - Inhalt */ descriptionLocalized: string; /**Ist das Abonnement aktiv? */ enabled: boolean; /**Grace Period in Tagen */ gracePeriodInDays: number; /**Ist das Abonnement ausgeblendet? */ hidden: boolean; /**Optional: the Max registered date of the app user to see this subscription */ maxRegisteredDate: Date | string | null; /**Anzahl der Abonnements insgesamt */ subscriptionCountTotal: number; /**Anzahl der aktiven Abonnements */ subscriptionCountActive: number; /**Anzahl der inaktiven Abonnements */ subscriptionCountInactive: number; } export class SubscriptionBookingListItem { /**Id des Abonnements des App-Users */ id: number; /**Id des App-Users */ appUserId: string; /**Name des App-Users */ appUserName: string; /**Optional - Foto des Benutzers */ appUserPhoto: string; /**App user type */ appUserType: AppUserType; appUserTypeText: string; /**Id des Abonnements */ subscriptionId: string; /**Code des Abonnements */ subscriptionCode: string; /**Dauer des Abonnements */ subscriptionLength: SubscriptionLength; lengthText: string; /**Preis des Abonnements in Euro */ subscriptionPrice: number; /**Art des Abonnements - für welchen Benutzer-Typ? */ subscriptionAppMode: AppMode; appModeText: string; /**Name des Abonnements */ subscriptionName: string; /**Ist das Abonnement gültig? */ isValid: boolean; /**Wann läuft das Abonnement ab? */ expirationDate: Date | string | null; /**Wann wurde das Abonnement zuletzt verlängert? */ lastRenewalDate: Date | string | null; /**Letzte Aktualisierung */ lastUpdate: Date | string | null; /**Wurde das Abonnement manuell erstellt? */ manual: boolean; /**Erstellt von? */ createdBy: string; /**Wann wurde das Abonnement erstellt? */ created: Date | string; }