// src/Webshop.Application/DTOs/Admin/AnalyticsDto.cs
using System.Collections.Generic;
namespace Webshop.Application.DTOs.Admin
{
///
/// Fasst alle relevanten Analysedaten und KPIs für den Admin-Bereich zusammen.
///
public class AnalyticsDto
{
///
/// Die wichtigsten Kennzahlen (Key Performance Indicators).
///
public KpiSummaryDto KpiSummary { get; set; } = new KpiSummaryDto();
///
/// Eine Liste von Datenpunkten für Umsatz-Charts (z.B. Umsatz pro Tag).
///
public List SalesOverTime { get; set; } = new List();
///
/// Die Top 10 der meistverkauften Produkte im ausgewählten Zeitraum.
///
public List TopPerformingProducts { get; set; } = new List();
///
/// Informationen zum aktuellen Lagerbestand.
///
public InventoryStatusDto InventoryStatus { get; set; } = new InventoryStatusDto();
}
///
/// Die wichtigsten Kennzahlen (Key Performance Indicators).
///
public class KpiSummaryDto
{
///
/// Der Gesamtumsatz (netto) im ausgewählten Zeitraum.
///
public decimal TotalRevenue { get; set; }
///
/// Die Gesamtzahl der Bestellungen im ausgewählten Zeitraum.
///
public int TotalOrders { get; set; }
///
/// Die Gesamtzahl aller registrierten Kunden.
///
public int TotalCustomers { get; set; }
///
/// Die Anzahl der Neukunden, die sich im ausgewählten Zeitraum registriert haben.
///
public int NewCustomersThisPeriod { get; set; }
///
/// Der durchschnittliche Wert einer Bestellung im ausgewählten Zeitraum.
///
public decimal AverageOrderValue { get; set; }
}
///
/// Ein Datenpunkt für Umsatz-Charts (z.B. Umsatz pro Tag).
///
public class SalesDataPointDto
{
///
/// Das Datum des Datenpunkts im Format 'yyyy-MM-dd'.
///
public string Date { get; set; } = string.Empty;
///
/// Der an diesem Tag generierte Umsatz.
///
public decimal Revenue { get; set; }
}
///
/// Repräsentiert ein gut verkauftes Produkt.
///
public class TopProductDto
{
public Guid ProductId { get; set; }
public string Name { get; set; } = string.Empty;
public string Sku { get; set; } = string.Empty;
///
/// Die Gesamtzahl der verkauften Einheiten im ausgewählten Zeitraum.
///
public int UnitsSold { get; set; }
///
/// Der Gesamtumsatz, der mit diesem Produkt im ausgewählten Zeitraum erzielt wurde.
///
public decimal TotalRevenue { get; set; }
}
///
/// Informationen zum Lagerbestand.
///
public class InventoryStatusDto
{
///
/// Die Anzahl der Produkte, deren Lagerbestand unter dem in den Einstellungen definierten Schwellenwert liegt.
///
public int ProductsWithLowStock { get; set; }
///
/// Der prozentuale Anteil der Produkte, die auf Lager sind (Menge > 0).
///
public double OverallStockAvailabilityPercentage { get; set; }
}
}