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