using System; using System.Collections.Generic; namespace LittleShop.DTOs; public class BotSessionDto { public Guid Id { get; set; } public Guid BotId { get; set; } public string SessionIdentifier { get; set; } = string.Empty; public string Platform { get; set; } = string.Empty; public DateTime StartedAt { get; set; } public DateTime LastActivityAt { get; set; } public DateTime? EndedAt { get; set; } public int OrderCount { get; set; } public int MessageCount { get; set; } public decimal TotalSpent { get; set; } public string Language { get; set; } = string.Empty; public string Country { get; set; } = string.Empty; public bool IsAnonymous { get; set; } public Dictionary Metadata { get; set; } = new(); } public class CreateBotSessionDto { public string SessionIdentifier { get; set; } = string.Empty; public string Platform { get; set; } = string.Empty; public string Language { get; set; } = "en"; public string Country { get; set; } = string.Empty; public bool IsAnonymous { get; set; } = true; public Dictionary Metadata { get; set; } = new(); } public class UpdateBotSessionDto { public int? OrderCount { get; set; } public int? MessageCount { get; set; } public decimal? TotalSpent { get; set; } public bool? EndSession { get; set; } public Dictionary? Metadata { get; set; } } public class BotSessionSummaryDto { public int TotalSessions { get; set; } public int ActiveSessions { get; set; } public int CompletedSessions { get; set; } public decimal AverageSessionDuration { get; set; } // in minutes public decimal AverageOrdersPerSession { get; set; } public decimal AverageSpendPerSession { get; set; } public Dictionary SessionsByPlatform { get; set; } = new(); public Dictionary SessionsByCountry { get; set; } = new(); public Dictionary SessionsByLanguage { get; set; } = new(); }