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