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