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