using System; using System.Collections.Generic; using System.ComponentModel.DataAnnotations; using System.Drawing; using System.Text; using gehGassi.Dto.Common; namespace gehGassi.Dto { /// /// Dto für App-Users /// public class AppUserDto : SyncEntityDto { /// /// Art des App-Users /// public AppUserTypeDto Type { get; set; } /// /// Anrede / titel /// [MaxLength(50)] public string Title { get; set; } /// /// Vorname /// [Required] [MaxLength(150)] public string FirstName { get; set; } /// /// Nachname /// [Required] [MaxLength(150)] public string LastName { get; set; } /// /// Geschlecht /// [Required] public SexDto Sex { get; set; } /// /// Optional - Geburtstag /// public DateTimeOffset? BirthDate { get; set; } /// /// Optional - Foto des Benutzers /// [MaxLength(500)] public string Photo { get; set; } /// /// Kontaktdaten /// public ContactMinDto Contact { get; set; } /// /// Adressdaten /// public AddressDto Address { get; set; } /// /// Breitengrad der Adresse /// public double Lat { get; set; } /// /// Längengrad der Adresse /// public double Lng { get; set; } /// /// Socialmedia Daten /// public SocialMediaDto SocialMedia { get; set; } /// /// Rating-Statistiken für den Hundebesitzer /// public RatingStatisticsDto RatingStatistics { get; set; } /// /// Ratingstatistiken wenn auch oder nur Walker /// public RatingStatisticsDto RatingStatisticsWalker { get; set; } /// /// Gesperrt /// [Required] public bool Locked { get; set; } /// /// Gesperrt bis /// public DateTimeOffset? LockedUntil { get; set; } /// /// Wurden die AGB akzeptiert /// [Required] public bool TermsAccepted { get; set; } /// /// Wann wurden die AGB akzeptiert? /// public DateTimeOffset? TermsAcceptedDate { get; set; } /// /// Wurden die Datenschutzbedingungen akzeptiert /// [Required] public bool PrivacyAccepted { get; set; } /// /// Wann wurden die Datenschutzbedingungen akzeptiert? /// public DateTimeOffset? PrivacyAcceptedDate { get; set; } #region Erweiterungen Mangopay /// /// Wurden die Datenschutzbedingungen des Paymentproviders akzeptiert /// [Required] public bool PaymentTermsAccepted { get; set; } /// /// Wann wurden die Datenschutzbedingungen des Paymentproviders akzeptiert? /// public DateTimeOffset? PaymentTermsAcceptedDate { get; set; } /// /// Nationalität ISO-2 /// [MaxLength(2)] public string NationalityCode { get; set; } /// /// Land Hauptwohnsitz ISO-2 /// [MaxLength(2)] public string MainResidenceCode { get; set; } /// /// ID des AppUsers beim Payment-Provider /// [MaxLength(255)] public string PaymentId { get; set; } /// /// Gibt an ob der Benutzer den KYC-Prozess durchlaufen hat /// [Required] public bool KycPassed { get; set; } /// /// Wann wurde der KYC-Prozess erfolgreich durchlaufen? /// public DateTimeOffset? KycPassedDate { get; set; } /// /// ID der Bank-Verbindung beim Payment-Provider /// [MaxLength(255)] public string BankId { get; set; } #endregion /// /// Gibt an ob es sich um einen verifizierten Benutzer handelt /// [Required] public bool Verified { get; set; } /// /// Wann wurde die Verification erfolgreich durchlaufen? /// 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] public bool AutoPayout { get; set; } /// /// Datum der Erstellung /// public DateTimeOffset Created { get; set; } } /// /// DDto für den Setzen des AppUser Types /// public class SetAppUserTypeDto { /// /// Id des AppUsers /// [Required] public string Id { get; set; } /// /// Typ des AppUsers der gesetzt werden soll /// [Required] public AppUserTypeDto Type { get; set; } /// /// Datum und Uhrzeit inkl. Zeitzone wann die letzte Aktualisierung stattgefunden hat. /// public DateTimeOffset UpdatedAt { get; set; } = DateTimeOffset.UtcNow; } /// /// Dto für das Setzen des AppUser Types wenn ein Walker angelegt werden soll /// public class SetAppUserTypeExDto : SetAppUserTypeDto { /// /// Nationalität ISO-2 /// [Required] [MaxLength(2)] public string NationalityCode { get; set; } /// /// Land Hauptwohnsitz ISO-2 /// [Required] [MaxLength(2)] public string MainResidenceCode { get; set; } /// /// Wurden die Datenschutzbedingungen des Paymentproviders akzeptiert /// [Required] public bool PaymentTermsAccepted { get; set; } /// /// Wann wurden die Datenschutzbedingungen des Paymentproviders akzeptiert? /// public DateTimeOffset? PaymentTermsAcceptedDate { get; set; } } /// /// DTO für das Hinzufügen eines PaymentUsers zu einem Hundebesitzer /// public class AddPaymentUserDto { /// /// Id des AppUsers /// [Required] public string Id { get; set; } /// /// Nationalität ISO-2 /// [Required] [MaxLength(2)] public string NationalityCode { get; set; } /// /// Land Hauptwohnsitz ISO-2 /// [Required] [MaxLength(2)] public string MainResidenceCode { get; set; } /// /// Wurden die Datenschutzbedingungen des Paymentproviders akzeptiert /// [Required] public bool PaymentTermsAccepted { get; set; } /// /// Wann wurden die Datenschutzbedingungen des Paymentproviders akzeptiert? /// public DateTimeOffset? PaymentTermsAcceptedDate { get; set; } } /// /// DTO für das Anlegen oder Aktualisieren einer Bankverbindung eines AppUsers /// public class BankAccountDto { /// /// ID des AppUsers /// [Required] [MaxLength(128)] public string AppUserId { get; set; } /// /// ID des AppUsers bei MangoPay /// [MaxLength(128)] public string PaymentId { get; set; } /// /// ID der Bankverbindung bei MangoPay /// [MaxLength(128)] public string BankId { get; set; } /// /// Name des Inhabers der Bankverbindung /// [Required] [MaxLength(255)] public string OwnerName { get; set; } /// /// Adresse des Inhabers der Bankverbindung /// [Required] public AddressDto Address { get; set; } /// /// Iban der Bankverbindung /// [Required] [MaxLength(255)] public string Iban { get; set; } /// /// Bic der Bankverbindung /// [MaxLength(255)] public string Bic { get; set; } } /// /// Dto für das Blockieren eines AppUsers durch einen anderen AppUser /// public class BlockCreateDto { /// /// Id des App-Users der die Blockierung erstellt hat /// [Required] [MaxLength(128)] public string BlockingAppUserId { get; set; } /// /// Id des App-Users der blockiert wurde /// [Required] [MaxLength(128)] public string BlockedAppUserId { get; set; } } /// /// Dto für das Entfernen einer Blockierung eines AppUsers durch einen anderen AppUser /// public class BlockRemoveDto { /// /// Id des App-Users der die Blockierung erstellt hat /// [Required] [MaxLength(128)] public string BlockingAppUserId { get; set; } /// /// Id des App-Users der blockiert wurde /// [Required] [MaxLength(128)] public string BlockedAppUserId { get; set; } } /// /// DTO für eine App-User-Blockierung /// public class AppUserBlockDto { /// /// Id der Blockierung /// [Required] public long Id { get; set; } /// /// Id des App-Users der die Blockierung erstellt hat /// [Required] [MaxLength(128)] public string BlockingAppUserId { get; set; } /// /// Id des App-Users der blockiert wurde /// [MaxLength(128)] public string? BlockedAppUserId { get; set; } /// /// Wie lange ist die Blockierung gültig? /// Wenn null, dann dauerhaft /// public DateTimeOffset? BlockedUntil { get; set; } /// /// Optional: Verweis auf einen AppUserReport /// public long? AppUserReportId { get; set; } /// /// Erstellt von? /// [MaxLength(256)] public string CreatedBy { get; set; } /// /// Wann wurde die Blockierung erstellt? /// public DateTimeOffset Created { get; set; } } /// /// DTO für eine App-User-Blockierung mit Namen aufgelöst /// public class AppUserBlockWithNamesDto { /// /// Id der Blockierung /// public long Id { get; set; } /// /// Id des App-Users der die Blockierung erstellt hat /// public string BlockingAppUserId { get; set; } /// /// Id des App-Users der blockiert wurde /// public string? BlockedAppUserId { get; set; } /// /// Wie lange ist die Blockierung gültig? /// Wenn null, dann dauerhaft /// public DateTimeOffset? BlockedUntil { get; set; } /// /// Optional: Verweis auf einen AppUserReport /// public long? AppUserReportId { get; set; } /// /// Erstellt von? /// public string CreatedBy { get; set; } /// /// Wann wurde die Blockierung erstellt? /// public DateTimeOffset Created { get; set; } /// /// Art des App-Users /// public AppUserTypeDto Type { get; set; } /// /// Vorname /// public string FirstName { get; set; } /// /// Nachname /// public string LastName { get; set; } /// /// Optional - Foto des Benutzers /// public string Photo { get; set; } /// /// Hinweis auf den Ort wo jemand zu Hause ist /// public string LocationHint { get; set; } /// /// Breitengrad der Adresse /// public double Lat { get; set; } /// /// Längengrad der Adresse /// public double Lng { get; set; } /// /// Gesperrt /// public bool Locked { get; set; } /// /// Gesperrt /// public bool Deleted { get; set; } } }