using System; using System.Collections.Generic; using System.ComponentModel.DataAnnotations.Schema; using System.Linq; using System.Text; using System.Threading.Tasks; using CommunityToolkit.Mvvm.ComponentModel; using gehGassiApp.Domain.Base; namespace gehGassiApp.Domain.Advertisements { /// /// Repräsentiert eine Werbung /// public class Advertisement : SyncEntity { /// /// 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; } /// /// Startdatum der Listung /// public DateTimeOffset? StartDate { get; set; } /// /// Enddatum der Listung /// public DateTimeOffset? EndDate { get; set; } /// /// Rabatt in Prozent. /// Wenn 0, dann ignorieren /// public decimal Discount { get; set; } /// /// Bild für die Werbung - Allgemein /// public string Image { get; set; } /// /// Bild für die Werbung - Allgemein 8:9 /// public string Image2 { get; set; } /// /// Link für die Werbung - allgemein wenn nicht überschrieben /// public string Url { get; set; } /// /// Name der Werbung /// public string Name { get; set; } /// /// Beschreibung der Werbung /// public string Description { get; set; } /// /// Bild der Werbung für eine Sprache /// public string ImageLanguage { get; set; } /// /// Bild der Werbung für eine Sprache 8:9 /// public string Image2Language { get; set; } /// /// Link für die Werbung für eine Sprache /// public string UrlLanguage { get; set; } /// /// Ist diese Werbung ein Favorit des Benutzers? /// [NotMapped] public bool IsFavourite { get => _isFavourite; set { _isFavourite = value; OnPropertyChanged(); } } private long _leftTicks; [NotMapped] public long LeftTicks { get => _leftTicks; set => SetProperty(ref _leftTicks, value); } private string _timeLeft; private bool _isFavourite; [NotMapped] public string TimeLeft { get => _timeLeft; set => SetProperty(ref _timeLeft, value); } public void SetTimeLeft() { var timeSpan = EndDate.Value - DateTimeOffset.UtcNow; LeftTicks = timeSpan.Ticks; timeSpan = new TimeSpan(timeSpan.Days, timeSpan.Hours, timeSpan.Minutes, timeSpan.Seconds); var days = timeSpan.Days; var hours = timeSpan.Hours; var minutes = timeSpan.Minutes; var seconds = timeSpan.Seconds; if (days > 0) { TimeLeft = $"{days}T {hours:00}h {minutes:00}m"; } else if (hours > 0) { TimeLeft = $"{hours:00}h {minutes:00}m {seconds:00}s"; } else if (minutes > 0) { TimeLeft = $"{minutes:00}m {seconds:00}s"; } else if (seconds > 0) { TimeLeft = $"{seconds:00}s"; } else { TimeLeft = string.Empty; } } } }