526 lines
17 KiB
C#
526 lines
17 KiB
C#
using System;
|
|
using System.ComponentModel.DataAnnotations;
|
|
using gehGassi.Web.Helper;
|
|
|
|
namespace gehGassi.Web.Models
|
|
{
|
|
/// <summary>
|
|
/// ViewModel für eine Adresse
|
|
/// Nur Land REQUIRED
|
|
/// </summary>
|
|
public class AddressVm
|
|
{
|
|
/// <summary>
|
|
/// Optionale Adresszeile 1
|
|
/// </summary>
|
|
[MaxLength(100, ErrorMessage = "Err_StringLength_Max")]
|
|
[Display(Name = "Address_AddressLine1")]
|
|
public string AddressLine1 { get; set; }
|
|
|
|
/// <summary>
|
|
/// Optionale Adresszeile 2
|
|
/// </summary>
|
|
[MaxLength(100, ErrorMessage = "Err_StringLength_Max")]
|
|
[Display(Name = "Address_AddressLine2")]
|
|
public string AddressLine2 { get; set; }
|
|
|
|
/// <summary>
|
|
/// Optional: Stadt / Ort
|
|
/// </summary>
|
|
[MaxLength(100, ErrorMessage = "Err_StringLength_Max")]
|
|
[Display(Name = "Address_City")]
|
|
public string City { get; set; }
|
|
|
|
/// <summary>
|
|
/// Optinale PLZ
|
|
/// </summary>
|
|
[MaxLength(20, ErrorMessage = "Err_StringLength_Max")]
|
|
[Display(Name = "Address_Zip")]
|
|
public string Zip { get; set; }
|
|
|
|
/// <summary>
|
|
/// Bundesland / Staat
|
|
/// </summary>
|
|
[MaxLength(100, ErrorMessage = "Err_StringLength_Max")]
|
|
[Required(ErrorMessage = "Err_Required")]
|
|
[Display(Name = "Address_State")]
|
|
public string State { get; set; }
|
|
|
|
/// <summary>
|
|
/// ISO2 Ländercode
|
|
/// </summary>
|
|
[Required(ErrorMessage = "Err_Required")]
|
|
[MaxLength(2, ErrorMessage = "Err_StringLength_Max")]
|
|
[Display(Name = "Address_CountryCode")]
|
|
public string CountryCode { get; set; }
|
|
}
|
|
|
|
/// <summary>
|
|
/// Adresse mit Namen für Bundesland und Land aufgelöst
|
|
/// </summary>
|
|
public class AddressWithNamesVm : AddressVm
|
|
{
|
|
/// <summary>
|
|
/// Bundesland Name
|
|
/// </summary>
|
|
public string StateName { get; set; }
|
|
|
|
/// <summary>
|
|
/// Landname
|
|
/// </summary>
|
|
public string CountryName { get; set; }
|
|
}
|
|
|
|
/// <summary>
|
|
/// ViewModel für eine Adresse
|
|
/// Adresszeile1, Stadt, PLZ und Land REQUIRED
|
|
/// </summary>
|
|
public class AddressRequiredVm
|
|
{
|
|
/// <summary>
|
|
/// Optionale Adresszeile 1
|
|
/// </summary>
|
|
[Required(ErrorMessage = "Err_Required")]
|
|
[MaxLength(100, ErrorMessage = "Err_StringLength_Max")]
|
|
[Display(Name = "Address_AddressLine1")]
|
|
public string AddressLine1 { get; set; }
|
|
|
|
/// <summary>
|
|
/// Optionale Adresszeile 2
|
|
/// </summary>
|
|
[MaxLength(100, ErrorMessage = "Err_StringLength_Max")]
|
|
[Display(Name = "Address_AddressLine2")]
|
|
public string AddressLine2 { get; set; }
|
|
|
|
/// <summary>
|
|
/// Optional: Stadt / Ort
|
|
/// </summary>
|
|
[Required(ErrorMessage = "Err_Required")]
|
|
[MaxLength(100, ErrorMessage = "Err_StringLength_Max")]
|
|
[Display(Name = "Address_City")]
|
|
public string City { get; set; }
|
|
|
|
/// <summary>
|
|
/// Optinale PLZ
|
|
/// </summary>
|
|
[Required(ErrorMessage = "Err_Required")]
|
|
[MaxLength(20, ErrorMessage = "Err_StringLength_Max")]
|
|
[Display(Name = "Address_Zip")]
|
|
public string Zip { get; set; }
|
|
|
|
/// <summary>
|
|
/// Bundesland / Staat
|
|
/// </summary>
|
|
[MaxLength(100, ErrorMessage = "Err_StringLength_Max")]
|
|
[Required(ErrorMessage = "Err_Required")]
|
|
[Display(Name = "Address_State")]
|
|
public string State { get; set; }
|
|
|
|
/// <summary>
|
|
/// ISO2 Ländercode
|
|
/// </summary>
|
|
[Required(ErrorMessage = "Err_Required")]
|
|
[MaxLength(2, ErrorMessage = "Err_StringLength_Max")]
|
|
[Display(Name = "Address_CountryCode")]
|
|
public string CountryCode { get; set; }
|
|
}
|
|
|
|
/// <summary>
|
|
/// ViewModel für eine Adresse bei Endkunden.
|
|
/// Required wird nur angewandt wenn die Lieferadresse ungleich der Rechnungsadresse ist
|
|
/// </summary>
|
|
public class DeliveryAddressVm
|
|
{
|
|
/// <summary>
|
|
/// Optionale Adresszeile 1
|
|
/// </summary>
|
|
[RequiredIf("DeliveryAddressIsBilling", false, ErrorMessage = "Err_Required")]
|
|
[MaxLength(100, ErrorMessage = "Err_StringLength_Max")]
|
|
[Display(Name = "Address_AddressLine1")]
|
|
public string AddressLine1 { get; set; }
|
|
|
|
/// <summary>
|
|
/// Optionale Adresszeile 2
|
|
/// </summary>
|
|
[MaxLength(100, ErrorMessage = "Err_StringLength_Max")]
|
|
[Display(Name = "Address_AddressLine2")]
|
|
public string AddressLine2 { get; set; }
|
|
|
|
/// <summary>
|
|
/// Optional: Stadt / Ort
|
|
/// </summary>
|
|
[RequiredIf("DeliveryAddressIsBilling", false, ErrorMessage = "Err_Required")]
|
|
[MaxLength(100, ErrorMessage = "Err_StringLength_Max")]
|
|
[Display(Name = "Address_City")]
|
|
public string City { get; set; }
|
|
|
|
/// <summary>
|
|
/// Optinale PLZ
|
|
/// </summary>
|
|
[RequiredIf("DeliveryAddressIsBilling", false, ErrorMessage = "Err_Required")]
|
|
[MaxLength(20, ErrorMessage = "Err_StringLength_Max")]
|
|
[Display(Name = "Address_Zip")]
|
|
public string Zip { get; set; }
|
|
|
|
/// <summary>
|
|
/// Bundesland / Staat
|
|
/// </summary>
|
|
[MaxLength(100, ErrorMessage = "Err_StringLength_Max")]
|
|
[Display(Name = "Address_State")]
|
|
public string State { get; set; }
|
|
|
|
/// <summary>
|
|
/// ISO2 Ländercode
|
|
/// </summary>
|
|
[Required(ErrorMessage = "Err_Required")]
|
|
[MaxLength(2, ErrorMessage = "Err_StringLength_Max")]
|
|
[Display(Name = "Address_CountryCode")]
|
|
public string CountryCode { get; set; }
|
|
|
|
/// <summary>
|
|
/// Ist die Liefer-Adresse auch die Rechnungsadresse?
|
|
/// </summary>
|
|
[Required(ErrorMessage = "Err_Required")]
|
|
[Display(Name = "Address_DeliveryAddressIsBilling",Description = "Address_DeliveryAddressIsBilling_Desc")]
|
|
public bool DeliveryAddressIsBilling { get; set; }
|
|
}
|
|
|
|
/// <summary>
|
|
/// ViewModel für Kontaktdaten
|
|
/// </summary>
|
|
public class ContactVm
|
|
{
|
|
/// <summary>
|
|
/// Email-Adresse der Kontaktperson
|
|
/// </summary>
|
|
[EmailAddress(ErrorMessage = "Err_InvalidEmail")]
|
|
[MaxLength(255, ErrorMessage = "Err_StringLength_Max")]
|
|
[Display(Name = "Contact_Email")]
|
|
public string Email { get; set; }
|
|
|
|
/// <summary>
|
|
/// Optinale Telefonnummer (Festnetz)
|
|
/// </summary>
|
|
[MaxLength(100, ErrorMessage = "Err_StringLength_Max")]
|
|
[Display(Name = "Contact_Phone")]
|
|
public string Phone { get; set; }
|
|
|
|
/// <summary>
|
|
/// Optinale Handy-Nummer
|
|
/// </summary>
|
|
[MaxLength(100, ErrorMessage = "Err_StringLength_Max")]
|
|
[Display(Name = "Contact_Mobile")]
|
|
public string Mobile { get; set; }
|
|
|
|
/// <summary>
|
|
/// Optional: Fax
|
|
/// </summary>
|
|
[MaxLength(100, ErrorMessage = "Err_StringLength_Max")]
|
|
[Display(Name = "Contact_Fax")]
|
|
public string Fax { get; set; }
|
|
|
|
/// <summary>
|
|
/// Optional: Web-Adresse
|
|
/// </summary>
|
|
[MaxLength(255, ErrorMessage = "Err_StringLength_Max")]
|
|
[Display(Name = "Contact_Web")]
|
|
public string Web { get; set; }
|
|
}
|
|
|
|
/// <summary>
|
|
/// ViewModel für Kontaktdaten
|
|
/// </summary>
|
|
public class ContactEmailRequiredVm
|
|
{
|
|
/// <summary>
|
|
/// Email-Adresse der Kontaktperson
|
|
/// </summary>
|
|
[Required(ErrorMessage = "Err_Required")]
|
|
[EmailAddress(ErrorMessage = "Err_InvalidEmail")]
|
|
[MaxLength(255, ErrorMessage = "Err_StringLength_Max")]
|
|
[Display(Name = "Contact_Email")]
|
|
public string Email { get; set; }
|
|
|
|
/// <summary>
|
|
/// Optinale Telefonnummer (Festnetz)
|
|
/// </summary>
|
|
[MaxLength(100, ErrorMessage = "Err_StringLength_Max")]
|
|
[Display(Name = "Contact_Phone")]
|
|
public string Phone { get; set; }
|
|
|
|
/// <summary>
|
|
/// Optinale Handy-Nummer
|
|
/// </summary>
|
|
[MaxLength(100, ErrorMessage = "Err_StringLength_Max")]
|
|
[Display(Name = "Contact_Mobile")]
|
|
public string Mobile { get; set; }
|
|
|
|
/// <summary>
|
|
/// Optional: Fax
|
|
/// </summary>
|
|
[MaxLength(100, ErrorMessage = "Err_StringLength_Max")]
|
|
[Display(Name = "Contact_Fax")]
|
|
public string Fax { get; set; }
|
|
|
|
/// <summary>
|
|
/// Optional: Web-Adresse
|
|
/// </summary>
|
|
[MaxLength(255, ErrorMessage = "Err_StringLength_Max")]
|
|
[Display(Name = "Contact_Web")]
|
|
public string Web { get; set; }
|
|
}
|
|
|
|
/// <summary>
|
|
/// ViewModel für Kontaktdaten Minversion
|
|
/// </summary>
|
|
public class ContactMinVm
|
|
{
|
|
/// <summary>
|
|
/// Email-Adresse der Kontaktperson
|
|
/// </summary>
|
|
[Required(ErrorMessage = "Err_Required")]
|
|
[EmailAddress(ErrorMessage = "Err_InvalidEmail")]
|
|
[MaxLength(255, ErrorMessage = "Err_StringLength_Max")]
|
|
[Display(Name = "Contact_Email")]
|
|
public string Email { get; set; }
|
|
|
|
/// <summary>
|
|
/// Optinale Telefonnummer (Festnetz)
|
|
/// </summary>
|
|
[MaxLength(100, ErrorMessage = "Err_StringLength_Max")]
|
|
[Display(Name = "Contact_Phone")]
|
|
public string Phone { get; set; }
|
|
|
|
/// <summary>
|
|
/// Optinale Handy-Nummer
|
|
/// </summary>
|
|
[MaxLength(100, ErrorMessage = "Err_StringLength_Max")]
|
|
[Display(Name = "Contact_Mobile")]
|
|
public string Mobile { get; set; }
|
|
}
|
|
|
|
/// <summary>
|
|
/// Viewmodel für die Übernahme von Identitäten - Admin Modus
|
|
/// Mandant kann zusätzlich gewählt werden
|
|
/// </summary>
|
|
public class ImpersionateAdminVm : ImpersionateVm
|
|
{
|
|
|
|
}
|
|
|
|
/// <summary>
|
|
/// Viewmodel für die Übernahme von Identitäten
|
|
/// </summary>
|
|
public class ImpersionateVm
|
|
{
|
|
/// <summary>
|
|
/// Id des Kunden
|
|
/// </summary>
|
|
[Display(Name = "Common_CustomerId")]
|
|
public long? CustomerId { get; set; }
|
|
|
|
/// <summary>
|
|
/// Name des Kunden
|
|
/// </summary>
|
|
[Display(Name = "Common_CustomerId")]
|
|
public string CustomerName { get; set; }
|
|
|
|
/// <summary>
|
|
/// Id des App-Users
|
|
/// </summary>
|
|
[Display(Name = "Common_AppUserId")]
|
|
public string AppUserId { get; set; }
|
|
|
|
/// <summary>
|
|
/// Name des App-Users
|
|
/// </summary>
|
|
[Display(Name = "Common_AppUserId")]
|
|
public string AppUserName { get; set; }
|
|
}
|
|
|
|
/// <summary>
|
|
/// Viewmodel für das Aktivieren der 2 Faktor Authentifizierung
|
|
/// </summary>
|
|
public class EnableTwoFactorVm
|
|
{
|
|
/// <summary>
|
|
/// 2-Faktor Code
|
|
/// </summary>
|
|
[Required(ErrorMessage = "Err_Required")]
|
|
[Display(Name = "TwoFactor_Code")]
|
|
public string Code { get; set; }
|
|
|
|
/// <summary>
|
|
/// Schlüssel
|
|
/// </summary>
|
|
public string SharedKey { get; set; }
|
|
|
|
/// <summary>
|
|
/// Url für den Authenticator
|
|
/// </summary>
|
|
public string AuthenticatorUri { get; set; }
|
|
}
|
|
|
|
/// <summary>
|
|
/// Viewmodel für das Authentifizieren mit 2 Faktor Code
|
|
/// </summary>
|
|
public class VerifyAuthenticatorCodeViewModel
|
|
{
|
|
/// <summary>
|
|
/// 2-Faktor Code
|
|
/// </summary>
|
|
[Required(ErrorMessage = "Err_Required")]
|
|
[Display(Name = "TwoFactor_Code")]
|
|
public string Code { get; set; }
|
|
}
|
|
|
|
/// <summary>
|
|
/// Model für Views wenn ein Kunde ausgewählt wurde.
|
|
/// Wird verwendet um sowohl die TenantId als auch die CustomerId an einen View zu übergeben
|
|
/// </summary>
|
|
public class CustomerSelectedModel
|
|
{
|
|
/// <summary>
|
|
/// Id Mandanten
|
|
/// </summary>
|
|
public Guid? TenantId { get; set; }
|
|
|
|
/// <summary>
|
|
/// Id des Kunden
|
|
/// </summary>
|
|
public long? CustomerId { get; set; }
|
|
}
|
|
|
|
/// <summary>
|
|
/// Viewmodel für die Verwaltung von SocialMedia Infos
|
|
/// </summary>
|
|
public class SocialMediaVm
|
|
{
|
|
/// <summary>
|
|
/// Link zu Twitter
|
|
/// </summary>
|
|
[MaxLength(255, ErrorMessage = "Err_StringLength_Max")]
|
|
[Display(Name = "SocialMedia_Twitter", Description = "SocialMedia_Url_Desc")]
|
|
public string Twitter { get; set; }
|
|
|
|
/// <summary>
|
|
/// Link zu facebook
|
|
/// </summary>
|
|
[MaxLength(255, ErrorMessage = "Err_StringLength_Max")]
|
|
[Display(Name = "SocialMedia_Facebook", Description = "SocialMedia_Url_Desc")]
|
|
public string Facebook { get; set; }
|
|
|
|
/// <summary>
|
|
/// Link zu LinkedIn
|
|
/// </summary>
|
|
[MaxLength(255, ErrorMessage = "Err_StringLength_Max")]
|
|
[Display(Name = "SocialMedia_LinkedIn", Description = "SocialMedia_Url_Desc")]
|
|
public string LinkedIn { get; set; }
|
|
|
|
/// <summary>
|
|
/// Link zu Xing
|
|
/// </summary>
|
|
[MaxLength(255, ErrorMessage = "Err_StringLength_Max")]
|
|
[Display(Name = "SocialMedia_Xing", Description = "SocialMedia_Url_Desc")]
|
|
public string Xing { get; set; }
|
|
|
|
/// <summary>
|
|
/// Link zu Instagram
|
|
/// </summary>
|
|
[MaxLength(255, ErrorMessage = "Err_StringLength_Max")]
|
|
[Display(Name = "SocialMedia_Instagram", Description = "SocialMedia_Url_Desc")]
|
|
public string Instagram { get; set; }
|
|
|
|
/// <summary>
|
|
/// Link zu Pinterest
|
|
/// </summary>
|
|
[MaxLength(255, ErrorMessage = "Err_StringLength_Max")]
|
|
[Display(Name = "SocialMedia_Pinterest", Description = "SocialMedia_Url_Desc")]
|
|
public string Pinterest { get; set; }
|
|
|
|
/// <summary>
|
|
/// Link zu eigenem Blog
|
|
/// </summary>
|
|
[MaxLength(255, ErrorMessage = "Err_StringLength_Max")]
|
|
[Display(Name = "SocialMedia_Blog", Description = "SocialMedia_Url_Desc")]
|
|
public string Blog { get; set; }
|
|
|
|
/// <summary>
|
|
/// Link zu Youtube
|
|
/// </summary>
|
|
[MaxLength(255, ErrorMessage = "Err_StringLength_Max")]
|
|
[Display(Name = "SocialMedia_YouTube", Description = "SocialMedia_Url_Desc")]
|
|
public string YouTube { get; set; }
|
|
|
|
/// <summary>
|
|
/// Link zu Vimeo
|
|
/// </summary>
|
|
[MaxLength(255, ErrorMessage = "Err_StringLength_Max")]
|
|
[Display(Name = "SocialMedia_Vimeo", Description = "SocialMedia_Url_Desc")]
|
|
public string Vimeo { get; set; }
|
|
|
|
/// <summary>
|
|
/// Link zu Snapchat
|
|
/// </summary>
|
|
[MaxLength(255, ErrorMessage = "Err_StringLength_Max")]
|
|
[Display(Name = "SocialMedia_SnapChat", Description = "SocialMedia_Url_Desc")]
|
|
public string SnapChat { get; set; }
|
|
|
|
/// <summary>
|
|
/// Link zu TikTok
|
|
/// </summary>
|
|
[MaxLength(255, ErrorMessage = "Err_StringLength_Max")]
|
|
[Display(Name = "SocialMedia_TikTok", Description = "SocialMedia_Url_Desc")]
|
|
public string TikTok { get; set; }
|
|
|
|
/// <summary>
|
|
/// Link zu Reddit
|
|
/// </summary>
|
|
[MaxLength(255, ErrorMessage = "Err_StringLength_Max")]
|
|
[Display(Name = "SocialMedia_Reddit")]
|
|
public string Reddit { get; set; }
|
|
|
|
/// <summary>
|
|
/// Gibt an ob Social Media angezeigt werden sollen, wenn vorhanden
|
|
/// </summary>
|
|
[Display(Name = "SocialMedia_Show", Description = "SocialMedia_Show_Desc")]
|
|
public bool Show { get; set; }
|
|
}
|
|
|
|
/// <summary>
|
|
/// Viewmodel für das Anzeigen einer Karte mit voreingestellten Werten
|
|
/// </summary>
|
|
public class MapVm
|
|
{
|
|
/// <summary>
|
|
/// Breitengrad
|
|
/// </summary>
|
|
[Required(ErrorMessage = "Err_Required")]
|
|
[Range(-90.0, 90.0, ErrorMessage = "Err_Range")]
|
|
[Display(Name = "Pin_Lat", Description = "Pin_Lat_Desc")]
|
|
public double Lat { get; set; }
|
|
|
|
/// <summary>
|
|
/// Längengrad
|
|
/// </summary>
|
|
[Required(ErrorMessage = "Err_Required")]
|
|
[Range(-180.0, 180.0, ErrorMessage = "Err_Range")]
|
|
[Display(Name = "Pin_Lng", Description = "Pin_Lng_Desc")]
|
|
public double Lng { get; set; }
|
|
|
|
/// <summary>
|
|
/// Effektiver Radius des Pins
|
|
/// </summary>
|
|
[Required(ErrorMessage = "Err_Required")]
|
|
[Range(0.1, 500.0, ErrorMessage = "Err_Range")]
|
|
[Display(Name = "Pin_Radius", Description = "Pin_Radius_Desc")]
|
|
public double Radius { get; set; }
|
|
|
|
/// <summary>
|
|
/// Soll die Auswahl des Radius gesperrt werden?
|
|
/// </summary>
|
|
[Required(ErrorMessage = "Err_Required")]
|
|
public bool RadiusLocked { get; set; }
|
|
}
|
|
}
|