Files
ShopSolution-backend/Webshop.Application/DTOs/Admin/AnalyticsDto.cs
2025-09-08 11:35:26 +02:00

114 lines
3.7 KiB
C#

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