using System; using System.Collections.Generic; using System.ComponentModel.DataAnnotations; using gehGassi.Web.Helper; namespace gehGassi.Web.Models { /// /// Viewmodel für eine Werbung /// public class AdvertisementVm : SyncEntityVm { /// /// Id des Kunden /// [Required(ErrorMessage = "Err_Required")] [Range(1, long.MaxValue, ErrorMessage = "Err_Required")] [Display(Name = "Advertisement_CustomerId")] public long CustomerId { get; set; } /// /// Id der Rubrik /// [Required(ErrorMessage = "Err_Required")] [MaxLength(128, ErrorMessage = "Err_StringLength_Max")] [Display(Name = "Advertisement_AdvertisementCategoryId", Description = "Advertisement_AdvertisementCategoryId_Desc")] public string AdvertisementCategoryId { get; set; } /// /// Rabatt in Prozent. /// Wenn 0, dann ignorieren /// [Required(ErrorMessage = "Err_Required")] [Range(0.0, 100.0, ErrorMessage = "Err_Range")] [Display(Name = "Advertisement_Discount", Description = "Advertisement_Discount_Desc")] public decimal Discount { get; set; } /// /// Bild für die Werbung /// [Required(ErrorMessage = "Err_Required")] [MaxLength(500, ErrorMessage = "Err_StringLength_Max")] [Display(Name = "Advertisement_Image", Description = "Advertisement_Image_Desc")] public string Image { get; set; } /// /// Bild für die Werbung 8:9 /// [Required(ErrorMessage = "Err_Required")] [MaxLength(500, ErrorMessage = "Err_StringLength_Max")] [Display(Name = "Advertisement_Image2", Description = "Advertisement_Image2_Desc")] public string Image2 { get; set; } /// /// Url für die Werbung /// [Required(ErrorMessage = "Err_Required")] [MaxLength(2083, ErrorMessage = "Err_StringLength_Max")] [Url(ErrorMessage = "Err_InvalidUrl")] [Display(Name = "Advertisement_Url", Description = "Advertisement_Url_Desc")] public string Url { get; set; } /// /// Startdatum der Werbung /// [Required(ErrorMessage = "Err_Required")] [Display(Name = "Advertisement_StartDate", Description = "Advertisement_StartDate_Desc")] public DateTimeOffset? StartDate { get; set; } /// /// Enddatum der Werbung /// [Required(ErrorMessage = "Err_Required")] [Display(Name = "Advertisement_EndDate", Description = "Advertisement_EndDate_Desc")] public DateTimeOffset? EndDate { get; set; } /// /// Status der Werbung /// [Required(ErrorMessage = "Err_Required")] [Display(Name = "Advertisement_Status", Description = "Advertisement_Status_Desc")] public AdvertisementStatusVm 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 #region Geo-Einschränkungen /// /// Art der Geo-Einschränkung /// [Required(ErrorMessage = "Err_Required")] [Display(Name = "Common_GeoMode", Description = "Common_GeoMode_Desc")] public GeoModeVm GeoMode { get; set; } /// /// Die Adresse die verwendet werden soll. /// Je nach Einstellung in GeoMode werden unterschiedliche Teile verwendet. /// None -> Wird ignoriert /// Country -> Das Land der Adresse wird verwendet /// CountryAndState -> Land und Bundeslande wirde verwendet, /// Location --> Lat Lng und Radius in Kombination mit Adresse wird verwendet /// [Display(Name = "Common_GeoMode_Address", Description = "Common_GeoMode_Address_Desc")] public AddressVm Address { get; set; } /// /// Breitengrad /// [Display(Name = "Common_Lat")] [Range(-90.0, 90.0, ErrorMessage = "Err_Range")] public double Lat { get; set; } /// /// Längengrad /// [Display(Name = "Common_Lng")] [Range(-180.0, 180.0, ErrorMessage = "Err_Range")] public double Lng { get; set; } /// /// Radius für eine Geolocation /// [Display(Name = "Common_Radius", Description = "Common_Radius_Desc")] [Range(0.0, 500.0, ErrorMessage = "Err_Range")] public double Radius { 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 einer Werbung /// public class AdvertisementCrudVm : AdvertisementVm { /// /// Name des Kunden /// public string CustomerName { get; set; } /// /// Name der Rubrik /// public string AdvertisementCategoryName { get; set; } /// /// Land-Name /// public string CountryName { get; set; } /// /// Bundesland-Name /// public string StateName { get; set; } } /// /// Hilfsklasse für das Erfassen Mehrsprachiger Texte für Werbungen. /// Wird so gelöst, damit beliebig viele Sprachen verwendet werden können /// public class AdvertisementTextVm { /// /// 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 = "Advertisement_Name", Description = "Advertisement_Name_Desc")] public string Name { get; set; } /// /// Beschreibung /// [MaxLength(500, ErrorMessage = "Err_StringLength_Max")] [Display(Name = "Advertisement_Description", Description = "Advertisement_Description_Desc")] public string Description { get; set; } /// /// Bild für die jeweilige Sprache /// [Display(Name = "Advertisement_ImageLanguage", Description = "Advertisement_ImageLanguage_Desc")] public string ImageLanguage { get; set; } /// /// Bild für die jeweilige Sprache 8:9 /// [Display(Name = "Advertisement_Image2Language", Description = "Advertisement_Image2Language_Desc")] public string Image2Language { get; set; } /// /// Url für die jeweilige Sprache /// [MaxLength(2083, ErrorMessage = "Err_StringLength_Max")] [Url(ErrorMessage = "Err_InvalidUrl")] [Display(Name = "Advertisement_UrlLanguage", Description = "Advertisement_UrlLanguage_Desc")] public string UrlLanguage { get; set; } } /// /// Viewmodel für die Listendarstellung von Werbungen /// public class AdvertisementListVm : SyncEntityLocalizableListVm { /// /// Id des Kunden /// public long CustomerId { get; set; } /// /// Name des Kunden /// public string CustomerName { get; set; } /// /// Id der Rubrik /// public string AdvertisementCategoryId { get; set; } /// /// Name der Rubrik /// public string AdvertisementCategoryName { get; set; } /// /// Name der Werbung /// public string Name { get => Get("Name", GetLanguage()); set => Set("Name", GetLanguage(), value); } /// /// Übersetzungen Name /// public string NameLocalized { get; set; } /// /// Rabatt in Prozent. /// Wenn 0, dann ignorieren /// public decimal Discount { get; set; } /// /// Bild für die Werbung /// public string Image { get; set; } /// /// Bild für die Werbung 8:9 /// public string Image2 { get; set; } /// /// Url für die Werbung /// public string Url { get; set; } /// /// Startdatum der Werbung /// public DateTimeOffset? StartDate { get; set; } /// /// Enddatum der Werbung /// public DateTimeOffset? EndDate { get; set; } /// /// Status der Werbung /// public AdvertisementStatusVm 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 /// /// Art der Geo-Einschränkung /// public GeoModeVm GeoMode { get; set; } /// /// Art der Geo-Einschränkung - Text /// public string GeoModeText { get; set; } /// /// Datum der Erstellung /// public DateTimeOffset Created { get; set; } } }