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();
}
}
}