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;
}
}
}
}