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