using System; using System.Collections.Generic; using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations.Schema; using System.Linq; using System.Text; using System.Threading.Tasks; using gehGassiApp.Domain.Base; using gehGassiApp.Domain.Common; namespace gehGassiApp.Domain.Lookup { /// /// Repräsentiert Detail-Infos zu einem DogWalker /// public class DogWalkerInfo : SyncEntity { /// /// 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; } /// /// Verifiziert /// public bool Verified { get; set; } /// /// Wann wurde die Verification erfolgreich durchlaufen? /// public DateTimeOffset? VerifiedDate { get; set; } /// /// Kontaktdaten /// public ContactMin Contact { get; set; } /// /// Adresse /// public Address Address { get; set; } /// /// Breitengrad der Adresse /// public double Lat { get; set; } /// /// Längengrad der Adresse /// public double Lng { get; set; } /// /// Interne Anmerkungen /// public string Comment { get; set; } /// /// Statistiken als Owner /// public RatingStatistics RatingStatistics { get; set; } /// /// Statistiken als Walker /// public RatingStatistics RatingStatisticsWalker { 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; } /// /// Abstand zum aktuellen Standort in KM /// [NotMapped] public double Distance { get; set; } /// /// Voller Name des Walkers /// [NotMapped] public string FullName => $"{FirstName} {LastName}"; /// /// Vorname + Nachname erster Buchstabe + Punkt, oder nur Vorname wenn kein Nachname /// [NotMapped] public string FullNameShort => string.IsNullOrWhiteSpace(LastName) ? FirstName : $"{FirstName} {LastName[..1]}."; #region Erweiterung Blockier- und Sperrinfo /// /// Hundebesitzer ist blockiert /// [NotMapped] public bool Blocked { get; set; } /// /// Hundebesitzer ist gesperrt /// [NotMapped] public bool Locked { get; set; } /// /// Hundebesitzer blockiert oder gesperrt? /// [NotMapped] public bool BlockedOrLocked => Blocked || Locked; #endregion /// /// Erstellt eine Instanz /// public DogWalkerInfo() { Contact = new ContactMin(); Address = new Address(); RatingStatistics = new RatingStatistics(); RatingStatisticsWalker = new RatingStatistics(); } } }