2790 lines
57 KiB
TypeScript

/**
* 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,
}
/**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;
/**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;
}