from django.db import models class Category(models.Model): name = models.CharField(max_length=100, unique=True) def __str__(self): return self.name class Item(models.Model): category = models.ForeignKey(Category, on_delete=models.CASCADE, related_name="items") name = models.CharField(max_length=200) price = models.DecimalField(max_digits=10, decimal_places=2) # Precio en euros item_id = models.IntegerField(unique=True) # ID del ítem en el juego image_url = models.URLField() # URL de la imagen del ítem def __str__(self): return self.name class StripeLog(models.Model): account_id = models.IntegerField() # ID de la cuenta en acore_auth username = models.CharField(max_length=100) # Nombre de la cuenta email = models.EmailField() # Correo electrónico acore_ip = models.GenericIPAddressField() # IP de acore_auth stripe_ip = models.GenericIPAddressField(blank=True, null=True) # IP detectada por Stripe product_name = models.TextField() # Producto comprado amount = models.DecimalField(max_digits=10, decimal_places=2) # Precio total session_id = models.CharField(max_length=255) # ID de la sesión de Stripe mode = models.CharField(max_length=10, choices=[("test", "Test"), ("live", "Live")]) # Modo de Stripe character_name = models.CharField(max_length=100) # Nombre del personaje que compró timestamp = models.DateTimeField(auto_now_add=True) # Fecha y hora fulfilled = models.BooleanField(default=False) # Si la entrega ya se procesó (evita re-entregas) def __str__(self): return f"{self.username} compró {self.product_name} por {self.amount}€ ({self.mode})" class Pedido(models.Model): transaction_id = models.CharField(max_length=100, unique=True, null=True, blank=True) email_cliente = models.EmailField() estado = models.CharField(max_length=20, default="Pendiente") monto = models.DecimalField(max_digits=10, decimal_places=2) def __str__(self): return f"Pedido {self.transaction_id} - {self.estado}"