381 lines
11 KiB
C#

using System;
using System.ComponentModel.DataAnnotations;
using gehGassi.Web.Helper;
namespace gehGassi.Web.Models
{
/// <summary>
/// Viewmodel für einen Hund
/// </summary>
public class DogVm : SyncEntityVm
{
/// <summary>
/// Id der Hunderasse
/// </summary>
[MaxLength(128, ErrorMessage = "Err_StringLength_Max")]
[Display(Name = "Dog_DogRaceId", Description = "Dog_DogRaceId_Desc")]
public string DogRaceId { get; set; }
/// <summary>
/// Id des Hundebesitzers
/// </summary>
[Required(ErrorMessage = "Err_Required")]
[MaxLength(128, ErrorMessage = "Err_StringLength_Max")]
[Display(Name = "Dog_DogOwnerId", Description = "Dog_DogOwnerId_Desc")]
public string AppUserId { get; set; }
#region Basis
/// <summary>
/// Nummer des Hundes
/// </summary>
[Required(ErrorMessage = "Err_Required")]
[MaxLength(100, ErrorMessage = "Err_StringLength_Max")]
[Display(Name = "Dog_Number", Description = "Dog_Number_Desc")]
public string Number { get; set; }
/// <summary>
/// Name des Hundes
/// </summary>
[Required(ErrorMessage = "Err_Required")]
[MaxLength(100, ErrorMessage = "Err_StringLength_Max")]
[Display(Name = "Dog_Name", Description = "Dog_Name_Desc")]
public string Name { get; set; }
/// <summary>
/// Optional: Beschreibung für Walker und Sitter
/// </summary>
[MaxLength(5000, ErrorMessage = "Err_StringLength_Max")]
[Display(Name = "Dog_Description", Description = "Dog_Description_Desc")]
public string Description { get; set; }
/// <summary>
/// Optional - Foto des Hundes
/// </summary>
[MaxLength(500, ErrorMessage = "Err_StringLength_Max")]
[Display(Name = "Dog_Photo", Description = "Dog_Photo_Desc")]
public string Photo { get; set; }
/// <summary>
/// Geburtstag des Hundes
/// </summary>
[Display(Name = "Dog_BirthDate")]
public DateTimeOffset? BirthDate { get; set; }
/// <summary>
/// Geschlecht des Hundes
/// </summary>
[Required(ErrorMessage = "Err_Required")]
[Display(Name = "Dog_Sex")]
public DogSexVm Sex { get; set; }
/// <summary>
/// Größe des Hundes
/// </summary>
[Required(ErrorMessage = "Err_Required")]
[Display(Name = "Dog_Size")]
public DogSizeVm Size { get; set; }
#endregion
#region Eigenschaften beim Gassi gehen
/// <summary>
/// Zieht an der Leine
/// </summary>
[Required(ErrorMessage = "Err_Required")]
[Display(Name = "Dog_PullsTheLeash")]
public bool PullsTheLeash { get; set; }
/// <summary>
/// Geht an der Leine
/// </summary>
[Required(ErrorMessage = "Err_Required")]
[Display(Name = "Dog_WalksTheLeash")]
public bool WalksTheLeash { get; set; }
/// <summary>
/// Kennt die Grundkommandos
/// </summary>
[Required(ErrorMessage = "Err_Required")]
[Display(Name = "Dog_BasicCommands", Description = "Dog_BasicCommands_Desc")]
public bool BasicCommands { get; set; }
/// <summary>
/// Jagd andere Tiere
/// </summary>
[Required(ErrorMessage = "Err_Required")]
[Display(Name = "Dog_Hunter")]
public bool Hunter { get; set; }
/// <summary>
/// Versucht alles zu essen
/// </summary>
[Required(ErrorMessage = "Err_Required")]
[Display(Name = "Dog_Eating", Description = "Dog_Eating_Desc")]
public bool Eating { get; set; }
/// <summary>
/// Springt Menschen an
/// </summary>
[Required(ErrorMessage = "Err_Required")]
[Display(Name = "Dog_Jumper")]
public bool Jumper { get; set; }
#endregion
#region Persönlichkeit
/// <summary>
/// Mag Erwachsene
/// </summary>
[Required(ErrorMessage = "Err_Required")]
[Display(Name = "Dog_LikesAdults")]
public bool LikesAdults { get; set; }
/// <summary>
/// Mag Kinder
/// </summary>
[Required(ErrorMessage = "Err_Required")]
[Display(Name = "Dog_LikesChildren")]
public bool LikesChildren { get; set; }
/// <summary>
/// Mag Artgenossen
/// </summary>
[Required(ErrorMessage = "Err_Required")]
[Display(Name = "Dog_LikesConspecifics")]
public bool LikesConspecifics { get; set; }
/// <summary>
/// Ist zutraulich
/// </summary>
[Required(ErrorMessage = "Err_Required")]
[Display(Name = "Dog_IsTrustful")]
public bool IsTrustful { get; set; }
/// <summary>
/// Ist aggressiv
/// </summary>
[Required(ErrorMessage = "Err_Required")]
[Display(Name = "Dog_IsAggressiv", Description = "Dog_IsAggressiv_Desc")]
public bool IsAggressiv { get; set; }
/// <summary>
/// Ist ein Einzelgänger
/// </summary>
[Required(ErrorMessage = "Err_Required")]
[Display(Name = "Dog_IsLoneGunner")]
public bool IsLoneGunner { get; set; }
/// <summary>
/// Aggressionsgrad des Hundes, wenn aggressiv
/// </summary>
[Required(ErrorMessage = "Err_Required")]
[Display(Name = "Dog_DogAggressionLevel", Description = "Dog_DogAggressionLevel_Desc")]
public DogAggressionLevelVm AggressionLevel { get; set; }
#endregion
#region Verhalten wenn jemand das Haus betritt
/// <summary>
/// Stürmt nach draussen
/// </summary>
[Required(ErrorMessage = "Err_Required")]
[Display(Name = "Dog_RushesOutside", Description = "Dog_RushesOutside_Desc")]
public bool RushesOutside { get; set; }
/// <summary>
/// Ist ruhig und entspannt
/// </summary>
[Required(ErrorMessage = "Err_Required")]
[Display(Name = "Dog_IsCalm", Description = "Dog_IsCalm_Desc")]
public bool IsCalm { get; set; }
/// <summary>
/// Pinkelt vor Aufregung
/// </summary>
[Required(ErrorMessage = "Err_Required")]
[Display(Name = "Dog_IsPeeing", Description = "Dog_IsPeeing_Desc")]
public bool IsPeeing { get; set; }
/// <summary>
/// Ist schüchtern
/// </summary>
[Required(ErrorMessage = "Err_Required")]
[Display(Name = "Dog_IsShy", Description = "Dog_IsShy_Desc")]
public bool IsShy { get; set; }
/// <summary>
/// Bewacht das zuhause
/// </summary>
[Required(ErrorMessage = "Err_Required")]
[Display(Name = "Dog_IsGuard", Description = "Dog_IsGuard_Desc")]
public bool IsGuard { get; set; }
#endregion
#region Medical
/// <summary>
/// Unverträglichkeiten
/// </summary>
[MaxLength(500, ErrorMessage = "Err_StringLength_Max")]
[Display(Name = "Dog_Intolerances", Description = "Dog_Intolerances_Desc")]
public string Intolerances { get; set; }
/// <summary>
/// Ist gechipt
/// </summary>
[Required(ErrorMessage = "Err_Required")]
[Display(Name = "Dog_Chiped", Description = "Dog_Chiped_Desc")]
public bool Chiped { get; set; }
/// <summary>
/// Ist sterilisiert?
/// </summary>
[Required(ErrorMessage = "Err_Required")]
[Display(Name = "Dog_Sterilized", Description = "Dog_Sterilized_Desc")]
public bool Sterilized { get; set; }
/// <summary>
/// Medizinische Informationen
/// </summary>
[MaxLength(500, ErrorMessage = "Err_StringLength_Max")]
[Display(Name = "Dog_MedicalInfo", Description = "Dog_MedicalInfo_Desc")]
public string MedicalInfo { get; set; }
#endregion
#region Sitting
/// <summary>
/// Ist stubenrein?
/// </summary>
[Required(ErrorMessage = "Err_Required")]
[Display(Name = "Dog_HouseTrained")]
public bool HouseTrained { get; set; }
/// <summary>
/// Fütterungszeiten
/// </summary>
[Required(ErrorMessage = "Err_Required")]
[Display(Name = "Dog_FeedingTimes", Description = "Dog_FeedingTimes_Desc")]
public DogFeedingTimesVm FeedingTimes { get; set; }
/// <summary>
/// Fütterungszeiten Individuell
/// </summary>
[RequiredIf("FeedingTimes", (int)DogFeedingTimesVm.Individual, ErrorMessage = "Err_Required")]
[MaxLength(500, ErrorMessage = "Err_StringLength_Max")]
[Display(Name = "Dog_FeedingIndividual", Description = "Dog_FeedingIndividual_Desc")]
public string FeedingIndividual { get; set; }
#endregion
/// <summary>
/// Optional: Kommentar von gehgassi
/// </summary>
[Display(Name = "Dog_Comment", Description = "Dog_Comment_Desc")]
public string Comment { get; set; }
/// <summary>
/// Datum der Erstellung
/// </summary>
[Display(Name = "Common_Created")]
public DateTimeOffset Created { get; set; }
}
/// <summary>
/// Viewmodel für das Anlegen & Bearbeiten eines Hundes
/// </summary>
public class DogCrudVm : DogVm
{
/// <summary>
/// Name der Hunderasse
/// </summary>
public string DogRaceName { get; set; }
/// <summary>
/// Name des Hundebesitzers
/// </summary>
public string AppUserName { get; set; }
}
/// <summary>
/// Viewmodel für einen Hund - Listendarstellung
/// </summary>
public class DogListVm : SyncEntityListVm
{
/// <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 - 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 DogSexVm Sex { get; set; }
/// <summary>
/// Geschlecht des Hundes
/// </summary>
public string SexText { get; set; }
/// <summary>
/// Größe des Hundes
/// </summary>
public DogSizeVm Size { get; set; }
/// <summary>
/// Größe des Hundes
/// </summary>
public string SizeText { get; set; }
#endregion
/// <summary>
/// Datum der Erstellung
/// </summary>
public DateTimeOffset Created { get; set; }
}
}