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