using System; using System.Collections.Generic; using System.ComponentModel.DataAnnotations; using gehGassi.Web.Helper; namespace gehGassi.Web.Models { /// /// Viewmodel für einen Banner /// public class BannerVm : SyncEntityVm { /// /// Id des Kunden /// [Required(ErrorMessage = "Err_Required")] [Range(1, long.MaxValue, ErrorMessage = "Err_Required")] [Display(Name = "Banner_CustomerId")] public long CustomerId { get; set; } /// /// Bannerplatzierung /// [Required(ErrorMessage = "Err_Required")] //[Range(1,int.MaxValue, ErrorMessage = "Err_Required")] [Display(Name = "Banner_BannerLocation", Description = "Banner_BannerLocation_Desc")] public BannerLocationVm BannerLocation { get; set; } /// /// Banner Größe /// [Required(ErrorMessage = "Err_Required")] [Display(Name = "Banner_BannerSize", Description = "Banner_BannerSize_Desc")] public BannerSizeVm BannerSize { get; set; } /// /// Aktuelle Anzahl der Views /// [Required(ErrorMessage = "Err_Required")] [Display(Name = "Banner_CurrentViews")] public int CurrentViews { get; set; } /// /// Akteulle Anzahl der Klicks /// [Required(ErrorMessage = "Err_Required")] [Display(Name = "Banner_CurrentClicks")] public int CurrentClicks { get; set; } /// /// Aktuell verbrauchtes Budget /// [Required(ErrorMessage = "Err_Required")] [Display(Name = "Banner_BudgetUsed")] public decimal BudgetUsed { get; set; } /// /// Gesamt verfügbares Budget /// [Required(ErrorMessage = "Err_Required")] [Display(Name = "Banner_Budget", Description = "Banner_Budget_Desc")] public decimal Budget { get; set; } /// /// Preis für einen View /// [Required(ErrorMessage = "Err_Required")] [Display(Name = "Banner_PriceView", Description = "Banner_PriceView_Desc")] public decimal PriceView { get; set; } /// /// Preis für einen Klick /// [Required(ErrorMessage = "Err_Required")] [Display(Name = "Banner_PriceClick", Description = "Banner_PriceClick_Desc")] public decimal PriceClick { get; set; } /// /// Bild für den Banner /// [Required(ErrorMessage = "Err_Required")] [MaxLength(500, ErrorMessage = "Err_StringLength_Max")] [Display(Name = "Banner_Image", Description = "Banner_Image_Desc")] public string Image { get; set; } /// /// Url für den Banner /// [Required(ErrorMessage = "Err_Required")] [MaxLength(2083, ErrorMessage = "Err_StringLength_Max")] [Url(ErrorMessage = "Err_InvalidUrl")] [Display(Name = "Banner_Url", Description = "Banner_Url_Desc")] public string Url { get; set; } /// /// Startdatum des Banners /// [Required(ErrorMessage = "Err_Required")] [Display(Name = "Banner_StartDate", Description = "Banner_StartDate_Desc")] public DateTimeOffset? StartDate { get; set; } /// /// Enddatum des Banners /// [Display(Name = "Banner_EndDate")] public DateTimeOffset? EndDate { get; set; } /// /// Status des Banners /// [Required(ErrorMessage = "Err_Required")] [Display(Name = "Banner_Status", Description = "Banner_Status_Desc")] public BannerStatusVm 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; } } /// /// Hilfsklasse für das Erfassen Mehrsprachiger Texte für Werbungen. /// Wird so gelöst, damit beliebig viele Sprachen verwendet werden können /// public class BannerTextVm { /// /// 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 = "Banner_Name", Description = "Banner_Name_Desc")] public string Name { get; set; } /// /// Bild für die jeweilige Sprache /// [Display(Name = "Banner_ImageLanguage", Description = "Banner_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 = "Banner_UrlLanguage", Description = "Banner_UrlLanguage_Desc")] public string UrlLanguage { get; set; } } /// /// Viewmodel für das Anlegen und Bearbeiten eines Banners /// public class BannerCrudVm : BannerVm { /// /// Name des Kunden /// public string CustomerName { get; set; } /// /// Land-Name /// public string CountryName { get; set; } /// /// Bundesland-Name /// public string StateName { get; set; } } /// /// Viewmodel für die Listendarstellung von Bannern /// public class BannerListVm : SyncEntityLocalizableListVm { /// /// Id des Kunden /// public long CustomerId { get; set; } /// /// Name des Kunden /// public string CustomerName { get; set; } /// /// Bannerplatzierung /// public BannerLocationVm BannerLocation { get; set; } /// /// Text der Banner-Platzierung /// public string BannerLocationText { get; set; } /// /// Banner Größe /// public BannerSizeVm BannerSize { get; set; } /// /// Text der Banner Größe /// public string BannerSizeText { get; set; } /// /// Aktuelle Anzahl der Views /// public int CurrentViews { get; set; } /// /// Akteulle Anzahl der Klicks /// public int CurrentClicks { get; set; } /// /// Aktuell verbrauchtes Budget - netto /// public decimal BudgetUsed { get; set; } /// /// Gesamt verfügbares Budget - netto /// public decimal Budget { get; set; } /// /// Preis für einen View /// public decimal PriceView { get; set; } /// /// Preis für einen Klick /// public decimal PriceClick { get; set; } /// /// Name des Banners /// public string Name { get => Get("Name", GetLanguage()); set => Set("Name", GetLanguage(), value); } /// /// Übersetzungen Name /// public string NameLocalized { get; set; } /// /// Bild für den Banner /// public string Image { get; set; } /// /// Url des Banners /// public string Url { get; set; } /// /// Startdatum des Banners /// public DateTimeOffset? StartDate { get; set; } /// /// Enddatum des Banners /// public DateTimeOffset? EndDate { get; set; } /// /// Status des Banners /// public BannerStatusVm Status { get; set; } /// /// Status des Banners - 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; } } }