307 lines
8.3 KiB
C#

using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using gehGassi.Domain.Base;
using gehGassi.Domain.Common;
using gehGassi.Domain.Ratings;
using NetTopologySuite.Geometries;
namespace gehGassi.Domain.Dogs
{
/// <summary>
/// Repräsentiert einen App-User der DogWalker oder beides ist.
/// Wird für Abfragen mit einer View Verwendet.
/// Inkludiert auch das dogWalkerProfil
/// </summary>
public class DogWalker : SyncEntityVw
{
/// <summary>
/// Art des App-Users
/// </summary>
public AppUserType Type { get; set; }
/// <summary>
/// Nummer des App-Users
/// </summary>
public string Number { get; set; }
/// <summary>
/// Anrede / titel
/// </summary>
public string Title { get; set; }
/// <summary>
/// Vorname
/// </summary>
public string FirstName { get; set; }
/// <summary>
/// Nachname
/// </summary>
public string LastName { get; set; }
/// <summary>
/// Geschlecht
/// </summary>
public Sex Sex { get; set; }
/// <summary>
/// Optional - Geburtstag
/// </summary>
public DateTimeOffset? BirthDate { get; set; }
/// <summary>
/// Optional - Foto des Benutzers
/// </summary>
public string Photo { get; set; }
/// <summary>
/// Email-Adresse der Kontaktperson
/// </summary>
public string Contact_Email { get; set; }
/// <summary>
/// Optinale Telefonnummer (Festnetz)
/// </summary>
public string Contact_Phone { get; set; }
/// <summary>
/// Optinale Handy-Nummer
/// </summary>
public string Contact_Mobile { get; set; }
/// <summary>
/// Optionale Adresszeile 1
/// </summary>
public string Address_AddressLine1 { get; set; }
/// <summary>
/// Optionale Adresszeile 2
/// </summary>
public string Address_AddressLine2 { get; set; }
/// <summary>
/// Optional: Stadt / Ort
/// </summary>
public string Address_City { get; set; }
/// <summary>
/// Optinale PLZ
/// </summary>
public string Address_Zip { get; set; }
/// <summary>
/// Bundesland / Staat
/// </summary>
public string Address_State { get; set; }
/// <summary>
/// ISO2 Ländercode
/// </summary>
public string Address_CountryCode { get; set; }
/// <summary>
/// Geo-Koordinaten
/// </summary>
public Point Location { get; set; }
/// <summary>
/// Interne Anmerkungen
/// </summary>
public string Comment { get; set; }
/// <summary>
/// Anzahl der Bewertungen
/// </summary>
public int RatingStatistics_TotalRatings { get; set; }
/// <summary>
/// Anzahl der Punkte die vergeben wurden
/// </summary>
public decimal RatingStatistics_TotalPoints { get; set; }
/// <summary>
/// Durchschnittliche Bewertung
/// </summary>
public decimal RatingStatistics_AverageRating { get; set; }
/// <summary>
/// Anzahl der Bewertungen
/// </summary>
public int RatingStatisticsWalker_TotalRatings { get; set; }
/// <summary>
/// Anzahl der Punkte die vergeben wurden
/// </summary>
public decimal RatingStatisticsWalker_TotalPoints { get; set; }
/// <summary>
/// Durchschnittliche Bewertung
/// </summary>
public decimal RatingStatisticsWalker_AverageRating { get; set; }
/// <summary>
/// Gesperrt
/// </summary>
public bool Locked { get; set; }
/// <summary>
/// Grund für die Sperrung
/// </summary>
public string LockedReason { get; set; }
/// <summary>
/// Gesperrt bis
/// </summary>
public DateTimeOffset? LockedUntil { get; set; }
/// <summary>
/// Wie oft wurde der Benutzer gesperrt
/// </summary>
public int LockedCount { get; set; }
/// <summary>
/// Wurden die AGB akzeptiert
/// </summary>
public bool TermsAccepted { get; set; }
/// <summary>
/// Wann wurden die AGB akzeptiert?
/// </summary>
public DateTimeOffset? TermsAcceptedDate { get; set; }
/// <summary>
/// Wurden die Datenschutzbedingungen akzeptiert
/// </summary>
public bool PrivacyAccepted { get; set; }
/// <summary>
/// Wann wurden die Datenschutzbedingungen akzeptiert?
/// </summary>
public DateTimeOffset? PrivacyAcceptedDate { get; set; }
/// <summary>
/// Wurden die Datenschutzbedingungen des Paymentproviders akzeptiert
/// </summary>
public bool PaymentTermsAccepted { get; set; }
/// <summary>
/// Wann wurden die Datenschutzbedingungen des Paymentproviders akzeptiert?
/// </summary>
public DateTimeOffset? PaymentTermsAcceptedDate { get; set; }
/// <summary>
/// Nationalität ISO-2
/// </summary>
public string NationalityCode { get; set; }
/// <summary>
/// Land Hauptwohnsitz ISO-2
/// </summary>
public string MainResidenceCode { get; set; }
/// <summary>
/// ID des AppUsers beim Payment-Provider
/// </summary>
public string PaymentId { get; set; }
/// <summary>
/// Gibt an ob der Benutzer den KYC-Prozess durchlaufen hat
/// </summary>
public bool KycPassed { get; set; }
/// <summary>
/// Wann wurde der KYC-Prozess erfolgreich durchlaufen?
/// </summary>
public DateTimeOffset? KycPassedDate { get; set; }
/// <summary>
/// Gibt an ob es sich um einen verifizierten Benutzer handelt
/// </summary>
public bool Verified { get; set; }
/// <summary>
/// Wann wurde die Verification erfolgreich durchlaufen?
/// </summary>
public DateTimeOffset? VerifiedDate { get; set; }
/// <summary>
/// Wurde der Benutzer anonymisiert?
/// </summary>
public bool Anonymized { get; set; }
/// <summary>
/// Wann wurde der Benutzer anonymisiert?
/// </summary>
public DateTimeOffset? AnonymizedDate { get; set; }
/// <summary>
/// Datum der Erstellung
/// </summary>
public DateTimeOffset Created { get; set; }
/// <summary>
/// Radius für Anfragen
/// </summary>
public double Radius { get; set; }
/// <summary>
/// Über mich
/// </summary>
public string About { get; set; }
/// <summary>
/// Welche Anfragen erlauben
/// </summary>
public DogWalkRequestType AllowedRequests { get; set; }
/// <summary>
/// nimmt Welpen an
/// </summary>
public bool PuppyAllowed { get; set; }
/// <summary>
/// Nimmt schwierige Hunde an
/// </summary>
public bool DifficultAllowed { get; set; }
/// <summary>
/// Aggressionsgrad des Hundes, wenn schwierige Hunde errlaubt
/// </summary>
public DogAggressionLevel AggressionLevel { get; set; }
/// <summary>
/// Akzeptierte Hundegröße
/// </summary>
public DogSize AcceptedSize { get; set; }
/// <summary>
/// Preis für einen Walk je Stunde
/// </summary>
public decimal PriceWalk { get; set; }
/// <summary>
/// Preis für Tagesbetreuung je Stunde
/// </summary>
public decimal PriceDay { get; set; }
/// <summary>
/// Preis für Sitting je Tag
/// </summary>
public decimal PriceSitting { get; set; }
/// <summary>
/// Walker ist derzeit für Buchungen nicht verfügbar
/// </summary>
public bool NotAvailable { get; set; }
/// <summary>
/// Optional: Info warum nicht verfügbar
/// </summary>
public string NotAvailableInfo { get; set; }
}
}