Florian Mihalits ada8b7a200 Add payment types for walks and update related models
This commit introduces new payment types, including "MangoPay" and "Cash", to the localization resource files for both German and English. A new enum `WalkPaymentType` is created to represent these payment types, and the `Walk` class is updated to include a required `PaymentType` property of this enum type.

The database context is modified to add a `PaymentType` column to the `Walks` table, accompanied by a migration to implement this change and set a default value. The `WalkController` is updated to support filtering by the new `PaymentType` field, and the mapping profile is enhanced to include mappings for `WalkPaymentType` and its view model counterpart.

View models are also updated to incorporate the new `PaymentType` and its display name. Front-end TypeScript files are adjusted to utilize the new `WalkPaymentType` enum and related properties, while the UI is enhanced to display the payment type in the details view of walks. Version numbers in various configuration files are incremented to reflect these changes.
2025-06-30 11:06:30 +02:00

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