using System; using System.Collections.Generic; using System.ComponentModel.DataAnnotations; using gehGassi.Web.Helper; namespace gehGassi.Web.Models { /// /// Viewmodel für einen Pin /// public class PinVm : SyncEntityVm { /// /// Id des Kunden /// [Required(ErrorMessage = "Err_Required")] [Range(1, long.MaxValue, ErrorMessage = "Err_Required")] [Display(Name = "Pin_CustomerId")] public long CustomerId { get; set; } /// /// Id der Listung - optional /// [MaxLength(128, ErrorMessage = "Err_StringLength_Max")] [Display(Name = "Pin_ListingId", Description = "Pin_ListingId_Desc")] public string ListingId { get; set; } /// /// Bild für den Pin /// //[Required(ErrorMessage = "Err_Required")] [MaxLength(500, ErrorMessage = "Err_StringLength_Max")] [Display(Name = "Pin_Image", Description = "Pin_Image_Desc")] public string Image { get; set; } /// /// Url für den Pin /// //[Required(ErrorMessage = "Err_Required")] [MaxLength(2083, ErrorMessage = "Err_StringLength_Max")] [Url(ErrorMessage = "Err_InvalidUrl")] [Display(Name = "Pin_Url", Description = "Pin_Url_Desc")] public string Url { get; set; } /// /// Breitengrad /// [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; } /// /// Längengrad /// [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; } /// /// Effektiver Radius des Pins /// [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; } /// /// Startdatum des Pins /// [Required(ErrorMessage = "Err_Required")] [Display(Name = "Pin_StartDate", Description = "Pin_StartDate_Desc")] public DateTimeOffset? StartDate { get; set; } /// /// Enddatum des Pins /// [Required(ErrorMessage = "Err_Required")] [Display(Name = "Pin_EndDate", Description = "Pin_EndDate_Desc")] public DateTimeOffset? EndDate { get; set; } /// /// Status des Pins /// [Required(ErrorMessage = "Err_Required")] [Display(Name = "Pin_Status", Description = "Pin_Status_Desc")] public PinStatusVm Status { get; set; } #region Payment /// /// Id der Bestellung /// [Display(Name = "Common_OrderId")] public long? OrderId { get; set; } /// /// Id des Artikels in der Bestellung /// [Display(Name = "Common_OrderItemId")] public long? OrderItemId { get; set; } /// /// Zahlungsart der Bestellung /// [Required(ErrorMessage = "Err_Required")] [Display(Name = "Common_PaymentType")] public PaymentTypeVm PaymentType { get; set; } /// /// Zahlungsstatus der Bestellung /// [Required(ErrorMessage = "Err_Required")] [Display(Name = "Common_PaymentStatus")] public PaymentStatusVm PaymentStatus { get; set; } /// /// Zahlungsdatum /// [Display(Name = "Common_PayedDate")] public DateTimeOffset? PayedDate { get; set; } #endregion /// /// Datum der Erstellung /// [Display(Name = "Common_Created")] public DateTimeOffset Created { get; set; } /// /// Texte mehrsprachig /// public List TextVms { get; set; } } /// /// Viewmodel für das Anlegen und Bearbeiten eines Pins /// public class PinCrudVm : PinVm { /// /// Name des Kunden /// public string CustomerName { get; set; } } /// /// Hilfsklasse für das Erfassen Mehrsprachiger Texte für Pins. /// Wird so gelöst, damit beliebig viele Sprachen verwendet werden können /// public class PinTextVm { /// /// Id /// [Required(ErrorMessage = "Err_Required")] public string Id { get; set; } /// /// Srache /// [Required(ErrorMessage = "Err_Required")] public string Language { get; set; } /// /// Name /// //[Required(ErrorMessage = "Err_Required")] [RequiredIfDefaultLanguage("Language", ErrorMessage = "Err_Required")] [MaxLength(100, ErrorMessage = "Err_StringLength_Max")] [Display(Name = "Pin_Name", Description = "Pin_Name_Desc")] public string Name { get; set; } /// /// Beschreibung /// [Display(Name = "Pin_Description", Description = "Pin_Description_Desc")] public string Description { get; set; } /// /// Bild für die jeweilige Sprache /// [Display(Name = "Pin_ImageLanguage", Description = "Pin_ImageLanguage_Desc")] public string ImageLanguage { get; set; } /// /// Url für die jeweilige Sprache /// [MaxLength(2083, ErrorMessage = "Err_StringLength_Max")] [Url(ErrorMessage = "Err_InvalidUrl")] [Display(Name = "Pin_UrlLanguage", Description = "Pin_UrlLanguage_Desc")] public string UrlLanguage { get; set; } } /// /// Viewmodel für die Listendarstellung von Pins /// public class PinListVm : SyncEntityLocalizableListVm { /// /// Id des Kunden /// public long CustomerId { get; set; } /// /// Name des Kunden /// public string CustomerName { get; set; } /// /// Id der Listung - optional /// public string ListingId { get; set; } /// /// Name des Pins /// public string Name { get => Get("Name", GetLanguage()); set => Set("Name", GetLanguage(), value); } /// /// Übersetzungen Name /// public string NameLocalized { get; set; } /// /// Bild für den Pin /// public string Image { get; set; } /// /// Url für den Pin /// public string Url { get; set; } /// /// Breitengrad /// public double Lat { get; set; } /// /// Längengrad /// public double Lng { get; set; } /// /// Effektiver Radius des Pins /// public double Radius { get; set; } /// /// Startdatum des Pins /// public DateTimeOffset? StartDate { get; set; } /// /// Enddatum des Pins /// public DateTimeOffset? EndDate { get; set; } /// /// Status des Pins /// public PinStatusVm Status { get; set; } /// /// Status der Listung - Text /// public string StatusText { get; set; } #region Payment /// /// Id der Bestellung /// public long? OrderId { get; set; } /// /// Id des Artikels in der Bestellung /// public long? OrderItemId { get; set; } /// /// Zahlungsart der Bestellung /// public PaymentTypeVm PaymentType { get; set; } /// /// Zahlungsart der Bestellung - Text /// public string PaymentTypeText { get; set; } /// /// Zahlungsstatus der Bestellung /// public PaymentStatusVm PaymentStatus { get; set; } /// /// Zahlungsstatus der Bestellung - Text /// public string PaymentStatusText { get; set; } /// /// Zahlungsdatum /// public DateTimeOffset? PayedDate { get; set; } #endregion /// /// Datum der Erstellung /// public DateTimeOffset Created { get; set; } } }