159 lines
4.1 KiB
C#
159 lines
4.1 KiB
C#
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
|
|
{
|
|
/// <summary>
|
|
/// Repräsentiert eine Werbung
|
|
/// </summary>
|
|
public class Advertisement : SyncEntity
|
|
{
|
|
/// <summary>
|
|
/// Id des Kunden
|
|
/// </summary>
|
|
public long CustomerId { get; set; }
|
|
|
|
/// <summary>
|
|
/// Name des kunden
|
|
/// </summary>
|
|
public string CustomerName { get; set; }
|
|
|
|
/// <summary>
|
|
/// Id der Rubrik
|
|
/// </summary>
|
|
public string AdvertisementCategoryId { get; set; }
|
|
|
|
/// <summary>
|
|
/// Name der Rubrik
|
|
/// </summary>
|
|
public string AdvertisementCategoryName { get; set; }
|
|
|
|
/// <summary>
|
|
/// Startdatum der Listung
|
|
/// </summary>
|
|
public DateTimeOffset? StartDate { get; set; }
|
|
|
|
/// <summary>
|
|
/// Enddatum der Listung
|
|
/// </summary>
|
|
public DateTimeOffset? EndDate { get; set; }
|
|
|
|
/// <summary>
|
|
/// Rabatt in Prozent.
|
|
/// Wenn 0, dann ignorieren
|
|
/// </summary>
|
|
public decimal Discount { get; set; }
|
|
|
|
/// <summary>
|
|
/// Bild für die Werbung - Allgemein
|
|
/// </summary>
|
|
public string Image { get; set; }
|
|
|
|
/// <summary>
|
|
/// Bild für die Werbung - Allgemein 8:9
|
|
/// </summary>
|
|
public string Image2 { get; set; }
|
|
|
|
/// <summary>
|
|
/// Link für die Werbung - allgemein wenn nicht überschrieben
|
|
/// </summary>
|
|
public string Url { get; set; }
|
|
|
|
/// <summary>
|
|
/// Name der Werbung
|
|
/// </summary>
|
|
public string Name { get; set; }
|
|
|
|
/// <summary>
|
|
/// Beschreibung der Werbung
|
|
/// </summary>
|
|
public string Description { get; set; }
|
|
|
|
/// <summary>
|
|
/// Bild der Werbung für eine Sprache
|
|
/// </summary>
|
|
public string ImageLanguage { get; set; }
|
|
|
|
/// <summary>
|
|
/// Bild der Werbung für eine Sprache 8:9
|
|
/// </summary>
|
|
public string Image2Language { get; set; }
|
|
|
|
/// <summary>
|
|
/// Link für die Werbung für eine Sprache
|
|
/// </summary>
|
|
public string UrlLanguage { get; set; }
|
|
|
|
/// <summary>
|
|
/// Ist diese Werbung ein Favorit des Benutzers?
|
|
/// </summary>
|
|
[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;
|
|
}
|
|
}
|
|
|
|
}
|
|
}
|