using System; using System.ComponentModel.DataAnnotations; namespace gehGassi.Web.Models { /// /// Viewmodel für einen App-User /// public class AppUserVm : SyncEntityVm { /// /// Art des App-Users /// [Required(ErrorMessage = "Err_Required")] [Display(Name = "AppUser_Type")] public AppUserTypeVm Type { get; set; } /// /// Nummer des Hundebesitzers /// [Required(ErrorMessage = "Err_Required")] [MaxLength(100, ErrorMessage = "Err_StringLength_Max")] [Display(Name = "Common_Number")] public string Number { get; set; } /// /// Anrede / titel /// [MaxLength(50, ErrorMessage = "Err_StringLength_Max")] [Display(Name = "Common_Title")] public string Title { get; set; } /// /// Vorname /// [Required(ErrorMessage = "Err_Required")] [MaxLength(150, ErrorMessage = "Err_StringLength_Max")] [Display(Name = "Common_FirstName")] public string FirstName { get; set; } /// /// Nachname /// [Required(ErrorMessage = "Err_Required")] [MaxLength(150, ErrorMessage = "Err_StringLength_Max")] [Display(Name = "Common_LastName")] public string LastName { get; set; } /// /// Geschlecht /// [Display(Name = "Common_Sex")] public SexVm Sex { get; set; } /// /// Optional - Geburtstag /// [Display(Name = "Common_BirthDate")] public DateTimeOffset? BirthDate { get; set; } /// /// Optional - Foto des Benutzers /// [MaxLength(500, ErrorMessage = "Err_StringLength_Max")] [Display(Name = "Common_Photo")] public string Photo { get; set; } /// /// Kontaktdaten /// [Display(Name = "Common_Contact")] public ContactMinVm Contact { get; set; } /// /// Adressdaten /// [Display(Name = "Common_Address")] public AddressVm Address { get; set; } /// /// Socialmedia Daten /// [Display(Name = "Common_SocialMedia")] public SocialMediaVm SocialMedia { get; set; } /// /// Interne Anmerkungen /// [MaxLength(1000, ErrorMessage = "Err_StringLength_Max")] [Display(Name = "Common_Comment")] public string Comment { get; set; } /// /// Gesperrt /// [Required(ErrorMessage = "Err_Required")] [Display(Name = "Common_Locked")] public bool Locked { get; set; } /// /// Grund für die Sperrung /// [MaxLength(1000, ErrorMessage = "Err_StringLength_Max")] [Display(Name = "Common_LockedReason")] public string LockedReason { get; set; } /// /// Gesperrt bis /// [Display(Name = "Common_LockedUntil")] public DateTimeOffset? LockedUntil { get; set; } /// /// Wie oft wurde der Benutzer gesperrt /// [Display(Name = "Common_LockedCount")] public int LockedCount { get; set; } /// /// Wurden die AGB akzeptiert /// [Required(ErrorMessage = "Err_Required")] [Display(Name = "Common_TermsAccepted")] public bool TermsAccepted { get; set; } /// /// Wann wurden die AGB akzeptiert? /// [Display(Name = "Common_TermsAcceptedDate")] public DateTimeOffset? TermsAcceptedDate { get; set; } /// /// Wurden die Datenschutzbedingungen akzeptiert /// [Required(ErrorMessage = "Err_Required")] [Display(Name = "Common_PrivacyAcceptedd")] public bool PrivacyAccepted { get; set; } /// /// Wann wurden die Datenschutzbedingungen akzeptiert? /// [Display(Name = "Common_PrivacyAcceptedDate")] public DateTimeOffset? PrivacyAcceptedDate { get; set; } /// /// Wurden die Datenschutzbedingungen des Paymentproviders akzeptiert /// [Required(ErrorMessage = "Err_Required")] [Display(Name = "Common_PaymentTermsAccepted")] public bool PaymentTermsAccepted { get; set; } /// /// Wann wurden die Datenschutzbedingungen des Paymentproviders akzeptiert? /// [Display(Name = "Common_PaymentTermsAcceptedDate")] public DateTimeOffset? PaymentTermsAcceptedDate { get; set; } /// /// Nationalität ISO-2 /// [MaxLength(2, ErrorMessage = "Err_StringLength_Max")] [Display(Name = "Common_NationalityCode")] public string NationalityCode { get; set; } /// /// Land Hauptwohnsitz ISO-2 /// [MaxLength(2, ErrorMessage = "Err_StringLength_Max")] [Display(Name = "Common_MainResidenceCode")] public string MainResidenceCode { get; set; } /// /// ID des AppUsers beim Payment-Provider /// [MaxLength(255, ErrorMessage = "Err_StringLength_Max")] [Display(Name = "Common_PaymentId")] public string PaymentId { get; set; } /// /// Gibt an ob der Benutzer den KYC-Prozess durchlaufen hat /// [Required(ErrorMessage = "Err_Required")] [Display(Name = "Common_KycPassed")] public bool KycPassed { get; set; } /// /// Wann wurde der KYC-Prozess erfolgreich durchlaufen? /// [Display(Name = "Common_KycPassedDate")] public DateTimeOffset? KycPassedDate { get; set; } /// /// Gibt an ob es sich um einen verifizierten Benutzer handelt /// [Required(ErrorMessage = "Err_Required")] [Display(Name = "Common_Verified", Description = "Common_Verified_Desc")] public bool Verified { get; set; } /// /// Wann wurde die Verification erfolgreich durchlaufen? /// [Display(Name = "Common_VerifiedDate")] public DateTimeOffset? VerifiedDate { get; set; } /// /// Gibt an ob für den Benutzer eine automatische Auszahlung erfolgen soll /// Das kann z.B. Wöchentlich sein. TODO: Besprechen wie das erfolgen soll /// [Required(ErrorMessage = "Err_Required")] [Display(Name = "Common_AutoPayout", Description = "Common_AutoPayout_Desc")] public bool AutoPayout { get; set; } /// /// Datum der Erstellung /// [Display(Name = "Common_Created")] public DateTimeOffset Created { get; set; } /// /// Wurde der Benutzer anonymisiert? /// [Required] [Display(Name = "Common_Anonymized")] public bool Anonymized { get; set; } /// /// Wann wurde der Benutzer anonymisiert? /// [Display(Name = "Common_AnonymizedDate")] public DateTimeOffset? AnonymizedDate { get; set; } /// /// Erstellt eine Instanz /// public AppUserVm() { Contact = new ContactMinVm(); Address = new AddressVm(); SocialMedia = new SocialMediaVm(); } } /// /// Viewmodel für das Anlegen & Bearbeiten eines App-Users /// public class AppUserCrudVm : AppUserVm { /// /// Land-Name /// public string CountryName { get; set; } /// /// Bundesland-Name /// public string StateName { get; set; } /// /// Nationalität-Name /// public string NationalityName { get; set; } /// /// Hauptwohnsitz Land-Name /// public string MainResidenceName { get; set; } } /// /// Viewmodel für einen App-User Listen /// public class AppUserListVm : SyncEntityListVm { /// /// Art des App-Users /// public AppUserTypeVm Type { get; set; } /// /// Typ als Text /// public string TypeText { get; set; } /// /// Nummer des Hundebesitzers /// 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 SexVm Sex { get; set; } /// /// Geschlecht als Text /// public string SexText { get; set; } /// /// Optional - Geburtstag /// public DateTimeOffset? BirthDate { get; set; } /// /// Optional - Foto des Benutzers /// public string Photo { get; set; } /// /// E-Mail Adresse /// public string Email { get; set; } /// /// Optional: Stadt / Ort /// public string City { get; set; } /// /// Optinale PLZ /// public string Zip { get; set; } /// /// ISO2 Ländercode /// public string CountryCode { get; set; } /// /// ISO2 BundeslandCode /// public string State { get; set; } /// /// Gesperrt /// public bool Locked { get; set; } /// /// Grund für die Sperrung /// public string LockedReason { get; set; } /// /// Gesperrt bis /// public DateTimeOffset? LockedUntil { get; set; } /// /// Wie oft wurde der Benutzer gesperrt /// public int LockedCount { get; set; } /// /// Wurden die AGB akzeptiert /// public bool TermsAccepted { get; set; } /// /// Wann wurden die AGB akzeptiert? /// public DateTimeOffset? TermsAcceptedDate { get; set; } /// /// Nationalität ISO-2 /// public string NationalityCode { get; set; } /// /// Land Hauptwohnsitz ISO-2 /// public string MainResidenceCode { get; set; } /// /// Gibt an ob der Benutzer den KYC-Prozess durchlaufen hat /// public bool KycPassed { get; set; } /// /// Gibt an ob es sich um einen verifizierten Benutzer handelt /// public bool Verified { get; set; } /// /// Gibt an ob für den Benutzer eine automatische Auszahlung erfolgen soll /// Das kann z.B. Wöchentlich sein. /// public bool AutoPayout { get; set; } /// /// Wurde der Benutzer anonymisiert? /// public bool Anonymized { get; set; } /// /// Wann wurde der Benutzer anonymisiert? /// public DateTimeOffset? AnonymizedDate { get; set; } /// /// Datum der Erstellung /// public DateTimeOffset Created { get; set; } } /// /// Viewmodel für das Sperren eines App-Users /// public class AppUserLockVm { /// /// Guid als String - wird als Key verwendet. /// Hier so gelöst, da nicht alle Datenbanken über Guids verfügen /// [Required(ErrorMessage = "Err_Required")] public string Id { get; set; } /// /// Gesperrt bis /// [Display(Name = "Common_LockedUntil")] public DateTimeOffset? LockedUntil { get; set; } /// /// Grund für die Sperrung /// [Required(ErrorMessage = "Err_Required")] [MaxLength(1000, ErrorMessage = "Err_StringLength_Max")] [Display(Name = "Common_LockedReason")] public string LockedReason { get; set; } } }