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