592 lines
14 KiB
C#
592 lines
14 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.ComponentModel.DataAnnotations;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Text.Json.Serialization;
|
|
using System.Threading.Tasks;
|
|
using gehGassi.Domain.Base;
|
|
using gehGassi.Domain.Common;
|
|
using gehGassi.Domain.Ratings;
|
|
|
|
namespace gehGassi.Domain.Dogs
|
|
{
|
|
/// <summary>
|
|
/// Repräsentiert einen Hund
|
|
/// </summary>
|
|
public class Dog : SyncEntity, IAuditable
|
|
{
|
|
/// <summary>
|
|
/// Id der Hunderasse
|
|
/// </summary>
|
|
[MaxLength(128)]
|
|
public string DogRaceId { get; set; }
|
|
|
|
/// <summary>
|
|
/// Id des App-Users
|
|
/// </summary>
|
|
[Required]
|
|
[MaxLength(128)]
|
|
public string AppUserId { get; set; }
|
|
|
|
#region Basis
|
|
|
|
/// <summary>
|
|
/// Nummer des Hundes
|
|
/// </summary>
|
|
[Required]
|
|
[MaxLength(100)]
|
|
public string Number { get; set; }
|
|
|
|
/// <summary>
|
|
/// Name des Hundes
|
|
/// </summary>
|
|
[Required]
|
|
[MaxLength(100)]
|
|
public string Name { get; set; }
|
|
|
|
/// <summary>
|
|
/// Optional: Beschreibung
|
|
/// </summary>
|
|
[MaxLength(5000)]
|
|
public string Description { get; set; }
|
|
|
|
/// <summary>
|
|
/// Optional - Foto des Hundes
|
|
/// </summary>
|
|
[MaxLength(500)]
|
|
public string Photo { get; set; }
|
|
|
|
/// <summary>
|
|
/// Geburtstag des Hundes
|
|
/// </summary>
|
|
public DateTimeOffset? BirthDate { get; set; }
|
|
|
|
/// <summary>
|
|
/// Geschlecht des Hundes
|
|
/// </summary>
|
|
[Required]
|
|
public DogSex Sex { get; set; }
|
|
|
|
/// <summary>
|
|
/// Größe des Hundes
|
|
/// </summary>
|
|
[Required]
|
|
public DogSize Size { get; set; }
|
|
|
|
#endregion
|
|
|
|
#region Eigenschaften beim Gassi gehen
|
|
|
|
/// <summary>
|
|
/// Zieht an der Leine
|
|
/// </summary>
|
|
[Required]
|
|
public bool PullsTheLeash { get; set; }
|
|
|
|
/// <summary>
|
|
/// Geht an der Leine
|
|
/// </summary>
|
|
[Required]
|
|
public bool WalksTheLeash { get; set; }
|
|
|
|
/// <summary>
|
|
/// Kennt die Grundkommandos
|
|
/// </summary>
|
|
[Required]
|
|
public bool BasicCommands { get; set; }
|
|
|
|
/// <summary>
|
|
/// Jagd andere Tiere
|
|
/// </summary>
|
|
[Required]
|
|
public bool Hunter { get; set; }
|
|
|
|
/// <summary>
|
|
/// Versucht alles zu essen
|
|
/// </summary>
|
|
[Required]
|
|
public bool Eating { get; set; }
|
|
|
|
/// <summary>
|
|
/// Springt Menschen an
|
|
/// </summary>
|
|
[Required]
|
|
public bool Jumper { get; set; }
|
|
|
|
#endregion
|
|
|
|
#region Persönlichkeit
|
|
|
|
/// <summary>
|
|
/// Mag Erwachsene
|
|
/// </summary>
|
|
[Required]
|
|
public bool LikesAdults { get; set; }
|
|
|
|
/// <summary>
|
|
/// Mag Kinder
|
|
/// </summary>
|
|
[Required]
|
|
public bool LikesChildren { get; set; }
|
|
|
|
/// <summary>
|
|
/// Mag Artgenossen
|
|
/// </summary>
|
|
[Required]
|
|
public bool LikesConspecifics { get; set; }
|
|
|
|
/// <summary>
|
|
/// Ist zutraulich
|
|
/// </summary>
|
|
[Required]
|
|
public bool IsTrustful { get; set; }
|
|
|
|
/// <summary>
|
|
/// Ist aggressiv
|
|
/// </summary>
|
|
[Required]
|
|
public bool IsAggressiv { get; set; }
|
|
|
|
/// <summary>
|
|
/// Ist ein Einzelgänger
|
|
/// </summary>
|
|
[Required]
|
|
public bool IsLoneGunner { get; set; }
|
|
|
|
/// <summary>
|
|
/// Aggressionsgrad des Hundes, wenn aggressiv
|
|
/// </summary>
|
|
[Required]
|
|
public DogAggressionLevel AggressionLevel { get; set; }
|
|
|
|
#endregion
|
|
|
|
#region Verhalten wenn jemand das Haus betritt
|
|
|
|
/// <summary>
|
|
/// Stürmt nach draussen
|
|
/// </summary>
|
|
[Required]
|
|
public bool RushesOutside { get; set; }
|
|
|
|
/// <summary>
|
|
/// Ist ruhig und entspannt
|
|
/// </summary>
|
|
[Required]
|
|
public bool IsCalm { get; set; }
|
|
|
|
/// <summary>
|
|
/// Pinkelt vor Aufregung
|
|
/// </summary>
|
|
[Required]
|
|
public bool IsPeeing { get; set; }
|
|
|
|
/// <summary>
|
|
/// Ist schüchtern
|
|
/// </summary>
|
|
[Required]
|
|
public bool IsShy { get; set; }
|
|
|
|
/// <summary>
|
|
/// Bewacht das zuhause
|
|
/// </summary>
|
|
[Required]
|
|
public bool IsGuard { get; set; }
|
|
|
|
#endregion
|
|
|
|
#region Medical
|
|
|
|
/// <summary>
|
|
/// Unverträglichkeiten
|
|
/// </summary>
|
|
[MaxLength(5000)]
|
|
public string Intolerances { get; set; }
|
|
|
|
/// <summary>
|
|
/// Ist gechipt
|
|
/// </summary>
|
|
[Required]
|
|
public bool Chiped { get; set; }
|
|
|
|
/// <summary>
|
|
/// Ist sterilisiert?
|
|
/// </summary>
|
|
[Required]
|
|
public bool Sterilized { get; set; }
|
|
|
|
/// <summary>
|
|
/// Medizinische Informationen
|
|
/// </summary>
|
|
[MaxLength(5000)]
|
|
public string MedicalInfo { get; set; }
|
|
|
|
#endregion
|
|
|
|
#region Sitting
|
|
|
|
/// <summary>
|
|
/// Ist stubenrein?
|
|
/// </summary>
|
|
[Required]
|
|
public bool HouseTrained { get; set; }
|
|
|
|
/// <summary>
|
|
/// Fütterungszeiten
|
|
/// </summary>
|
|
[Required]
|
|
public DogFeedingTimes FeedingTimes { get; set; }
|
|
|
|
/// <summary>
|
|
/// Fütterungszeiten Individuell
|
|
/// </summary>
|
|
[MaxLength(500)]
|
|
public string FeedingIndividual { get; set; }
|
|
|
|
#endregion
|
|
|
|
/// <summary>
|
|
/// Optional: Kommentar von gehgassi
|
|
/// </summary>
|
|
public string Comment { get; set; }
|
|
|
|
/// <summary>
|
|
/// Rating-Statistiken für den Hund
|
|
/// </summary>
|
|
public RatingStatistics RatingStatistics { get; set; }
|
|
|
|
/// <summary>
|
|
/// Datum der Erstellung
|
|
/// </summary>
|
|
public DateTimeOffset Created { get; set; }
|
|
|
|
#region IAuditable
|
|
/// <summary>
|
|
/// Gibt den eindeutigen Key für die Entität zurück;
|
|
/// Hier als String gelöst, weil damit auch kombinierte Schlüssel möglich sind.
|
|
/// </summary>
|
|
/// <returns>Eindeutiger Key</returns>
|
|
public string AuditKey()
|
|
{
|
|
return Id.ToString();
|
|
}
|
|
|
|
/// <summary>
|
|
/// Gibt den Objektnamen bzw. die Tabelle der Entität zurück
|
|
/// </summary>
|
|
/// <returns>Objektnamen</returns>
|
|
public string AuditTable()
|
|
{
|
|
return "Dogs";
|
|
}
|
|
|
|
public AuditableOptions Options()
|
|
{
|
|
return AuditableOptions.Create | AuditableOptions.Edit | AuditableOptions.Delete;
|
|
}
|
|
|
|
#endregion
|
|
}
|
|
|
|
/// <summary>
|
|
/// Repräsentiert einen Hund für Listendarstellungen
|
|
/// </summary>
|
|
public class DogWithNames : SyncEntityVw
|
|
{
|
|
/// <summary>
|
|
/// Id der Hunderasse
|
|
/// </summary>
|
|
public string DogRaceId { get; set; }
|
|
|
|
/// <summary>
|
|
/// Name der Hunderasse
|
|
/// </summary>
|
|
public string DogRaceName { get; set; }
|
|
|
|
/// <summary>
|
|
/// Id des App-Users
|
|
/// </summary>
|
|
public string AppUserId { get; set; }
|
|
|
|
/// <summary>
|
|
/// Name des Hundebesitzers
|
|
/// </summary>
|
|
public string AppUserName { get; set; }
|
|
|
|
#region Basis
|
|
|
|
/// <summary>
|
|
/// Nummer des Hundes
|
|
/// </summary>
|
|
public string Number { get; set; }
|
|
|
|
/// <summary>
|
|
/// Name des Hundes
|
|
/// </summary>
|
|
public string Name { get; set; }
|
|
|
|
/// <summary>
|
|
/// Optional: Beschreibung
|
|
/// </summary>
|
|
public string Description { get; set; }
|
|
|
|
/// <summary>
|
|
/// Optional - Foto des Hundes
|
|
/// </summary>
|
|
public string Photo { get; set; }
|
|
|
|
/// <summary>
|
|
/// Geburtstag des Hundes
|
|
/// </summary>
|
|
public DateTimeOffset? BirthDate { get; set; }
|
|
|
|
/// <summary>
|
|
/// Geschlecht des Hundes
|
|
/// </summary>
|
|
public DogSex Sex { get; set; }
|
|
|
|
/// <summary>
|
|
/// Größe des Hundes
|
|
/// </summary>
|
|
public DogSize Size { get; set; }
|
|
|
|
#endregion
|
|
|
|
#region Eigenschaften beim Gassi gehen
|
|
|
|
/// <summary>
|
|
/// Zieht an der Leine
|
|
/// </summary>
|
|
public bool PullsTheLeash { get; set; }
|
|
|
|
/// <summary>
|
|
/// Geht an der Leine
|
|
/// </summary>
|
|
public bool WalksTheLeash { get; set; }
|
|
|
|
/// <summary>
|
|
/// Kennt die Grundkommandos
|
|
/// </summary>
|
|
public bool BasicCommands { get; set; }
|
|
|
|
/// <summary>
|
|
/// Jagd andere Tiere
|
|
/// </summary>
|
|
public bool Hunter { get; set; }
|
|
|
|
/// <summary>
|
|
/// Versucht alles zu essen
|
|
/// </summary>
|
|
public bool Eating { get; set; }
|
|
|
|
|
|
/// <summary>
|
|
/// Springt Menschen an
|
|
/// </summary>
|
|
public bool Jumper { get; set; }
|
|
|
|
#endregion
|
|
|
|
#region Persönlichkeit
|
|
|
|
/// <summary>
|
|
/// Mag Erwachsene
|
|
/// </summary>
|
|
public bool LikesAdults { get; set; }
|
|
|
|
/// <summary>
|
|
/// Mag Kinder
|
|
/// </summary>
|
|
public bool LikesChildren { get; set; }
|
|
|
|
/// <summary>
|
|
/// Mag Artgenossen
|
|
/// </summary>
|
|
public bool LikesConspecifics { get; set; }
|
|
|
|
/// <summary>
|
|
/// Ist zutraulich
|
|
/// </summary>
|
|
public bool IsTrustful { get; set; }
|
|
|
|
/// <summary>
|
|
/// Ist aggressiv
|
|
/// </summary>
|
|
public bool IsAggressiv { get; set; }
|
|
|
|
/// <summary>
|
|
/// Ist ein Einzelgänger
|
|
/// </summary>
|
|
public bool IsLoneGunner { get; set; }
|
|
|
|
/// <summary>
|
|
/// Aggressionsgrad des Hundes, wenn aggressiv
|
|
/// </summary>
|
|
public DogAggressionLevel AggressionLevel { get; set; }
|
|
|
|
#endregion
|
|
|
|
#region Verhalten wenn jemand das Haus betritt
|
|
|
|
/// <summary>
|
|
/// Stürmt nach draussen
|
|
/// </summary>
|
|
public bool RushesOutside { get; set; }
|
|
|
|
/// <summary>
|
|
/// Ist ruhig und entspannt
|
|
/// </summary>
|
|
public bool IsCalm { get; set; }
|
|
|
|
/// <summary>
|
|
/// Pinkelt vor Aufregung
|
|
/// </summary>
|
|
public bool IsPeeing { get; set; }
|
|
|
|
/// <summary>
|
|
/// Ist schüchtern
|
|
/// </summary>
|
|
public bool IsShy { get; set; }
|
|
|
|
/// <summary>
|
|
/// Bewacht das zuhause
|
|
/// </summary>
|
|
public bool IsGuard { get; set; }
|
|
|
|
#endregion
|
|
|
|
#region Medical
|
|
|
|
/// <summary>
|
|
/// Unverträglichkeiten
|
|
/// </summary>
|
|
public string Intolerances { get; set; }
|
|
|
|
/// <summary>
|
|
/// Ist gechipt
|
|
/// </summary>
|
|
public bool Chiped { get; set; }
|
|
|
|
/// <summary>
|
|
/// Ist sterilisiert?
|
|
/// </summary>
|
|
public bool Sterilized { get; set; }
|
|
|
|
/// <summary>
|
|
/// Medizinische Informationen
|
|
/// </summary>
|
|
public string MedicalInfo { get; set; }
|
|
|
|
#endregion
|
|
|
|
#region Sitting
|
|
|
|
/// <summary>
|
|
/// Ist stubenrein?
|
|
/// </summary>
|
|
public bool HouseTrained { get; set; }
|
|
|
|
/// <summary>
|
|
/// Fütterungszeiten
|
|
/// </summary>
|
|
public DogFeedingTimes FeedingTimes { get; set; }
|
|
|
|
/// <summary>
|
|
/// Fütterungszeiten Individuell
|
|
/// </summary>
|
|
public string FeedingIndividual { get; set; }
|
|
|
|
#endregion
|
|
|
|
/// <summary>
|
|
/// Optional: Kommentar von gehgassi
|
|
/// </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>
|
|
/// Datum der Erstellung
|
|
/// </summary>
|
|
public DateTimeOffset Created { get; set; }
|
|
}
|
|
|
|
/// <summary>
|
|
/// Min-Info eines Hundes
|
|
/// </summary>
|
|
public class DogMinInfo : SyncEntityVw
|
|
{
|
|
/// <summary>
|
|
/// Id der Hunderasse
|
|
/// </summary>
|
|
public string DogRaceId { get; set; }
|
|
|
|
/// <summary>
|
|
/// Name der Hunderasse
|
|
/// </summary>
|
|
public string DogRaceName { get; set; }
|
|
|
|
/// <summary>
|
|
/// Name des Hundes
|
|
/// </summary>
|
|
public string Name { get; set; }
|
|
|
|
/// <summary>
|
|
/// Optional - Foto des Hundes
|
|
/// </summary>
|
|
public string Photo { get; set; }
|
|
|
|
/// <summary>
|
|
/// Geschlecht
|
|
/// </summary>
|
|
public DogSex Sex { get; set; }
|
|
|
|
/// <summary>
|
|
/// Größe des Hundes
|
|
/// </summary>
|
|
public DogSize Size { get; set; }
|
|
|
|
/// <summary>
|
|
/// Geburtstag des Hundes
|
|
/// </summary>
|
|
public DateTimeOffset? BirthDate { get; set; }
|
|
|
|
/// <summary>
|
|
/// Durchschnittliche Bewertung
|
|
/// </summary>
|
|
public decimal AverageRating { get; set; }
|
|
}
|
|
|
|
/// <summary>
|
|
/// Hilfsklasse für das Speichern von Hunden zu Walks
|
|
/// </summary>
|
|
public class DogWalkJson
|
|
{
|
|
/// <summary>
|
|
/// Id des Hundes
|
|
/// </summary>
|
|
[JsonPropertyName("id")]
|
|
public string Id { get; set; }
|
|
|
|
/// <summary>
|
|
/// Name des Hundes
|
|
/// </summary>
|
|
[JsonPropertyName("name")]
|
|
public string Name { get; set; }
|
|
}
|
|
}
|