namespace LittleShop.DTOs; /// /// Complete customer data export for GDPR "Right to Data Portability" compliance. /// Contains all personal data stored about a customer. /// public class CustomerDataExportDto { // Customer Profile public Guid CustomerId { get; set; } public long TelegramUserId { get; set; } public string TelegramUsername { get; set; } = string.Empty; public string TelegramDisplayName { get; set; } = string.Empty; public string TelegramFirstName { get; set; } = string.Empty; public string TelegramLastName { get; set; } = string.Empty; public string? Email { get; set; } public string? PhoneNumber { get; set; } // Preferences public bool AllowMarketing { get; set; } public bool AllowOrderUpdates { get; set; } public string Language { get; set; } = string.Empty; public string Timezone { get; set; } = string.Empty; // Metrics public int TotalOrders { get; set; } public decimal TotalSpent { get; set; } public decimal AverageOrderValue { get; set; } public DateTime? FirstOrderDate { get; set; } public DateTime? LastOrderDate { get; set; } // Account Status public bool IsBlocked { get; set; } public string? BlockReason { get; set; } public int RiskScore { get; set; } public string? CustomerNotes { get; set; } // Timestamps public DateTime CreatedAt { get; set; } public DateTime UpdatedAt { get; set; } public DateTime LastActiveAt { get; set; } public DateTime? DataRetentionDate { get; set; } // Related Data public List Orders { get; set; } = new(); public List Messages { get; set; } = new(); public List Reviews { get; set; } = new(); } /// /// Order data included in customer export /// public class CustomerOrderExportDto { public Guid OrderId { get; set; } public string Status { get; set; } = string.Empty; public decimal TotalAmount { get; set; } public string Currency { get; set; } = string.Empty; public DateTime OrderDate { get; set; } // Shipping Information public string ShippingName { get; set; } = string.Empty; public string ShippingAddress { get; set; } = string.Empty; public string ShippingCity { get; set; } = string.Empty; public string ShippingPostCode { get; set; } = string.Empty; public string ShippingCountry { get; set; } = string.Empty; // Tracking public string? TrackingNumber { get; set; } public DateTime? EstimatedDeliveryDate { get; set; } public DateTime? ActualDeliveryDate { get; set; } public string? Notes { get; set; } // Order Items public List Items { get; set; } = new(); } /// /// Order item data included in customer export /// public class CustomerOrderItemExportDto { public string ProductName { get; set; } = string.Empty; public string? VariantName { get; set; } public int Quantity { get; set; } public decimal UnitPrice { get; set; } public decimal TotalPrice { get; set; } } /// /// Message data included in customer export /// public class CustomerMessageExportDto { public DateTime SentAt { get; set; } public string MessageType { get; set; } = string.Empty; public string Content { get; set; } = string.Empty; public bool WasRead { get; set; } public DateTime? ReadAt { get; set; } } /// /// Review data included in customer export /// public class CustomerReviewExportDto { public Guid ProductId { get; set; } public string ProductName { get; set; } = string.Empty; public int Rating { get; set; } public string? Comment { get; set; } public DateTime CreatedAt { get; set; } public bool IsApproved { get; set; } public bool IsVerifiedPurchase { get; set; } }